目 录CONTENT

文章目录

Linux 将 /home 目录与 / 根目录磁盘合并

Eric
2023-12-01 / 0 评论 / 0 点赞 / 25 阅读 / 1,681 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-12-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Linux 将 /home 目录与 / 根目录磁盘合并

1. Linux 下的 /home 目录与 / 目录

一般情况下进入 Linux 系统下的 / 目录,会看到如下目录列表。

image-20231201081808277

可以看到其中包含 home 目录,home 目录下将会为每个用户创建一个属于自己的用户目录,也称为用户自己的 “家目录”。更多根目录的信息可查看笔者的这篇博客 《Linux文件系统目录结构详解》

  1. 系统分区情况
    在安装 Linux 操作系统过程中,常常可能会将 /home 目录与 / 目录挂载到不同的磁盘或不同的分区中,就会造成两者空间并不能公用,即当 /home 目录存满时,根目录富于的磁盘空间不能给 /home 使用;同样的,当 /home 目录分配的磁盘较大时,而根目录则常常会因为安装太多软件导致磁盘占满,而这时看着使用率只有 20%~50% 的 /home 目录则分外眼红。
    image-20231201081927278

为了解决这样的尴尬情况,那么就将 /home 目录和 / 根目录的空间合并起来就皆大欢喜啦。

3. 合并 /home 和 / 目录

  • (1) 查看当前磁盘分配情况

    [root@node1 /]# df -hT
    
    [root@node1 /]# df -hT
    文件系统                类型      容量  已用  可用 已用% 挂载点
    devtmpfs                devtmpfs  7.8G     0  7.8G    0% /dev
    tmpfs                   tmpfs     7.8G     0  7.8G    0% /dev/shm
    tmpfs                   tmpfs     7.8G  8.9M  7.8G    1% /run
    tmpfs                   tmpfs     7.8G     0  7.8G    0% /sys/fs/cgroup
    /dev/mapper/centos-root xfs        50G  1.9G   49G    4% /
    /dev/sda1               xfs      1014M  151M  864M   15% /boot
    /dev/mapper/centos-home xfs       192G   33M  191G    1% /home
    tmpfs                   tmpfs     1.6G     0  1.6G    0% /run/user/0
    
    

    这里需要注意的是,/home 目录的总空间大小,笔者这里的是 192 G

    • (2) 将当前 /home 目录备份,并删除 /home 分区
      进入 / 目录
[root@node1 /]# cd /

/home 目录备份

tar -zcvf home.tar.gz home/

若提示 umount: /home: target is busy.,则说明有其他进程正在使用,确定主要程序已关闭的情况下还提示该信息,则执行下面步骤:

fuser -m /dev/mapper/centos-home

该命令会打印出正在使用该磁盘的进程 ID,如下

/dev/dm-2:            2876m  2889c  2892c  2944c  2949cm  2983c  2988c  3042cm  3047c  3050c  3140cm  3226c  3230cm  3231cm  3233c  3235c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3317cm  3319c  3320c  3321c  3322cm  3329cm  3333cm  3335cm  3337c  3343cm  3346cm  3348cm  3349c  3352cm  3354cm  3359cm  3362cm  3365cm  3410cm  3418cm  3422cm  3423cm  3426c  3435cm  3476cm  3495c  3501c  3514cm  3531cm  3590c  4003cm  4041c  4051cm  4065c

然后从前往后逐个 kill 掉该进程 :

[root@localhost /]# kill -9 2876
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2889c  2892c  2944c  2949cm  2983c  2988c  3042cm  3047c  3050c  3140cm  3226c  3230cm  3231cm  3233c  3235c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3317cm  3319c  3320c  3321c  3322cm  3329cm  3333cm  3335cm  3337c  3343cm  3346cm  3348cm  3349c  3352cm  3354cm  3359cm  3362cm  3365cm  3410cm  3418cm  3422cm  3423cm  3426c  3435cm  3476cm  3495c  3501c  3514cm  3531cm  3590c  4003cm  4041c  4051cm  4065c  7826m

[root@localhost /]# kill -9 2889

