创建高可用逻辑卷

2022-09-15 15:33:04 浏览数 (1)

一、逻辑卷条带化:

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

代码语言:javascript复制
创建物理卷
[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@zutuanxue ~]# lvcreate -n lv1 -L 1G vg01 -i 2 /dev/sdb{1,2}

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


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


测试:
[root@zutuanxue ~]# dnf install sysstat -y
[root@zutuanxue ~]# iostat -m -d /dev/sdb[12] 2 
-d 查看磁盘
-m 以什么速度显示,每秒M
 2 每隔2s显示一次 
   如果后面还有数字则代表总共显示多少次
   
[root@zutuanxue ~]# dd if=/dev/zero of=/lv1/test bs=1M count=1000    模拟写数据
[root@zutuanxue ~]# 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

二、逻辑卷实现镜像

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

代码语言:javascript复制
当前环境:
[root@zutuanxue ~]# lsblk
├─sdb3        8:19   0    2G  0 part 
├─sdb4        8:20   0    2G  0 part 


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

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


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

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

[root@zutuanxue ~]# lvs -a -o  devices
[root@zutuanxue ~]# 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@zutuanxue ~]# mkfs.ext4 /dev/vg1/lv2
挂载使用
[root@zutuanxue ~]# mount /dev/vg1/lv2 /lv2/

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

 
测试验证:
思路:损坏一个磁盘,测试数据是否在第二个物理卷中
1. 使用dd命令破坏一个物理卷
[root@zutuanxue ~]# 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@zutuanxue ~]# vgreduce vg1 --removemissing --force

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

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


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

三、逻辑卷快照

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

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

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

代码语言:javascript复制
1. 创建快照 (EXT4)
[root@zutuanxue /]# lvcreate -L 200M -s -n lv1-snap /dev/vg1/lv1	给lv1逻辑卷创建快照
[root@zutuanxue /]# mount -o ro /dev/vg1/lv1-snap /lv1-snap/	挂载快照

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


[root@zutuanxue /] 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@zutuanxue /]# dd if=/dev/zero of=/lv1/test bs=1M count=30

3. 观察Snapshot
[root@zutuanxue /]# 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@zutuanxue /]# 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表示关闭自动扩容

修改完成后建议重启

0 人点赞