我有两个逻辑卷,一个逻辑卷安装为/,另一个逻辑卷安装为/ home。
我想将它们结合起来,因为该/
卷不断用完空间。(是的,我知道所有空间都在使用什么;不,我无法删除它。)
我愿意把机器放下来一两天。
作业系统:Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
(CentOS)
我有两个逻辑卷,一个逻辑卷安装为/,另一个逻辑卷安装为/ home。
我想将它们结合起来,因为该/
卷不断用完空间。(是的,我知道所有空间都在使用什么;不,我无法删除它。)
我愿意把机器放下来一两天。
作业系统:Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
(CentOS)
Answers:
我完成了,重新分区成功了。但是,由于两个指南中都缺少区域,因此我将总结我所做的事情。请注意,我用替换了用户名,zzzz
并用替换了计算机的名称xxxxxxx
。另外,除非另有说明,否则所有命令均应以root用户身份运行。
首先,我备份了:
tar -zcvf /media/e14be279-8c11-450a-b52c-1493cff3c632/xxxxxxx-home.tar.gz --exclude=/home/zzzz/Downloads /home
这将创建/ home目录的压缩备份,并将其放在我的外部驱动器上。(请注意,您的外部驱动器将具有不同的路径。)
现在,您需要重启进入单用户模式。
reboot
当计算机再次打开时,您需要查找如下屏幕:
Booting Centos 2.6.32-279.22.1.el6.x86_64 in 3 seconds...
按任意键可中断该操作。您应该看到这样的屏幕:
按a,然后按空格,然后键入single
。按回车。
您应该看到如下提示:
[root@xxxxxxx /] #
输入以下命令:
df -h
它应该告诉你Size
,Used
和Avail
。我们对感兴趣Used
。
写下您的家庭空间正在使用多少空间。我们稍后需要。
umount /home
e2fsck -f /dev/mapper/vg_xxxxxxx-lv_home
还记得您的家庭空间使用了多少空间吗?将其加倍,并将其交给该命令。例如,我的主目录使用了15 GB,因此我将其大小设置为30 GB。
resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G
警告:下一步可能会丢失数据。请确保你把一个尺寸比以前更大的命令。确保增加5 GB。
lvresize -L 35G vg_xxxxxxx/lv_home
告诉根分区使用我们刚刚释放的所有空间。
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root
将数据复制到根分区
mount -t ext4 /dev/mapper/vg_xxxxxxx-lv_home /mnt/home
ls /mnt/home
cp -a /mnt/home/. /home/
(顺便说一句,这-a
一点很重要,因为否则所有内容都将由root拥有,而您则不需要这样做。)
快速检查数据是否正确复制:
ls -lR /home
现在,我们删除主分区,并告诉root再次占用新空间。
umount /mnt/home
lvremove /dev/mapper/vg_xxxxxxx-lv_home
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root
在这一点上,我犯了一个大错误,您可以从中学到一个错误。我重新启动,当系统重新启动时,它拒绝将我的根分区安装为读写状态,因为它无法安装我的/ home分区。因此,在重新启动之前,我们输入
nano /etc/fstab
这些行之一将告诉系统挂载/ home分区。#
在它之前放一个。按Ctrl-O,Enter和Ctrl-X。现在您可以重新启动。
(假设,如果您像我一样忘记编辑fstab,则挂载根分区的命令是mount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /
)
/home
。然后,只要您可以卸载/home
,就可以将其删除。但是,我没有资格与您讨论整个过程。这是您应该提出的新问题。
您可以在不运行任何外部存储的情况下进行操作/
,但是需要卸载/home
。
如果您小心的话,这并不是一个特别危险的过程,但是尽管如此,标准建议仍然适用:首先进行备份,然后进行测试。
我将foo
用于卷组名,root
并home
用作逻辑卷名。这将使逻辑卷路径foo/root
和foo/home
以及设备路径/dev/mapper/foo-root
和/dev/mapper/foo-home
。我假设它们在同一卷组中,否则会变得更加复杂,并且取决于两个卷组的物理卷布局。
首先,卸载/home
并运行e2fsck -f /dev/mapper/foo-home
。然后先收缩文件系统,再收缩逻辑卷。运行resize2fs /dev/mapper/foo-home NNNN
其中NNNN是您要的体积内保留(可以用KB或MB或GB的而不是后缀块的数量K
,M
或G
)。缩小文件系统之后,收缩与逻辑卷lvresize -L MMMM foo/home
其中MMMM是一个数兆字节(注意,默认的单位是不同的resize2fs
,但你可以使用相同的后缀K
,M
,G
)。请特别注意,不要将逻辑卷的大小缩小到比文件系统更小的位置-这是此过程中的一个危险步骤。
卷组中现在有未使用的空间。运行lvresize -l +100%FREE foo/root
以使根卷抓住卷组中的所有可用空间。然后运行resize2fs /dev/mapper/foo-root
(不使用size参数)以扩展文件系统以覆盖整个逻辑卷;在安装卷时可以进行放大。
您现在可以复制一些文件了。如果没有足够的空间容纳所有东西,请尽可能多地移动,然后重复该过程。
从中复制所有文件后/home
,就可以销毁它了。验证是否/home
为空(如果已移动文件)或已将所有文件/home
复制到其中/root
(如果已复制文件)。要销毁现在不需要的逻辑卷,请运行lvremove foo/home
。最后,使用扩展根卷lvresize -l 0%FREE foo/root
及其文件系统resize2fs /dev/mapper/foo-home
。
好吧,我发现自己处于完全相同的位置。似乎CentOS在默认情况下会创建一个小的根卷,并用填充剩余的空间/home
。我什至首先在VM中测试了我的设置,但使用较小的磁盘,CentOS并未创建本地卷。在受到空间限制之前,我先解决了这个问题,并且还弄清楚了如何不必进入单用户模式。如下:
获得对计算机的访问权限,ssh很好(假设非root用户)。
cd /
因此您不在主目录中sudo -s
我们将为所有这一切扎根lsof /home
检查是否没有人正在使用家庭音量,不应mv
,tar
或类似的内容lvremove centos/home
/etc/fstab
并注释掉或删除该行/home
/home
-您现在处于安全位置,可以在此处重新启动lvresize -l +100%FREE centos/root
xfs_growfs /dev/centos/root
在CentOS 7上,其他人可能会使用 resize2fs
df -h
你成功了吗? 希望这会使某人更容易。如今,您可以在文件系统上执行的操作确实非常令人惊奇。
/
容量,那不是使用LVM的重点吗?