[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2892c  2944c  2983c  2988c  3042cm  3047c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3418cm  3435cm  3476cm  3501c  3514cm  3531cm  4041c  4051cm  4065c

[root@localhost /]# kill -9 2889
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2892c  2944c  2983c  2988c  3042cm  3047c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3418cm  3435cm  3476cm  3501c  3514cm  3531cm  4041c  4051cm  4065c
[root@localhost /]# kill -9 2892
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2944c  2983c  2988c  3042cm  3047c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3418cm  3435cm  3476cm  3501c  3514cm  3531cm  4041c  4051cm  4065c
[root@localhost /]# kill -9 2944
[root@localhost /]# fuser -m /dev/mapper/cl-home

基本上 kill 掉前几个(35 个)基本其它的也就都相继消失了。
然后再执行 umount home,就可以成功卸载 /home 目录的挂载了。

[root@node1 /]#  umount /home

再将 /home 目录的磁盘分区移除:

[root@node1 /]# lvremove /dev/mapper/centos-home
Do you really want to remove active logical volume centos/home? [y/n]: y
  Logical volume "home" successfully removed
[root@node1 /]# 

  • (3) 扩展 / 根目录
    使用 lvextend 命令将 / 目录所在的物理分区扩容:

    [root@node1 /]#  lvdisplay
      --- Logical volume ---
      LV Path                /dev/centos/swap
      LV Name                swap
      VG Name                centos
      LV UUID                jguf0B-wo7M-pn2z-JvGH-btEJ-0xfb-1zSyyq
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-12-01 07:36:49 +0800
      LV Status              available
      # open                 0
      LV Size                <7.88 GiB
      Current LE             2016
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:1
       
      --- Logical volume ---
      LV Path                /dev/centos/root
      LV Name                root
      VG Name                centos
      LV UUID                pxrVIQ-af64-oRyY-KBi7-POdC-81oY-nQd9Zb
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-12-01 07:36:51 +0800
      LV Status              available
      # open                 1
      LV Size                50.00 GiB
      Current LE             12800
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
    
    
    [root@node1 /]# lvextend -L +191G /dev/mapper/centos-root
      Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 241.00 GiB (61696 extents).
      Logical volume centos/root successfully resized.
    [root@node1 /]# 
    
    

[注]:这里的增加的容量应该不能超过之前 /home 挂载点的大小,一般选择全部分配过去。执行xfs_growfs命令扩展xfs

xfs_growfs /dev/mapper/centos-root

4. 恢复 /home 目录原有内容

将之前打包备份的 /home 目录重新解压出来

[root@node1 /]# tar -zxvf home.tar.gz
home/
[root@node1 /]# ls
bin  boot  data  dev  etc  home  home.tar.gz  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@node1 /]# rm -rf home.tar.gz 

这时候查看 home 目录已经恢复到原来的样子了


  1. 删除 /etc/fstab 中 /home 的启动挂载点
    打开并修改 /etc/fstab 文件,将开机自动挂载的 /home 节点删除,注意这一步很关键,如若未删除,则会导致开机自动进入救援模式(emergency mode),不过也不是没有办法,在救援模式中,输入 root 密码,进入救援模式,再修改 /etc/fstab 文件保存退出也可以,但何必留此后患,自找麻烦呢。
[root@node1 /]# vi /etc/fstab 

home 挂载点注释或删除,保存并退出即可。

#
# /etc/fstab
# Created by anaconda on Fri Dec  1 07:36:52 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=5c0f4290-c3cb-45ba-9e1f-bde685789eea /boot                   xfs     defaults        0 0
#/dev/mapper/centos-home /home                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

6. 查看新的磁盘分配情况

再次查看磁盘分配和使用情况,就已经发现,没有了 /home 目录的占用,而在 / 目录下增加了 /home 原有的磁盘空间。

[root@node1 /]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  7.8G     0  7.8G    0% /dev
tmpfs                   tmpfs     7.8G     0  7.8G    0% /dev/shm
tmpfs                   tmpfs     7.8G  8.8M  7.8G    1% /run
tmpfs                   tmpfs     7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       241G  1.9G  240G    1% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     1.6G     0  1.6G    0% /run/user/0
[root@node1 /]# 

image-20231201083644661

0

评论区