在 Linux 系统中,这里举例对 /home 目录进行备份、重建和恢复操作,并调整分区大小、更换文件系统或修复损坏的分区等。

〇、前提条件

  • 确认文件系统类型为 xfs

  • 确认 /home 目录确实没有重要数据,或者已经做好了数据备份。

  • 确保在执行这些操作之前,系统处于稳定状态,并且最好是在非生产环境或维护窗口内进行。

  • 修改前,可查看 /home 为 241G

# df -lh
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  9.5M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  7.1G   43G   15% /
/dev/mapper/centos-home  241G   38M  241G    1% /home
/dev/sda1               1014M  234M  781M   23% /boot
tmpfs                    1.6G  8.0K  1.6G    1% /run/user/42
tmpfs                    1.6G     0  1.6G    0% /run/user/0

一、检查文件系统类型

  1. 确认 /home 使用的文件系统类型确实是 xfs
    • 命令:lsblk -f | grep centos-home
    • 解释:这条命令会列出所有块设备及其文件系统类型,通过 grep 过滤出 centos-home 相关的信息。
# lsblk -f | grep centos-home
  └─centos-home xfs               edfa708e-d1e3-4bb2-8022-d810edda31a0   /home

二、备份 /home 目录

  1. 使用 tar 命令备份
    • 命令:tar cvpf /tmp/home_backup.tar /home
    • 解释:将 /home 目录的内容压缩并打包成一个名为 home_backup.tar 的文件,存放在 /tmp 目录中。
    • 注意事项:使用 -p 选项保留文件权限。
# tar -cvpf /tmp/home_backup.tar /home
tar: 从成员名中删除开头的“/”
/home/
/home/user01/桌面/
/home/user01/下载/
/home/user01/模板/
/home/user01/公共/
/home/user01/文档/
/home/user01/音乐/
/home/user01/图片/
/home/user01/视频/

三、卸载并删除原有的 /home 逻辑卷(如果需要)

  1. 卸载 /home 文件系统
    • 命令:umount /home
    • 解释:卸载 /home 文件系统,以便进行后续操作。
# umount /home
  1. 删除原有的 /home 逻辑卷
    • 命令:lvremove /dev/mapper/centos-home
    • 解释:删除名为 centos-home 的逻辑卷。请根据实际情况替换卷名。
# lvremove /dev/mapper/centos-home
Do you really want to remove active logical volume centos/home? [y/n]: y
  Logical volume "home" successfully removed

四、重建 /home 逻辑卷

  1. 创建新的 /home 逻辑卷
    • 命令:lvcreate -L <所需大小>G -n home centos
    • 解释:创建一个新的逻辑卷,大小为 <所需大小> GB,卷名为 home,所属卷组为 centos。请根据实际情况替换大小和卷组名。
# lvcreate -L 30G -n home centos
WARNING: xfs signature detected on /dev/centos/home at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/centos/home.
  Logical volume "home" created.
  1. 格式化新的 /home 逻辑卷
    • 命令:mkfs.xfs /dev/mapper/centos-home
    • 解释:将新的逻辑卷格式化为 XFS 文件系统。如果使用其他文件系统,请替换相应的格式化命令。
# mkfs.xfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=1966080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

五、挂载新的 /home 逻辑卷

  • 命令:mount /dev/mapper/centos-home /home
  • 解释:将新的逻辑卷挂载到 /home 目录。
# mount /dev/mapper/centos-home /home

六、恢复备份的内容

  1. 使用 tar 命令恢复
    • 命令:tar xvpf /tmp/home_backup.tar -C /
    • 解释:将 /tmp/home_backup.tar 文件中的内容解压到 /home 目录中,注意tar中包含home路径,同时保留文件权限。
# tar -xvpf /tmp/home_backup.tar -C /
/
/home/
/home/user01/桌面/
/home/user01/下载/
/home/user01/模板/
/home/user01/公共/
/home/user01/文档/
/home/user01/音乐/
/home/user01/图片/
/home/user01/视频/

六、验证恢复结果

  1. 检查 /home 目录内容

    • 操作:直接浏览 /home 目录,确认文件已正确恢复。
  2. 检查文件权限

    • 命令:ls -l /home
    • 解释:查看 /home 目录下的文件权限,确认与备份前一致。

七、 扩展 / 逻辑卷

  1. 检查释放的空间
    • 命令:vgs
    • 解释:
# vgs
  VG     #PV #LV #SN Attr   VSize    VFree
  centos   1   3   0 wz--n- <299.00g 211.12g
  1. 接下来,将释放出的空间分配给 / 逻辑卷。
    • 命令:lvextend
    • 解释:这条命令会将 /dev/mapper/centos-root 逻辑卷扩展 200G。请确保卷组中有足够的空闲空间。
lvextend -L +211G /dev/mapper/centos-root

这条命令会将 /dev/mapper/centos-root 逻辑卷扩展 200G。请确保卷组中有足够的空闲空间。

八、调整 / 文件系统大小

  • 命令:xfs_growfs
  • 解释:/ 逻辑卷已经扩展,但我们还需要调整文件系统的大小以使用新添加的空间。这条命令会扩展 xfs 文件系统以使用逻辑卷的全部空间。
# xfs_growfs /
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   bloc
  1. 检查磁盘使用情况
    • 命令:df -lh
    • 解释:查看新的 /home 文件系统的磁盘使用情况。
    • 命令:lvs
    • 解释:lvs 命令会列出所有逻辑卷的信息,包括它们的大小
# df -lh
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  9.5M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/mapper/centos-root  261G  7.1G  254G    3% /
/dev/sda1               1014M  234M  781M   23% /boot
tmpfs                    1.6G   12K  1.6G    1% /run/user/42
tmpfs                    1.6G     0  1.6G    0% /run/user/0
/dev/mapper/centos-home   30G   38M   30G    1% /home
# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home centos -wi-ao----  30.00g
  root centos -wi-ao---- 261.00g
  swap centos -wi-ao----  <7.88g

注意事项

  • 权限问题:在打包和恢复时,务必使用 -p--preserve-permissions 选项保留文件权限,以避免恢复后出现权限错误。
  • 备份安全:在执行任何操作前,确保备份文件存放在安全的位置,并验证备份的完整性。
  • 权限要求:执行上述操作需要 root 权限或相应的管理员权限。
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