谨慎使用,仅仅在虚拟机测试使用!!!!!!!!!!!!!!!!!!
前提:新硬盘容量大于等于原来linear硬盘总和
目标:用 sdd 上的分区 sdd1 替换 sdb1,数据不丢失,系统不重启。
结果:所有数据整合到新的8G硬盘sdd,飞牛可以识别。原先的4G硬盘 sdb1和sdc1可以用飞牛创建存储空间再次利用
sdb1 (4G) + sdc1 (4G) 组成线性 RAID /dev/md1(总 8G)
/dev/md1 是 LVM PV,属于卷组 trim_3acc5171_b3c1_41b8_aa1a_edff3b169b0a(替换成自己的,使用命令lsblk可以查看),卷组中只有一个逻辑卷 0,挂载在 /vol2

成功后截图,原本的md1被清除掉了

操作步骤
1. 对新磁盘 sdd 进行分区
创建分区 sdd1,可以使用 fdisk 或 parted,推荐使用 fdisk:
# 对 /dev/sdd 进行分区,创建一个主分区占用全部空间
fdisk /dev/sdd
# 输入 n 新建分区,p 主分区,1 分区号,默认起始扇区,默认结束扇区(全盘)
# 输入 w 写入分区表并退出
也可以使用 parted 一步完成:
parted /dev/sdd mklabel gpt
parted /dev/sdd mkpart primary 0% 100%
创建后检查分区:
lsblk /dev/sdd
# 应显示 sdd1
2. 清除新分区上的签名并创建物理卷
# 清除可能残留的文件系统或 RAID 签名
wipefs -a /dev/sdd1
# 初始化为物理卷
pvcreate /dev/sdd1
3. 将新 PV 加入现有卷组
卷组名较长,建议直接复制粘贴(注意替换为实际卷组名):
vgextend trim_3acc5171_b3c1_41b8_aa1a_edff3b169b0a /dev/sdd1
4. 将数据从旧 PV /dev/md1 迁移到新 PV /dev/sdd1
# 开始在线迁移(数据会从 /dev/md1 移动到 /dev/sdd1)
pvmove /dev/md1 /dev/sdd1
- 迁移过程不中断
/vol2 的访问,但磁盘 I/O 会较高。
- 可在另一终端执行
pvmove -i 5 查看进度(5 秒刷新一次)。
- 等待迁移完成(8G 数据通常几分钟内完成)。
5. 从卷组中移除旧 PV /dev/md1
vgreduce trim_3acc5171_b3c1_41b8_aa1a_edff3b169b0a /dev/md1
6. 停止并清理 RAID 设备
# 停止 md1 阵列
mdadm --stop /dev/md1
# 清除两个成员盘上的 RAID 超级块(防止系统重启后自动重建)
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdc1
7. 验证结果
# 检查 RAID 状态(应无 md1)
cat /proc/mdstat
# 查看 LVM 结构
pvs
vgs
lvs
# 确认 /vol2 挂载正常,数据完整
df -h /vol2
ls /vol2
关键说明
- 数据安全:
pvmove 是 LVM 的原子操作,会先复制数据再更新元数据,即使中途断 电,重启后 LVM 也能恢复到迁移前状态。但仍建议重要数据备份。
- 分区 vs 整盘:使用分区
sdd1 而非整盘 sdd,为将来可能的其他分区(如交换分区)保留空间,且符合传统管理习惯。但注意 sdd1 的容量就是 sdd 的整盘容量(8G),若需保留未分区空间,可在分区时指定较小大小。
- 无需卸载:整个过程中
/vol2 保持挂载,服务不中断。
- RAID 清理:清除 RAID 超级块后,
sdb1 和 sdc1 变为普通分区,可重新利用。