问题

在CentOS/RHEL中, 根文件系统/ 使用率已经99% 并且不是 LVM。
我们需要将它移动到新的 LVM 分区。如何操作?

https://onitroad.com 更多教程

解决方法

将普通磁盘分区上的现有根文件系统转换为 LVM 卷的过程如下:

  1. 首先创建一个LVM分区:
    选择一个空闲磁盘并在其上创建一个 LVM 分区。
# pvcreate /dev/sdb1
# vgcreate vg_new_root  /dev/sdb1
# lvcreate -L 4G -n lv0 vg_new_root
  1. 使用 ext3 或者 ext4(或者根据需要)格式化这个新的 LVM 分区。
    下面给出的示例创建 aext4 文件系统:
# mkfs.ext4 /dev/vg_new_root/lv0
  1. 创建一个新的挂载点,然后在其上挂载 LVM 分区:
# mkdir /mnt/NEW_ROOT_PARTITION
# mount /dev/vg_new_root/lv0  /mnt/NEW_ROOT_PARTITION
  1. 将“/”的所有内容复制到新挂载的文件夹中:
# tar -cvpf - --one-file-system --acls --xattrs --selinux / | tar -C /mnt/NEW_ROOT_PARTITION -xf
# cp -aux /dev /mnt/NEW_ROOT_PARTITION
  1. 现在编辑文件 /mnt/NEW_ROOT_PARTITION/etc/fstab 以反映新的根目录:
/dev/vg_new_root/lv0      /       ext4    defaults     1 1
  1. 现在需要 chroot 到新的文件系统并创建具有 raid 和 lvm 支持的 initrd:
# mount --bind /dev /mnt/NEW_ROOT_PARTITION
# chroot /mnt/NEW_ROOT_PARTITION
# mount -t proc /proc /proc
# mount -t sysfs /sys /sys
# vgscan
# vgchange -ay
# mkinitrd -v /boot/initrd-`uname -r`.lvm.img `uname -r`
# umount /sys
# umount /proc
# exit
# mv /mnt/lv0/boot/initrd-`uname -r`.lvm.img /boot
  1. 编辑 /boot/grub/grub.conf 以指向新的根目录 /dev/vg_new_root/lv0 。
    在“/boot”目录中备份旧的 initrd 并将新的 initrd 重命名为现有的或者编辑 grub.conf 中的条目。

  2. 重启

# shutdown -r now
CentOS/RHEL:将现有的根文件系统转换为 LVM 分区
日期:2020-09-17 00:12:46 来源:oir作者:oir