如何在 CentOS7 上缩小 /home 并添加更多空间

Goi*_*Way 40 partition xfs centos centos7

CentOS 7文件系统是XFS,并且resize2fs不起作用。我需要缩小/home到 400G 并将 100G 空间添加到/. 我该怎么办?

# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G   50G  341M 100% /
devtmpfs                 7.8G     0  7.8G   0% /dev
tmpfs                    7.8G   84K  7.8G   1% /dev/shm
tmpfs                    7.8G  778M  7.0G  10% /run
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1                497M  241M  257M  49% /boot
tmpfs                    1.6G   16K  1.6G   1% /run/user/42
tmpfs                    1.6G     0  1.6G   0% /run/user/0
/dev/mapper/centos-home  500G   20G  480G   4% /home
Run Code Online (Sandbox Code Playgroud)

lvs、vgs 和 pvs 的输出为:

[root@localhost]~# lvs -v
    Using logical volume(s) on command line.
  LV   VG     #Seg Attr       LSize   Maj Min KMaj KMin Pool Origin Data%  Meta%  Move Cpy%Sync Log Convert LV UUID                                LProfile
  home centos    1 -wi-ao---- 499.38g  -1  -1  253    2                                                     4I53D9-7VSm-HN9H-QsSp-FvFU-5R9D-y5VwsN         
  root centos    1 -wi-ao----  50.00g  -1  -1  253    0                                                     LGRoEL-0EHz-G135-p6vx-Lt2s-RvI5-qdT9Sm         
  swap centos    1 -wi-ao----   7.81g  -1  -1  253    1                                                     UYB5xP-cEyV-lWvn-blIq-8s13-9kVB-ykjIWI         
[root@localhost]~# vgs -v
    Using volume group(s) on command line.
  VG     Attr   Ext   #PV #LV #SN VSize   VFree  VG UUID                                VProfile
  centos wz--n- 4.00m   1   3   0 557.26g 64.00m Gd5c08-ujdQ-fsix-o7z6-Wfsv-C0uW-XzDois         
[root@localhost]~# pvs -v
    Using physical volume(s) on command line.
    Found same device /dev/sda2 with same pvid TCmreQr93apETNoTl8bMc54l57FZ5hut
  PV         VG     Fmt  Attr PSize   PFree  DevSize PV UUID                               
  /dev/sda2  centos lvm2 a--  557.26g 64.00m 557.26g TCmreQ-r93a-pETN-oTl8-bMc5-4l57-FZ5hut
[root@localhost]~# 
Run Code Online (Sandbox Code Playgroud)

小智 63

正如其他人指出的那样,XFS 文件系统不能缩小。

因此,您最好的办法是备份 /home,删除并以较小的大小重新创建其卷,并将其余部分交给您的 /root 卷,就像 Koen van der Rijt 在他的帖子中概述的那样。

• 备份 /home 的内容

> tar -czvf /root/home.tgz -C /home .
Run Code Online (Sandbox Code Playgroud)

• 测试备份

> tar -tvf /root/home.tgz
Run Code Online (Sandbox Code Playgroud)

• 卸载主页

> umount /dev/mapper/centos-home
Run Code Online (Sandbox Code Playgroud)

• 删除主逻辑卷

> lvremove /dev/mapper/centos-home
Run Code Online (Sandbox Code Playgroud)

• 为 /home 重新创建一个新的 400GB 逻辑卷,对其进行格式化并挂载

> lvcreate -L 400GB -n home centos
> mkfs.xfs /dev/centos/home
> mount /dev/mapper/centos-home
Run Code Online (Sandbox Code Playgroud)

• 使用所有剩余空间扩展您的 /root 卷并在执行此操作时调整 (-r) 文件系统的大小

> lvextend -r -l +100%FREE /dev/mapper/centos-root
Run Code Online (Sandbox Code Playgroud)

• 恢复您的备份

> tar -xzvf /root/home.tgz -C /home
Run Code Online (Sandbox Code Playgroud)

• 检查/etc/fstab 以获取/home 卷的任何映射。如果它使用 UUID,您应该更新 UUID 部分。(由于我们创建了一个新卷,UUID 已更改)

就是这样。

希望这可以帮助。

请添加此项以同步更改:

dracut --regenerate-all --force

  • umount 时,可能会出现 target is busy 错误, umount -l /dev/mapper/centos-home 可能会有所帮助。并且可能会出现另一个错误:“逻辑卷 centos/home 包含正在使用的文件系统”,fuser -kuc /dev/vg_data/backup 可能会有所帮助。 (2认同)

小智 6

对 Ari 的回答的补充,因为我无法按照他的指示使用公钥身份验证进行 ssh。

启用 selinux 后,您可能会在 /var/log/messages 中收到此消息(在 sshd_config 中启用调试),因为 /home 已重新创建:

SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys
Run Code Online (Sandbox Code Playgroud)

通过以下方式修复它:

restorecon -R -v /home
Run Code Online (Sandbox Code Playgroud)