当前位置:   article > 正文

RHEL7 配置 LVM Mirror 创建共享卷

lvm mirror


前言

某用户场景下使用两台存储设备为前端两台业务主机提供存储资源,用户希望各有一份数据落入到对应的存储设备中,并且当其中某一台业务主机发生故障时,可以快速在另外一台主机上继续启用业务;那么配置 LVM Mirror 创建共享卷不失为是一种解决方法。

本文将通过一台 iSCSI Server 提供多个块设备给两台业务主机使用,以此来模拟用户场景,目前两台业务主机识别到的块设备信息如下所示:

[root@iscsi-client1 ~]# for i in {a..d};do echo "/dev/sd$i  `/lib/udev/scsi_id -g -d /dev/sd$i`";done
/dev/sda  36001405775772069d764482a66301992
/dev/sdb  360014058bfdc6d5e5e34b88ad4cdcd88
/dev/sdc  360014056d29955d120f4783ad95480ef
/dev/sdd  36001405795c8999ccd34cf7920d0cf91

[root@iscsi-client2 ~]# for i in {a..d};do echo "/dev/sd$i  `/lib/udev/scsi_id -g -d /dev/sd$i`";done
/dev/sda  36001405775772069d764482a66301992
/dev/sdb  360014058bfdc6d5e5e34b88ad4cdcd88
/dev/sdc  360014056d29955d120f4783ad95480ef
/dev/sdd  36001405795c8999ccd34cf7920d0cf91
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

通过上面的信息不难发现,两台业务主机都识别到了 sda-sdd 四块磁盘,实际上就是 iSCSI Server 通过网络形式将自己的四块磁盘同时映射给两台业务主机;其中 sda 设备和 sdb 设备将模拟用户场景中两台存储设备各自映射的磁盘。

我们需要将 sda 设备和 sdb 设备做成 LVM Mirror 为应用程序提供文件系统,默认我们在业务主机1(iscsi-client1)上激活 VG 并使用,当业务主机1发生故障时,可以快速在业务主机2(iscsi-client2)上激活 VG 并使用,以确保业务迅速恢复,逻辑示意图如下所示:

在这里插入图片描述


1. 配置 LVM 镜像卷

1.1. 创建 PV

[root@iscsi-client1 ~]# pvcreate /dev/sda /dev/sdb
  Physical volume "/dev/sda" successfully created.
  Physical volume "/dev/sdb" successfully created.
  • 1
  • 2
  • 3

1.2. 创建 VG

[root@iscsi-client1 ~]# vgcreate vg01_mirror /dev/sda /dev/sdb
  Volume group "vg01_mirror" successfully created
  • 1
  • 2

1.3. 创建 LV

[root@iscsi-client1 ~]# lvcreate -n lv01_mirror -m1 -l 100%FREE vg01_mirror /dev/sda /dev/sdb
  Logical volume "lv01_mirror" created.
  • 1
  • 2

1.4. 查看 LV

[root@iscsi-client1 ~]# lvs -a -o +devices
  LV                     VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices                                        
  root                   rhel        -wi-ao---- <83.51g                                                     /dev/vda3(4096)                                
  swap                   rhel        -wi-ao----  16.00g                                                     /dev/vda3(0)                                   
  lv01_mirror            vg01_mirror rwi-a-r---  49.99g                                    1.49             lv01_mirror_rimage_0(0),lv01_mirror_rimage_1(0)
  [lv01_mirror_rimage_0] vg01_mirror Iwi-aor---  49.99g                                                     /dev/sda(1)                                    
  [lv01_mirror_rimage_1] vg01_mirror Iwi-aor---  49.99g                                                     /dev/sdb(1)                                    
  [lv01_mirror_rmeta_0]  vg01_mirror ewi-aor---   4.00m                                                     /dev/sda(0)                                    
  [lv01_mirror_rmeta_1]  vg01_mirror ewi-aor---   4.00m                                                     /dev/sdb(0)              
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.5. 格式化文件系统

[root@iscsi-client1 ~]# mkfs.xfs /dev/vg01_mirror/lv01_mirror
  • 1

1.6. 创建挂载点并挂载

[root@iscsi-client1 ~]# mkdir /data
[root@iscsi-client1 ~]# mount /dev/vg01_mirror/lv01_mirror /data
  • 1
  • 2

1.7. 写入测试数据

[root@iscsi-client1 ~]# for i in {1..100};do echo $i >> /data/test.txt;done
  • 1

2. 切换 LVM 共享卷

2.1. 计划内切换

所谓计划内切换,即管理员为了验证或者演练所执行的计划内的变更,而不是在发生异常后进行的紧急变更。

2.1.1. 检查 I/O 流量

既然是计划内切换,那么第一步应该是停用和当前 /data 文件系统有关的应用或业务,保证上层没有 I/O 继续写入;我们可以使用 lsof 来检查当前是否有进程在占用此文件系统。

[root@iscsi-client1 ~]# lsof /data
  • 1

