lvm卷创建删除扩容坏盘移出卷组操作

创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建lvm逻辑卷

# 创建pv卷的过程
pvcreate /dev/sd{b..c}
pvs
# 创建vg卷
# 可以简写为一条命令 vgcreate vg_test /dev/sd{b..c}
vgcreate vg_test /dev/sdb
vgs
vgextend vg_test /dev/sdc
# 创建lvm卷组(逻辑卷组)
lvcreate -L 5G -n lv_test vg_test
lvcreate -L 2G -n lv_test vg_test
# 所有容量创建进lvm卷
lvcreate -l 100%FREE -n lv_test vg_test

扩容lvm卷组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 扩容lvm卷组过程
# 刷新分区表
partprobe
# 创建pv
pvcreate /dev/sdc1
# 查看pv
pvs
# vg卷组名称centos通过vgs查看
vgs
# 将pv卷扩展到vg卷组并查看
vgextend vg_test /dev/sdc1
vgdisplay
# 此时查看pv卷 发现多了刚才的这块磁盘
pvs
# vg_test-lv_test 名称通过 lsblk即可查看
# vg_test vg卷组名 lv_test lv卷组名
####100%空闲空间扩展
lvextend -l +100%FREE /dev/mapper/vg_test-lv_test
# 扩容到5G
lvextend -L +5G /dev/mapper/vg_test-lv_test
# 扩容到文件系统
ext4文件系统扩容命令: resize2fs /dev/mapper/vg_test-lv_test
xfs 文件系统扩容命令: xfs_growfs /dev/mapper/vg_test-lv_test

注意:如果2块pv一块5G 如果创建的lvm卷就有2G那么另外一块盘就不会显示vg_test-lv_test 因为他没在用

删除lvm卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 删除lvm卷
步骤:
1、卸载挂载点
2、将pv卷从vg卷组移出
3、执行删除pv pvmove
4、此时磁盘已经移出

详情
# 查看挂载点
df -h | grep lv_test
# 假设输出显示挂载在 /mnt/data,则执行卸载
sudo umount /mnt/data

# 如果卸载失败,提示目标正忙,可以使用 fuser 命令查找并终止占用进程,然后强制卸载
sudo fuser -km /mnt/data # 终止所有访问 /mnt/data 的进程
sudo umount -l /mnt/data # 强制卸载

# 删除逻辑卷 (LV)
# 卸载成功后,删除逻辑卷 lv_test。
sudo lvremove /dev/vg_test/lv_test
系统会提示确认,输入 y 即可。
删除卷组 (VG)
# 逻辑卷删除后,删除卷组 vg_test。
sudo vgremove vg_test
清除物理卷 (PV) 信息
最后,清除物理磁盘 /dev/sdb 和 /dev/sdc 上的 LVM 标签,使其恢复到未分配状态。
sudo pvremove /dev/sdb /dev/sdc

坏盘移出卷组

既然 /dev/sdb 已经损坏,你的目标是将数据迁移到 /dev/sdc 并将坏盘移出卷组。

根据你提供的 pvs 信息:
/dev/sdb (坏盘): 已用约 2G,空闲 0。
/dev/sdc (好盘): 已用约 2G,空闲 2.99G。

好消息是:好盘 sdc 的空闲空间(2.99G)足以容纳坏盘 sdb 上的数据(约 2G),因此可以直接进行无损迁移。

请按照以下步骤操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# sdb盘坏了我要将他移出卷组后维修
既然 /dev/sdb 已经损坏,你的目标是将数据迁移到 /dev/sdc 并将坏盘移出卷组。

根据你提供的 pvs 信息:
/dev/sdb (坏盘): 已用约 2G,空闲 0。
/dev/sdc (好盘): 已用约 2G,空闲 2.99G。

好消息是:好盘 sdc 的空闲空间(2.99G)足以容纳坏盘 sdb 上的数据(约 2G),因此可以直接进行无损迁移。

请按照以下步骤操作:

一、迁移数据
1、将坏盘 sdb 上的所有数据移动到卷组内的其他磁盘(即 sdc)上。
sudo pvmove /dev/sdb

注意:这个过程可能需要一点时间,取决于数据量大小。如果中途断线,数据也是安全的,重启后再次运行该命令即可继续。

2、确认迁移完成
移动完成后,再次查看物理卷状态,确保 sdb 的已用空间变为 0。
sudo pvs

此时 /dev/sdb 的 PUsed 应该为 0,而 /dev/sdc 的 PFree 应该变小。

3、将坏盘移出卷组
数据移走后,将 sdb 从 vg_test 卷组中剔除。
sudo vgreduce vg_test /dev/sdb

4、清除坏盘标签(可选)
虽然盘坏了,但为了彻底清除 LVM 信息,可以执行此命令(如果盘彻底坏了无法写入,这步会报错,忽略即可)。
sudo pvremove /dev/sdb

5、💡 补充情况:如果盘坏得太厉害
如果 pvmove 报错(例如提示 I/O error 或无法读取),说明坏盘已经无法读取数据:

如果数据不重要:直接强制移除坏盘。
sudo vgreduce --removemissing --force vg_test

(注意:这会导致存储在 sdb 上的那部分数据丢失)

如果数据重要:不要执行任何操作,尝试使用 ddrescue 等工具先对 sdb 进行镜像备份,再进行恢复。