lvm更换磁盘(存在vg卷组的磁盘损坏)

只含有pv的磁盘损坏更换 | 传送门>>

对于机械硬盘而言,经常会出现坏道,影响整体的磁盘读写速度,此时我们需要更换故障的硬盘,接下来模拟操作整个更换过程。

一. 测试环境配置 创建lvm卷挂载并上传文件

1.测试环境

操作系统:ubuntu20.04

硬盘:准备3块5GB的硬盘用于测试

2.前提条件创建lvm卷

使用sdb、sdc加入LVM并配置lv,创建过程如下:

1
2
3
4
5
6
# 创建PV
pvcreate /dev/sd{b..c}
# 创建VG
vgcreate vg00 /dev/sdb /dev/sdc
# 创建一个8GB的LV
lvcreate -n lv00 -L 8G vg00

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_8827a051a031111cb47e8e85d0f319fe.png

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_fb1428a67eb75bf19a574c17ca127574.png

3. 格式化LV并挂载

1
2
3
4
5
6
# 格式化为ext4格式
mkfs.ext4 /dev/vg00/lv00
# 创建挂载目录
mkdir /lv00_datadir
# 挂载
mount /dev/vg00/lv00 /lv00_datadir

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_1827ebb3ba929ebaa9a949fca6455667.png

上传测试文件,我在这里上传一个镜像文件,约为15M左右;

使用md5sum命令来验证硬盘更换后数据的完整性:

1
2
3
4
# 查看文件md5
md5sum /lv00_datadir/cirros-0.4.0-x86_64-disk.img
// 返回
443b7623e27ecf03dc9e01ee93f67afe /lv00_datadir/cirros-0.4.0-x86_64-disk.img

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_8449f31b43f6f17a71494598fc1e2ec4.png

二. 更换磁盘 迁移坏道磁盘数据

假设 sdb 目前存在一些问题,需要使用 sdd 来替换:

1.配置sdd

将 sdd 分区后加入到 VG 中:

1
2
3
4
# 将sdd创建pv卷
pvcreate /dev/sdd
# 将sdd加入vg卷
vgextend vg00 /dev/sdd

2. 迁移数据

2.1 通过pvdisplay命令来查看磁盘sdb上是否存有数据:

1
2
# 查看pv卷详情
pvdisplay /dev/sdb

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_817b1d5249e0b48e8d3076f68c3ba559.png

可以看到,此时的sdb基本被用满了,相应地sdd还没有开始使用:

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_4089272617ed1608011e87085bb86d9b.png

2.2 迁移数据,将sdb中的数据迁移到sdd中:

1
2
# 迁移sdb pv卷中的数据到 sdd
pvmove /dev/sdb /dev/sdd

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_8ca50c610533e1eded58b727b1b8c044.png

再次查看磁盘sdb上是否存有数据:

1
pvdisplay /dev/sdb

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_980104501d271293dbf431880b22eca2.png

或者使用pvscan查看:

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_2caa41a0e2c1b5e0807bdc99e46b3054.png

2.3 移出sdb

1
2
3
4
# 将sdb从VG中移出
vgreduce vg00 /dev/sdb
# 删除PV
pvremove /dev/sdb

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_93fa85b202ffddcbdada05ec2e6aa091.png

2.4 检查数据完整性

还是使用md5sum命令来检查数据完整性:

1
md5sum /lv00_datadir/cirros-0.4.0-x86_64-disk.img

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/5/image_51b7a5f9066d34eac92af24ffd2babeb.png

更换前与更换后计算出来的值都是一样,说明数据完整,测试成功。

本文参考:会成长的小学生