2.1.2. 节点一卸载挂载点

当确认没有 I/O 继续写入 /data 文件系统,此时可以进行卸载操作。

[root@iscsi-client1 ~]# umount /data
  • 1

2.1.3. 节点一禁用 LV

[root@iscsi-client1 ~]# lvchange -an /dev/vg01_mirror/lv01_mirror
[root@iscsi-client1 ~]# lvs -a -o +devices
  LV                     VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices                                        
  root                   rhel        -wi-ao---- <83.51g                                                     /dev/vda3(4096)                                
  swap                   rhel        -wi-ao----  16.00g                                                     /dev/vda3(0)                                   
  lv01_mirror            vg01_mirror rwi---r---  49.99g                                                     lv01_mirror_rimage_0(0),lv01_mirror_rimage_1(0)
  [lv01_mirror_rimage_0] vg01_mirror Iwi---r---  49.99g                                                     /dev/sda(1)                                    
  [lv01_mirror_rimage_1] vg01_mirror Iwi---r---  49.99g                                                     /dev/sdb(1)                                    
  [lv01_mirror_rmeta_0]  vg01_mirror ewi---r---   4.00m                                                     /dev/sda(0)                                    
  [lv01_mirror_rmeta_1]  vg01_mirror ewi---r---   4.00m                                                     /dev/sdb(0)    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.1.4. 节点一禁用 VG

[root@iscsi-client1 ~]# vgchange -an vg01_mirror 
  0 logical volume(s) in volume group "vg01_mirror" now active
  • 1
  • 2

2.1.5. 节点一导出 VG

[root@iscsi-client1 ~]# vgexport vg01_mirror 
  Volume group "vg01_mirror" successfully exported
  • 1
  • 2

2.1.6. 节点二导入 VG

[root@iscsi-client2 ~]# vgimport vg01_mirror
  Volume group "vg01_mirror" successfully imported
  • 1
  • 2

2.1.7. 节点二激活 VG

[root@iscsi-client2 ~]# vgchange -ay vg01_mirror
  1 logical volume(s) in volume group "vg01_mirror" now active
[root@iscsi-client2 ~]# lvs -a -o +devices
  LV                     VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices                                        
  root                   rhel        -wi-ao---- <83.51g                                                     /dev/vda3(4096)                                
  swap                   rhel        -wi-ao----  16.00g                                                     /dev/vda3(0)                                   
  lv01_mirror            vg01_mirror rwi-a-r---  49.99g                                    71.61            lv01_mirror_rimage_0(0),lv01_mirror_rimage_1(0)
  [lv01_mirror_rimage_0] vg01_mirror Iwi-aor---  49.99g                                                     /dev/sda(1)                                    
  [lv01_mirror_rimage_1] vg01_mirror Iwi-aor---  49.99g                                                     /dev/sdb(1)                                    
  [lv01_mirror_rmeta_0]  vg01_mirror ewi-aor---   4.00m                                                     /dev/sda(0)                                    
  [lv01_mirror_rmeta_1]  vg01_mirror ewi-aor---   4.00m                                                     /dev/sdb(0)       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.1.8. 节点二创建挂载点并挂载

[root@iscsi-client2 ~]# mkdir /data
[root@iscsi-client2 ~]# mount /dev/vg01_mirror/lv01_mirror /data
  • 1
  • 2

2.1.9. 节点二读写测试

[root@iscsi-client2 ~]# ls -ltr /data/
total 4
-rw-r--r-- 1 root root 292 Sep 21 15:37 test.txt
[root@iscsi-client2 ~]# for i in {101..200};do echo $i >> /data/test.txt;done
[root@iscsi-client2 ~]# tail -n 10 /data/test.txt 
191
192
193
194
195
196
197
198
199
200
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2.2. 计划外切换

直接将节点二关机,以此模拟生产业务主机宕机。

2.2.1. 节点二关机

[root@iscsi-client2 ~]# shutdown -h now
  • 1

2.2.2. 节点一导入 VG

[root@iscsi-client1 ~]# vgimport vg01_mirror
  Volume group "vg01_mirror" is not exported
  • 1
  • 2

2.2.3. 节点一激活 VG

[root@iscsi-client1 ~]# vgchange -ay vg01_mirror
  1 logical volume(s) in volume group "vg01_mirror" now active
  • 1
  • 2

2.2.4. 节点一挂载文件系统

[root@iscsi-client1 ~]# mount /dev/vg01_mirror/lv01_mirror /data
  • 1

总结

用户的这种场景主要是为了提高架构的可靠性和高可用性,当后端任意一台存储设备出现故障,或者前端任意一台业务主机出现故障,都可以快速恢复业务。

博主目前接触到要使用 LVM Mirror 的场景并不多,在这种高可用场景中,规划设计的时候可以考虑存储双活方案,或者应用本身可以提供双活或主备的切换方案。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/674590
推荐阅读
相关标签
  

闽ICP备14008679号