Mirroring an Existing LVM Volume

Mirroring an Existing LVM Volume is pretty straightforward. Assuming you have enough space for it on separate physical volumes, it is a single command. According to the documentation, you will find two varieties. One is just called mirror, the other raid1. The documentation recommends using raid1, so that is what I will cover.

There are a few reasons you may wish to use an LVM mirror. One is protecting data from drive failures. Another is better read performance, as your system can read different data from different devices.

Creating the mirror is simple. Assuming you have enough space on another PV for the LV in question, it is a single command.

# lvconvert --type raid1 -m 1 /dev/mapper/volume-name

The -m 1 part means the number of additional copies of the LV should be maintained. Using -m 1 means you will have TWO copies of your data. If you use -m 2, you will have THREE copies.

As usual with my guides, I will work through an example.

Example Scenario

I am going to convert a LV called zabbix on a VG called pgdata into a raid1 logical volume. First, I will add a disk to the volume group. Then I will covert the LV.

Here is the starting configuration:

# pvdisplay -s
  Device "/dev/sdb" has a capacity of 520.00 MiB
# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0 19.1G  0 part /
├─sda2            8:2    0    1K  0 part 
└─sda5            8:5    0  880M  0 part [SWAP]
sdb               8:16   0    1G  0 disk 
└─pgdata-zabbix 254:0    0  500M  0 lvm  /zabbix
sdc               8:32   0    1G  0 disk 
sdd               8:48   0    1G  0 disk 
sr0              11:0    1 1024M  0 rom  
# vgdisplay -s
  "pgdata" 1020.00 MiB [500.00 MiB used / 520.00 MiB free]
# lvs -o lv_name,vg_name,lv_size,lv_layout
  LV     VG     LSize   Layout    
  zabbix pgdata 500.00m linear   

As you can see, there is currently one PV, sdb.

Create the Mirror

If you don’t have a device with sufficient space, add one. As you can see, when I tried to do it without sufficient space, LVM outputs an error. In the example, I started with a single PV, so I add another:

# lvconvert --type raid1 -y -m 1 /dev/mapper/pgdata-zabbix
  Insufficient suitable allocatable extents for logical volume : 126 more required
# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
# vgextend pgdata /dev/sdc
  Volume group "pgdata" successfully extended

Now I modify the LV so it is a raid1:

# lvconvert --type raid1  -m 1 /dev/mapper/pgdata-zabbix 
Are you sure you want to convert linear LV pgdata/zabbix to raid1 with 2 images
enhancing resilience? [y/n]: y
  Logical volume pgdata/zabbix successfully converted.
# lvs -o lv_name,vg_name,lv_size,lv_layout
  LV     VG     LSize   Layout    
  zabbix pgdata 500.00m raid,raid1
# lsblk 
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                        8:0    0   20G  0 disk 
├─sda1                     8:1    0 19.1G  0 part /
├─sda2                     8:2    0    1K  0 part 
└─sda5                     8:5    0  880M  0 part [SWAP]
sdb                        8:16   0    1G  0 disk 
├─pgdata-zabbix_rmeta_0  254:5    0    4M  0 lvm  
│ └─pgdata-zabbix        254:4    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_0 254:6    0  500M  0 lvm  
  └─pgdata-zabbix        254:4    0  500M  0 lvm  /zabbix
sdc                        8:32   0    1G  0 disk 
├─pgdata-zabbix_rmeta_1  254:2    0    4M  0 lvm  
│ └─pgdata-zabbix        254:4    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_1 254:3    0  500M  0 lvm  
  └─pgdata-zabbix        254:4    0  500M  0 lvm  /zabbix
sdd                        8:48   0    1G  0 disk 
sr0                       11:0    1 1024M  0 rom  

Notice how the zabbix LV is now showing on two different block devices.

Adding/Removing Mirrors

If you wish to add another device to create a three way mirror, just follow the same steps and add modify the copy count:

# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.
# vgextend pgdata /dev/sdd
  Volume group "pgdata" successfully extended
# lvconvert --type raid1 -y -m 2 /dev/mapper/pgdata-zabbix
  Logical volume pgdata/zabbix successfully converted.
# lsblk 
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                        8:0    0   20G  0 disk 
├─sda1                     8:1    0 19.1G  0 part /
├─sda2                     8:2    0    1K  0 part 
└─sda5                     8:5    0  880M  0 part [SWAP]
sdb                        8:16   0    1G  0 disk 
├─pgdata-zabbix_rmeta_0  254:1    0    4M  0 lvm  
│ └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_0 254:2    0  500M  0 lvm  
  └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
sdc                        8:32   0    1G  0 disk 
├─pgdata-zabbix_rmeta_1  254:3    0    4M  0 lvm  
│ └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_1 254:4    0  500M  0 lvm  
  └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
sdd                        8:48   0    1G  0 disk 
├─pgdata-zabbix_rmeta_2  254:5    0    4M  0 lvm  
│ └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_2 254:6    0  500M  0 lvm  
  └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
sr0                       11:0    1 1024M  0 rom  

You can remove mirrors too:

# lvconvert --type raid1 -y -m 1 /dev/mapper/pgdata-zabbix
  Logical volume pgdata/zabbix successfully converted.
# lsblk 
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                        8:0    0   20G  0 disk 
├─sda1                     8:1    0 19.1G  0 part /
├─sda2                     8:2    0    1K  0 part 
└─sda5                     8:5    0  880M  0 part [SWAP]
sdb                        8:16   0    1G  0 disk 
├─pgdata-zabbix_rmeta_0  254:1    0    4M  0 lvm  
│ └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_0 254:2    0  500M  0 lvm  
  └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
sdc                        8:32   0    1G  0 disk 
├─pgdata-zabbix_rmeta_1  254:3    0    4M  0 lvm  
│ └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
└─pgdata-zabbix_rimage_1 254:4    0  500M  0 lvm  
  └─pgdata-zabbix        254:0    0  500M  0 lvm  /zabbix
sdd                        8:48   0    1G  0 disk 
sr0                       11:0    1 1024M  0 rom  

If you wish, you can even go back to a simple linear volume:

# lvconvert --type linear -y /dev/mapper/pgdata-zabbix
  Logical volume pgdata/zabbix successfully converted.
# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0 19.1G  0 part /
├─sda2            8:2    0    1K  0 part 
└─sda5            8:5    0  880M  0 part [SWAP]
sdb               8:16   0    1G  0 disk 
└─pgdata-zabbix 254:0    0  500M  0 lvm  /zabbix
sdc               8:32   0    1G  0 disk 
sdd               8:48   0    1G  0 disk 
sr0              11:0    1 1024M  0 rom  

References

See Also

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值