Linux将磁盘转换上层成LVM

这篇文章记录了如何将磁盘的上层结构换成LVM,来自于老的笔记部分内容可能没有再次验证仅供参考。

CentOS7.x

需求是要去调整 / 的大小,但是当初部署的时候是一个自动分区的系统很奇怪,各种软链接已经乱了套,后续是决定改上层结构用lvm来去管理。

首先给节点添加一个新的磁盘

添加后我们可以进行初始化磁盘的操作,将会分成两个区

/boot 200M 左右的大小

剩下的全部给后续的lvm

初始化lvm:

pvcreate /dev/vda2
vgcreate centos /dev/vda2
lvcreate --extents 100%FREE --name root centos

初始化文件系统

mkfs.ext2 /dev/vda1
mkfs.xfs /dev/mapper/centos-root

挂载分区

mkdir -pv /mnt/centos
mount /dev/mapper/centos-root /mnt/centos
mkdir -pv /mnt/centos/boot
mount /dev/vda1 /mnt/centos/boot

可以使用rsync来去同步目前系统的所有文件到新的分区:

rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/centos

修改fstab,首先可以使用blkid查看新分区的uuid再去写到fstab中如:

blkid
/mnt/centos/etc/fstab
UUID=682dff8d-3480-4f52-9f6a-1f9e832e5880	/boot	ext2	defaults	0 	0
UUID=0db29396-38bb-4a7b-94b0-344e7c122fd4 /                       xfs     defaults        0 0

挂载必要的文件系统:

mount --types proc /proc /mnt/centos/proc
mount --rbind /sys /mnt/centos/sys
mount --make-rslave /mnt/centos/sys
mount --rbind /dev /mnt/centos/dev
mount --make-rslave /mnt/centos/dev

进入chroot:

chroot /mnt/centos
rm -rf /boot/*
yum install kernel -y
grub2-install /dev/vda
grub2-mkconfig -o /boot/grub2/grub.cfg 
exit

关机之后取消连接原有磁盘再去开机。

开机验证原有的服务等是否正常,确认无误之后再去将原有的磁盘文件删除释放空间。

这个需求是一个比较特殊的需求,并且这也做转换耗费的精力也是比较多的,至少需要和当前一样占用的磁盘大小。 如果说是简单的扩容是可以直接加好容量然后growpart之类的。