当前位置:   article > 正文

LVM 镜像卷配置与维护_lvm mirror

lvm mirror


前言

本文主要介绍有关 LVM 镜像卷的配置与维护,所谓镜像卷其实就是指上层写入的数据会镜像一份出来,形成两副本文件,类似于 RAID1,但是与 LVM RAID 的配置还是有一定区别的。当用作 LVM 镜像卷的磁盘发生故障时,不会影响到当前已经挂载的文件系统,并且还可以实现在线更换磁盘以及在线扩容。

在博主的环境中,一共有四块大小为 50GB 的磁盘,对应的盘符依次为 sda、sdb、sdc 和 sdd;其中 sda 与 sdb 磁盘会用来配置 LVM 镜像卷,而剩余的两块磁盘会被用来演示更换故障磁盘以及 LVM 镜像卷扩容。


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

下面这条命令中 100%FREE 意味着将 VG 中可分配的空间全部分配给当前的 LV;m1 意味着镜像一份数据,即双副本。

[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

从这里不难看出 sda 磁盘与 sdb 磁盘互为镜像。

[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                                    0.27             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

2. 修复 LVM 镜像卷

修复 LVM 镜像卷是指当用作 LVM 镜像卷的磁盘发生了故障,此时可以用同配置的新磁盘来更换从而到达修复的目的。本文使用 dd 命令将磁盘置零来模拟 sdb 磁盘故障,然后使用 sdc 磁盘进行更换。

2.1. 模拟磁盘故障

[root@iscsi-client1 ~]# dd if=/dev/zero of=/dev/sdb bs=1M count=1024 oflag=direct
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 34.4632 s, 31.2 MB/s
  • 1
  • 2
  • 3
  • 4

此时查看 LV 的信息,可以发现 Devices 这一列原本应该显示的是 /dev/sdb 磁盘,现在变成了 unknown 状态。

[root@iscsi-client1 ~]# lvs -a -o +devices
  WARNING: Device for PV vO3gn5-ipwA-EA20-oGQ1-Inzv-nvtn-3tvcXk not found or rejected by a filter.
  Couldn't find device with uuid vO3gn5-ipwA-EA20-oGQ1-Inzv-nvtn-3tvcXk.
  WARNING: Couldn't find all devices for LV vg01_mirror/lv01_mirror_rimage_1 while checking used and assumed devices.
  WARNING: Couldn't find all devices for LV vg01_mirror/lv01_mirror_rmeta_1 while checking used and assumed 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-aor-p-  49.99g                                    1.62             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-p-  49.99g                                                     [unknown](1)                                   
  [lv01_mirror_rmeta_0]  vg01_mirror ewi-aor---   4.00m                                                     /dev/sda(0)                                    
  [lv01_mirror_rmeta_1]  vg01_mirror ewi-aor-p-   4.00m                                                     [unknown](0)          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

尽管此时 sdb 磁盘已经损坏,但是丝毫不影响 LVM 镜像卷的挂载以及文件的读写。

[root@iscsi-client1 ~]# umount /data 
[root@iscsi-client1 ~]# mount /dev/vg01_mirror/lv01_mirror /data
[root@iscsi-client1 ~]# for i in {101..200};do echo $i >> /data/test.txt;done
[root@iscsi-client1 ~]# tail -n 5 /data/test.txt 
196
197
198
199
200
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.2. 更换故障磁盘

接下来我们使用 sdc 磁盘替换 sdb 磁盘并修复镜像卷(整个修复过程无需卸载文件系统)。

2.2.1. 删除已经失效的磁盘

[root@iscsi-client1 ~]# vgreduce --removemissing vg01_mirror --force
  WARNING: Device for PV vO3gn5-ipwA-EA20-oGQ1-Inzv-nvtn-3tvcXk not found or rejected by a filter.
  Couldn't find device with uuid vO3gn5-ipwA-EA20-oGQ1-Inzv-nvtn-3tvcXk.
  WARNING: Couldn't find all devices for LV vg01_mirror/lv01_mirror_rimage_1 while checking used and assumed devices.
  WARNING: Couldn't find all devices for LV vg01_mirror/lv01_mirror_rmeta_1 while checking used and assumed devices.
  Wrote out consistent volume group vg01_mirror.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

此时可以看到原本处于 unknown 状态的 Devices 信息变为空:

[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-aor-r-  49.99g                                    100.00           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 vwi-aor-r-  49.99g                                                                                                    
  [lv01_mirror_rmeta_0]  vg01_mirror ewi-aor---   4.00m                                                     /dev/sda(0)                                    
  [lv01_mirror_rmeta_1]  vg01_mirror ewi-aor-r-   4.00m                                                                  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.2.2. 向 VG 中添加新磁盘

无需先执行 pvcreate 操作,vgextend 操作会自动将 sdc 磁盘做成 PV。

[root@iscsi-client1 ~]# vgextend vg01_mirror /dev/sdc
  Physical volume "/dev/sdc" successfully created.
  Volume group "vg01_mirror" successfully extended
  • 1
  • 2
  • 3

2.2.3. 恢复镜像数量

lvconvert 工具一般是用于改变 LVM 逻辑卷的段类型(如线性、镜像等)或特性,其中 --repair 操作是为了恢复镜像的数量。

[root@iscsi-client1 ~]# lvconvert --repair -y vg01_mirror/lv01_mirror
  WARNING: Not using lvmetad because of repair.
  WARNING: Disabling lvmetad cache for repair command.
  Faulty devices in vg01_mirror/lv01_mirror successfully replaced.
  • 1
  • 2
  • 3
  • 4

2.2.4. 恢复镜像卷

--mirros(等价于 -m) 是为了将线性逻辑卷转换成为镜像卷;此处如果不先执行 --repair 操作而直接进行 --mirros 操作,则会提示 Can't change number of mirrors of degraded vg01_mirror/lv01_mirror. Please run "lvconvert --repair vg01_mirror/lv01_mirror" first. 错误信息。

[root@iscsi-client1 ~]# lvconvert -m1 -y /dev/vg01_mirror/lv01_mirror /dev/sda /dev/sdc
  WARNING: Not using lvmetad because a repair command was run.
  WARNING: vg01_mirror/lv01_mirror already has image count of 2.
  Logical volume vg01_mirror/lv01_mirror successfully converted.
  • 1
  • 2
  • 3
  • 4

此时可以看到镜像卷已经被修复。

[root@iscsi-client1 ~]# lvs -a -o +devices
  WARNING: Not using lvmetad because a repair command was run.
  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-aor---  49.99g                                    0.68             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/sdc(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/sdc(0) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. 扩容 LVM 镜像卷

特别说明:第3章节的内容与第2章节无关,可以理解为是紧接着第1章节之后进行的扩容操作;下面会将 sdc 和 sdd 磁盘扩容到 VG 中。

3.1. 新建 PV

[root@iscsi-client1 ~]# pvcreate /dev/sd[c-d]
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.
  • 1
  • 2
  • 3

3.2. 扩容 VG 空间

[root@iscsi-client1 ~]# vgextend vg01_mirror /dev/sdc /dev/sdd
  Volume group "vg01_mirror" successfully extended
  • 1
  • 2

3.3. 扩容 LV 空间

将 VG 的剩余可用空间全部扩容给 LV。

[root@iscsi-client1 ~]# lvextend -l +100%FREE vg01_mirror/lv01_mirror /dev/sdc /dev/sdd
  Extending 2 mirror images.
  Size of logical volume vg01_mirror/lv01_mirror changed from 49.99 GiB (12798 extents) to <99.99 GiB (25597 extents).
  Logical volume vg01_mirror/lv01_mirror successfully resized.
  • 1
  • 2
  • 3
  • 4

此时可以看到镜像卷的组成发生了变化,即 sda && sdc 磁盘与 sdb && sdd 磁盘互为镜像。

[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-aor--- <99.99g                                    1.73             lv01_mirror_rimage_0(0),lv01_mirror_rimage_1(0)
  [lv01_mirror_rimage_0] vg01_mirror Iwi-aor--- <99.99g                                                     /dev/sda(1)                                    
  [lv01_mirror_rimage_0] vg01_mirror Iwi-aor--- <99.99g                                                     /dev/sdc(0)                                    
  [lv01_mirror_rimage_1] vg01_mirror Iwi-aor--- <99.99g                                                     /dev/sdb(1)                                    
  [lv01_mirror_rimage_1] vg01_mirror Iwi-aor--- <99.99g                                                     /dev/sdd(0)                                    
  [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

3.4. 扩容文件系统

这里需要注意的是,不同类型的文件系统,其通知文件系统进行空间调整的命令是不一样的;博主这里是 XFS 文件系统,因此使用的 xfs_growfs 命令,如果是 EXT4 系统,那么就要使用 resize2fs 命令了。

[root@iscsi-client1 ~]# mount |grep data
/dev/mapper/vg01_mirror-lv01_mirror on /data type xfs (rw,relatime,attr2,inode64,noquota)
[root@iscsi-client1 ~]# xfs_growfs /dev/vg01_mirror/lv01_mirror
  • 1
  • 2
  • 3

此时文件系统的 Size 发生了改变(从 50GB 扩容到了 100GB)。

[root@iscsi-client1 ~]# df -Th
Filesystem                          Type      Size  Used Avail Use% Mounted on
devtmpfs                            devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs                               tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                               tmpfs     3.9G   12M  3.9G   1% /run
tmpfs                               tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root               xfs        84G  8.2G   76G  10% /
/dev/loop0                          iso9660   4.3G  4.3G     0 100% /mnt/cdrom
/dev/vda2                           xfs       497M  163M  335M  33% /boot
tmpfs                               tmpfs     795M   12K  795M   1% /run/user/42
tmpfs                               tmpfs     795M     0  795M   0% /run/user/0
/dev/mapper/vg01_mirror-lv01_mirror xfs       100G   33M  100G   1% /data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

总结

博主也是因为项目有需要才用到了 LVM 镜像卷,因此对这块内容进行了一些了解。以上若有不妥之处,欢迎大家指正。


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

闽ICP备14008679号