如何将 /home 重新整合到主分区,然后扩大分区

如何将 /home 重新整合到主分区,然后扩大分区

我在设置我们的一个基于 XenServer 的 Linux VM 时犯了一个错误。我创建了一个单独的交换区(好)和一个单独的大型 /home 目录(坏),而实际上它应该是一个单独的大型 /var 目录。

现在 /var 几乎已经占满了根磁盘,我想将 /home 重新整合到根分区中,删除旧的 921GB /home 分区,然后将根分区扩大到 921GB,而 /swap 分区保持不变。

现在:

[root@ /]# df -h

Filesystem                       Size  Used Avail Use% Mounted on 
/dev/mapper/VolGroup-lv_root      50G   43G  4.0G  92% / 
tmpfs                            3.9G     0  3.9G   0% 
/dev/shm /dev/xvda1              485M   72M  388M  16% /boot 
/dev/mapper/VolGroup-lv_home     921G  200M  874G   1% /home

因此更清楚地说,我需要知道如何将 /home 及其内容移动到根分区(/dev/mapper/VolGroup-lv_root)并让 Linux 将其识别为操作系统的主目录,删除 /dev/mapper/VolGroup-lv_home 分区,然后扩大 /dev/mapper/VolGroup-lv_root 分区以占用额外的 921GB 可用空间。

如果可能的话,我愿意交换 /home 和 /var 的位置,但这是一台生产服务器。不过我可以随意制作即时快照,所以可以进行一些深夜实验!;)

谢谢!

答案1

作为 root,这相当简单:

mkdir /home2
mv /home/* /home2/
umount -fl /home
lvremove /dev/VolGroup/lv_home
mv /home2 /home
  • 编辑 fstab 并删除 /dev/VolGroup/lv_home 的条目
  • 使用 vgdisplay 检查 VolGroup 中现在有多少可用空间,并使用 lvextend 将这些数据添加到 lv_root
  • 在 lv_root 上适当使用 resize2fs 或 xfs_growfs

答案2

如果您的根文件系统可调整大小(例如 ext4),此过程将有效。

  1. 修改现有用户或创建主目录不在 /home 下的新用户。
  2. 验证您是否可以以该用户身份登录并 su 到 root
  3. 确保所有其他用户都已注销
  4. umount /home - 如果失败,则用户进程可能仍在使用 /home。使用 fuser 或 lsof 检查
  5. 在临时挂载点重新挂载 /dev/mapper/VolGroup-lv_home - 例如 /mnt/home
  6. 使用 rsync、cp -p 或其他工具将用户主目录从 /mnt/home 复制到 /home - 验证权限和所有权是否正确
  7. 编辑 fstab 注释掉 /home
  8. 现在可以允许用户重新登录
  9. lvremove /dev/VolGroup/lv_home
  10. lvextend -L+921G /dev/VolGroup/lv_root
  11. resize2fs /dev/VolGroup/lv_root

答案3

您也可以通过仅交换挂载点来执行此操作而不增加分区:

卸载主分区:

umount /home

将其挂载到其他地方,例如/mnt:

mount /dev/mapper/VolGroup-lv_home /mnt

将分区中的所有内容移动到您的主目录(现在位于根分区上):

mv /mnt/* /home/

将数据从 /var 目录移动到分区:

mv /var/* /mnt/

将您的分区重新挂载到 /var:

umount /mnt

mount /dev/mapper/VolGroup-lv_home /var

确保/etc/fstab随后相应地更改您的内容。

相关内容