Linux磁盘扩容
需求:给/data扩容100个G,并且需要保留/data里面的内容。
一、迁移前:记录原分区数据基准
# 1. 统计 /data 目录下的文件和文件夹总数
find /data -type f | wc -l
find /data -type d | wc -l
# 2. 统计 /data 目录总占用空间
du -sh /data
# 3. 记录关键文件的校验值(可选,用于精确比对)
md5sum /data/重要文件1 > /tmp/data_md5.txt
md5sum /data/重要文件2 >> /tmp/data_md5.txt
二、开始操作
在虚拟化平台或云控制台为服务器添加一块 100G 新磁盘,系统识别后会显示为 /dev/vdc(以实际识别为准)。
1.创建物理卷
pvcreate /dev/vdc
2.创建卷组
vgcreate vg_data /dev/vdc
3.创建逻辑卷
创建一个与 /data 当前已用空间大小一致的逻辑卷(如果/data总体大小120G,实际使用了10G,建议创建120G的,为了做演示我这儿就创建了个50G的):
lvcreate -L 50G -n lv_data vg_data
4.格式化逻辑卷
mkfs.xfs /dev/mapper/vg_data-lv_data
此时的lsblk:
5.临时挂载并迁移数据
mkdir -p /mnt/tmp_data
mount /dev/mapper/vg_data-lv_data /mnt/tmp_data
rsync -avx /data/* /mnt/tmp_data/ #没有这个命令可以使用以下命令cp -a /data/* /mnt/tmp_data/
6.卸载旧分区并重新挂载新逻辑卷
umount /data
umount /mnt/tmp_data
mount /dev/mapper/vg_data-lv_data /data
7.更新 /etc/fstab 确保开机自动挂载
echo "/dev/mapper/vg_data-lv_data /data xfs defaults 0 0" >> /etc/fstab
确认是xfs还和ext4:
8.扩容逻辑卷到目标大小
lvextend -L +100G /dev/mapper/vg_data-lv_data #不要使用这个命令,使用下面这个命令
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data
xfs_growfs /data
9.将原分区 /dev/vdb1 转为物理卷
pvcreate /dev/vdb1
10.把新物理卷加入卷组 vg_data
vgextend vg_data /dev/vdb1
11.扩容逻辑卷到 220G(100G+120G)
lvextend -L 220G /dev/mapper/vg_data-lv_data #不要使用这个命令,使用下面这个命令
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data
12.扩容文件系统(让系统识别新容量)
xfs_growfs /data
13.重启
df -Th 查看是否扩容成功,变成220G
三、迁移后:对比原分区数据
# 1. 统计 /data 目录下的文件和文件夹总数
find /data -type f | wc -l
find /data -type d | wc -l
# 2. 统计 /data 目录总占用空间
du -sh /data