重新平衡CentOS / RHEL Ext4 LVM分配

我们的企业标准是CentOS(似乎更喜欢LVM),而我主要来自非LVM背景,所以我正在这个问题上踏上新的台阶。

我inheritance了一台较旧的机器作为日志服务器,并且必须重新安装CentOS。 由于主板上的EHCI问题(通过正常安装DVD或通过LiveCD GUI安装),我能find的安装CentOS 6.3的唯一的事情就是安装LiveCD文本。 LiveCD文本安装不允许我在磁盘上创build自己的分区设置; 它只安装LVM,给我的日志服务器空间分配不当

[mpenning@someHost ~]$ cat /etc/issue CentOS release 6.3 (Final) Kernel \r on an \m [mpenning@someHost ~]$ df -m Filesystem 1M-blocks Used Available Use% Mounted on /dev/mapper/vg_livecd-lv_root 50397 2167 47719 5% / tmpfs 1850 0 1850 0% /dev/shm /dev/md127p1 485 65 395 15% /boot /dev/mapper/vg_livecd-lv_home 227001 188 215283 1% /home [mpenning@someHost ~]$ sudo lvm vgdisplay --- Volume group --- VG Name vg_livecd System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 278.96 GiB PE Size 4.00 MiB Total PE 71415 Alloc PE / Size 71415 / 278.96 GiB Free PE / Size 0 / 0 VG UUID 8qywNz-cmKv-RxAH-WcsV-2nEA-sGg3-fcZ6BU [mpenning@someHost ~]$ 

两个问题:

  1. 如果我需要增加/拥有257398个1-M块并将/home减less到20000个1-M块,我可以在不重新启动的情况下执行此操作,如果是这样,具体的命令序列是做什么的?
  2. 如果我想添加一个专用的/var分区,我应该怎么做没有一个完整的重新安装?

如果我需要增加/拥有257398个1-M块并将/ home减less到20000个1-M块,我可以在不重新启动的情况下执行此操作,如果是这样,具体的命令序列是做什么的?

你有大约280GB的可用空间,其中50GB被分配给“/”,230GB被分配到/home 。 因为这代表了你所有的可用空间,所以你将不得不先释放一些东西。 这里有几个选项:

如果您没有在/home放入任何数据,最简单的办法就是放弃现有的文件系统,然后用适当的大小重新创build:

  • 卸载/home

     # umount /home 
  • 将逻辑卷(LV)的大小减小到20GB:

     # lvreduce -L 20G /dev/vg_livecd/lv_home 
  • 重新创build/home文件系统:

     # mke2fs -j -m0 /dev/vg_livecd/lv_home 
  • 和重新安装/home

     # mount /home 

收缩 /home归位是可能的,而不是丢弃它,但是这可能有点棘手:

  • 卸载/home

     # umount /home 
  • fsck文件系统。 这可能是下一步所需要的:

     # fsck /dev/vg_livecd/lv_home 
  • 调整文件系统的大小:

     # resize2fs /dev/vg_livecd/lv_home 19G 
  • 降低LV:

     # lvreduce -L 20G /dev/vg_livecd/lv_home 

你会注意到我减less了文件系统比LV多一点点; 这是因为我永远不会记得他们是否以相同的方式来计算事物,所以我试着留下一个小小的摆动空间。

无论哪种情况,现在您的卷组中都有大约210GB的可用空间。 现在你可以增加你的根文件系统的大小了:

  • 增加根LV的大小:

     # lvresize -L260G /dev/vg_livecd/lv_root 
  • 增加文件系统的大小:

     # resize2fs /dev/vg_livecd/lv_root 

请注意,由于我在此答案中使用了四舍五入,因此您可能需要使用略小于260G的数字。 此外,LVM实用程序的最新版本包括为您调整文件系统的能力,但是自从这些选项可用之前,我一直在做这个工作……所以我不能声称知道它们是如何操作的。

如果我想添加一个专用的/ var分区,我应该怎么做没有一个完整的重新安装?

首先,您可能希望以单用户模式执行此操作,否则正在运行的进程可能会在/var打开文件,导致难以replace。 话说回来…

再次,你将需要自由空间。 如果不是在上一步中使用所有的可用空间,而是免费使用几GB,则可以这样做:

  • 创build一个新的逻辑卷:

     # lvcreate -n lv_var -L 10G /dev/vg0 
  • 创build一个新的文件系统:

     # mke2fs -j -m0 /dev/vg_livecd/lv_var 
  • 编辑/etc/fstab通过添加以下行来在/var上挂载新的LV:

     /dev/vg_livcde/lv_var /var ext4 defaults 1 2 

    但是不要安装它!

  • 将新的文件系统安装在某个方便的地方:

     # mount /dev/vg_livecd/lv_var /mnt 
  • 复制/var的内容:

     # rsync -a /var/ /mnt/ 
  • /var重命名为/var.old并创build一个新的目录:

     # mv /var /var.old # mkdir /var 
  • 将你的新LV安装到/var

    #umount / mnt#mount / var

  • 并继续启动。 当你满意的时候,一切正常,你可以删除/var.old

考虑到:

  • 丑陋的VG名称
  • 为您的用例分配的空间不足,以及由larsk详细描述的过程的负担
  • 事实上,如果你不得不重新安装,你将不得不再次做这些事情

AFAIC,我会尝试netinstall / kickstart一次性以可复制的方式获得所需的configuration。

我的2cts