重新平衡 CentOS / RHEL Ext4 LVM 分配

重新平衡 CentOS / RHEL Ext4 LVM 分配

我们的公司标准是 CentOS(似乎更喜欢 LVM),而我主要来自非 LVM 背景,因此我在这个问题上探索了新领域。

我继承了一台旧机器作为日志服务器,不得不重新安装 CentOS。由于主板上的 EHCI 存在问题(无论是通过常规安装 DVD 还是通过 LiveCD GUI 安装),我唯一能找到的可以安装 CentOS 6.3 的就是 LiveCD 文本安装。LiveCD 文本安装不允许我在磁盘上进行自己的分区设置;它只安装 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到 20000 个 1-M 块,我可以不重新启动就做到这一点吗?如果可以,那么执行此操作的具体命令序列是什么?
  2. 如果我想添加专用/var分区,我应该怎么做才能不完全重新安装?

答案1

如果我需要将 / 增加到 257398 个 1-M 块并将 /home 减少到 20000 个 1-M 块,我可以不重新启动就做到这一点吗?如果可以,那么执行此操作的具体命令序列是什么?

您有大约 280GB 的可用空间,其中 50GB 已分配给“/”,230GB 已分配给/home。由于这代表了您所有的可用空间,因此您必须先释放一些空间。以下是一些选项:

如果您尚未放入任何数据/home,最简单的方法是丢弃现有文件系统,然后以适当的大小重新创建它:

  • 卸载/home

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

    # lvreduce -L 20G /dev/vg_livecd/lv_home
    
  • 重新创建/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
    

您会注意到,我将文件系统缩小了一点,比 LV 还要多;这是因为我永远记不住它们是否以相同的方式计算事物,所以我试图留下一点回旋余地。

无论如何,此时您的卷组中大约有 210GB 的可用空间。现在您可以增加根文件系统的大小:

  • 增加根 LV 的大小:

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

    # resize2fs /dev/vg_livecd/lv_root
    

请注意,由于我在此答案中使用的舍入,您可能需要使用略小于 260G 的数字。此外,LVM 实用程序的最新版本包括为您调整文件系统大小的功能,但我在这些选项可用之前就一直在这样做……所以我不能声称确切地知道它们是如何运作的。

如果我想添加专用的 /var 分区,我应该怎么做才能不完全重新安装?

首先,您可能希望在单用户模式下执行此操作,否则正在运行的进程可能会打开文件,从而/var难以替换。话虽如此...

再次,您将需要可用空间。如果您没有在上一步中用完所有可用空间,而是留下几 GB 的可用空间,则可以执行以下操作:

  • 创建新的逻辑卷:

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

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

    /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创建新目录:

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

    # 卸载 /mnt # 挂载 /var

  • 然后继续启动。当您对一切工作正常感到满意时,您可以删除/var.old

答案2

考虑到:

  • 丑陋的 VG 名称
  • 您的用例的空间分配不当以及 Larsks 详述的程序负担
  • 如果你需要重新安装,就必须再次执行所有这些操作

据我所知,我会尝试通过 netinstall/kickstart 一次性以可重复的方式获得所需的配置。

我的 2cts

相关内容