Linux磁盘扩容教程

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