一、逻辑卷条带化:

把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。

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
43
44
45
46
创建物理卷
[root@manage01 ~]# pvcreate /dev/sdb[12]

查看物理卷
[root@manage01 ~]# pvs
/dev/sdb1 lvm2 a-- 2.01g 2.01g
/dev/sdb2 lvm2 a-- 2.01g 2.01g


创建卷组:
[root@manage01 ~]# vgcreate vg01 /dev/sdb[12]

[root@manage01 ~]# pvs /dev/sdb[12]
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg01 lvm2 a-- 2.00g 2.00g
/dev/sdb2 vg01 lvm2 a-- 2.00g 2.00g


创建实现条带化的逻辑卷:
[root@k8s-master1 ~]# lvcreate -n lv1 -L 1G vg01 -i 2 /dev/sdb{1,2}

-i 参数:给出条带化的数量
[root@k8s-master1 ~]# lvs /dev/vg01/lv01


格式化挂载使用:
[root@k8s-master1 ~]# mkfs.ext4 /dev/vg1/lv1
[root@k8s-master1 ~]# mount /dev/vg1/lv1 /lv1


测试:
[root@k8s-master1 ~]# dnf install sysstat -y
[root@k8s-master1 ~]# iostat -m -d /dev/sdb[12] 2
-d 查看磁盘
-m 以什么速度显示,每秒M
2 每隔2s显示一次
如果后面还有数字则代表总共显示多少次

[root@k8s-master1 ~]# dd if=/dev/zero of=/lv1/test bs=1M count=1000 模拟写数据
[root@k8s-master1 ~]# iostat -m -d /dev/sdb[12] 1
.
.
.
Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdb1 4015.00 0.01 364.38 0 364
sdb2 4005.00 0.00 364.33 0 364

二、逻辑卷实现镜像

镜像是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。对某个逻辑卷的数据做镜像,起到数据备份的作用。

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
当前环境:
[root@k8s-master1 ~]# lsblk
├─sdb3 8:19 0 2G 0 part
├─sdb4 8:20 0 2G 0 part


创建物理卷:
[root@k8s-master1 ~]# pvcreate /dev/sdb[34]
[root@k8s-master1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb3 lvm2 --- 2.00g 2.00g
/dev/sdb4 lvm2 --- 2.00g 2.00g


将物理卷加入到vg1卷组:
[root@k8s-master1 ~]# vgextend vg1 /dev/sdb[34]
Volume group "vg1" successfully extended
[root@k8s-master1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 4 1 0 wz--n- 7.98g 6.98g


创建实现镜像的逻辑卷:
[root@k8s-master1 ~]# lvcreate -n lv2 -L 1G vg1 -m 1 /dev/sdb[34]
Logical volume "lv2" created.

-m参数:给出镜像的个数;1表示1个镜像

[root@k8s-master1 ~]# lvs -a -o +devices
[root@k8s-master1 ~]# lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
root cl -wi-ao---- <17.00g /dev/sda2(512)
swap cl -wi-ao---- 2.00g /dev/sda2(0)
lv1 vg1 -wi-ao---- 1.00g /dev/sdb1(0),/dev/sdb2(0)
lv2 vg1 rwi-a-r--- 1.00g 100.00 lv2_rimage_0(0),lv2_rimage_1(0)
[lv2_rimage_0] vg1 iwi-aor--- 1.00g /dev/sdb3(1)
[lv2_rimage_1] vg1 iwi-aor--- 1.00g /dev/sdb4(1)
[lv2_rmeta_0] vg1 ewi-aor--- 4.00m /dev/sdb3(0)
[lv2_rmeta_1] vg1 ewi-aor--- 4.00m /dev/sdb4(0)

说明: Cpy%Sync 18.77该值是100%说明复制ok


格式化逻辑卷:
[root@k8s-master1 ~]# mkfs.ext4 /dev/vg1/lv2
挂载使用
[root@k8s-master1 ~]# mount /dev/vg1/lv2 /lv2/

[root@k8s-master1 ~]# touch /lv2/file{1..10}
[root@k8s-master1 ~]# mkdir /lv2/dir{1..10}


测试验证:
思路:损坏一个磁盘,测试数据是否在第二个物理卷中
1. 使用dd命令破坏一个物理卷
[root@k8s-master1 ~]# dd if=/dev/zero of=/dev/sdb3 bs=1M count=100

2. 再次查看物理卷发现有一个unknown Device pvs命令
[unknown] vg1 lvm2 a-m <2.00g 1016.00m

3. 将损坏的盘从卷组中移除
[root@k8s-master1 ~]# vgreduce vg1 --removemissing --force

4. 再次查看挂载点/lv2数据依然存在

自己也可以再次测试:
1. 再拿刚刚人为损坏的盘做成物理卷再次加入到vg1卷组中
[root@k8s-master1 /]# pvcreate /dev/sdb3

[root@k8s-master1 /]# vgextend vg1 /dev/sdb3


2. 修复
[root@k8s-master1 /]# lvconvert --repair /dev/vg1/lv2 /dev/sdb[34]

三、逻辑卷快照

快照的作用:保存做快照那一刻数据的状态,方便用户实现数据回滚,避免重要数据被覆盖。

快照的大小:快照需要占用卷组空间,快照的大小决定了允许有多少数据发生改变,如果制作快照时分配的容量与对应的逻辑卷相同,那么就允许逻辑卷中所有的数据发生改变。

COW:copy on write 当系统检测到做快照的逻辑卷当中的数据发生了改变,会在改变前将逻辑卷中的PE的数据复制到快照中的PE,然后再写入新的数据

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
43
44
45
1. 创建快照 (EXT4)
[root@k8s-master1 /]# lvcreate -L 200M -s -n lv1-snap /dev/vg1/lv1 给lv1逻辑卷创建快照
[root@k8s-master1 /]# mount -o ro /dev/vg1/lv1-snap /lv1-snap/ 挂载快照

[root@k8s-master1 /]# lvscan
ACTIVE Original '/dev/vg1/lv1' [2.00 GiB] inherit
ACTIVE Snapshot '/dev/vg1/lv1-snap' [200.00 MiB] inherit


[root@k8s-master1 /] dmsetup ls --tree
vg1-lv2--snap (252:5)
├─vg1-lv1--snap-cow (253:4) 保存原卷改变前的数据
│ └─ (8:17)
└─vg1-lv1-real (253:3) 真实的逻辑卷(原卷)
├─ (8:17)
└─ (8:18)
vg1-lv1 (253:2)
└─vg1-lv1-real (253:3)
├─ (8:17)
└─ (8:18)

2. 修改原卷的数据
[root@k8s-master1 /]# dd if=/dev/zero of=/lv1/test bs=1M count=30

3. 观察Snapshot
[root@k8s-master1 /]# lvs /dev/vg1/lv1-snap
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1-snap vg1 swi-aos--- 200.00m lv1 0.02
[root@k8s-master1 /]# lvs /dev/vg1/lv1-snap
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1-snap vg1 swi-aos--- 200.00m lv1 15.10


XFS:
[root@node1 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /lv1-snap
挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据


快照实现自动扩容:
/etc/lvm/lvm.conf
snapshot_autoextend_threshold = 80
snapshot_autoextend_percent = 20
//当快照使用到80%时,自动扩容20%;当snapshot_autoextend_threshold = 100表示关闭自动扩容

修改完成后建议重启