개요
LVM 에도 RAID(Redundant Array of Indepent Disks) 처럼 LV(Logical Volume) 을 묶는 방법이 있다. 오늘은 RAID 1 처럼 병렬로 묶어서 복사본을 만들 수 있는 방법에 대해서 알아보자. VG(Volume Group)에서 두 개 이상의 PV(Physical Volume)을 하나의 LV로 만드는 기술이다.
1개의 PV 는 원본 역할을 하고, 나머지 PV 들은 사본 역할을 한다. 그래서 원본이나 사본이 장애가 났을 때, 데이터를 유지하고, 장애가 난 디스크만 교체하면 데이터를 잃지 않기 때문에 중요한 데이터들은 미러링을 해서 보관하는 편이다. 대신 단점으로는 사본 개수를 늘리면 안정성이 올라가지만 원본 LV의 크기*사본 수 만큼 추가로 볼륨 쓰기에 용량적인 측면에서 비효율적이다.
기본 미러링
먼저 미러링 할 볼륨 그룹을 찾는다.
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
simple-vg 2 0 0 wz--n- <3.64t <3.64t
ubuntu-vg 1 1 0 wz--n- 229.83g 129.83g
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- 229.83g 129.83g
/dev/sdb simple-vg lvm2 a-- <1.82t <1.82t
/dev/sdc simple-vg lvm2 a-- <1.82t <1.82t
이전 포스팅에서 만들었던 simple-vg 에 /dev/sd[b,c] 를 묶인 것을 확인할 수 있다. simple-vg 에 mirrored-lv 를 한 번 만들어보자. lvcreate -L {size} -m{사본 개수} -n {LV name} {VG name} 으로 만들면 된다.
$ sudo lvcreate -L 50G -m1 -n mirrored-lv simple-vg
Logical volume "mirrored-lv" created.
lvs 를 통해서 확인해보면 볼륨이 잘 만들어진게 보인다. 그런데 Cpy%Sync 컬럼에 숫자가 표시된 것을 확인 할 수 있다. 이 것이 의미하는 것은 미러링된 볼륨이 서로를 동기화한 비율을 나타낸다. 일정 시간이 지나고 100이 되면 동기화가 끝나고, 한쪽이 장애가 나더라도 복구가 가능해진다.
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mirrored-lv simple-vg rwi-a-r--- 50.00g 3.94
ubuntu-lv ubuntu-vg -wi-ao---- 100.00g
다시 한 번 보면 동기화 된 비율이 늘어난 것을 확인 할 수 있다.
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mirrored-lv simple-vg rwi-a-r--- 50.00g 37.13
ubuntu-lv ubuntu-vg -wi-ao---- 100.00g
PV를 지정하는 미러링
VG 안에 여러개의 PV가 있을 경우 특정 PV 를 지정해서 미러링을 할 수도 있다. 방법은 간단히 위에서 작성했던 명령어 뒤에 원본과 사본들의 PV를 추가로 지정해주면 된다. lvcreate -L {size} -m{사본 개수} -n {LV name} {VG name} {원본} {사본} {사본} ... 으로 만들면 된다.
$ sudo lvcreate -L 50G -m1 -n mirrored2-lv simple-vg /dev/sdb /dev/sdc
Logical volume "mirrored2-lv" created.
이전과 똑같이 잘 생성 된 것을 확인 할 수 있다.
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mirrored-lv simple-vg rwi-a-r--- 50.00g 100.00
mirrored2-lv simple-vg rwi-a-r--- 50.00g 2.48
ubuntu-lv ubuntu-vg -wi-ao---- 100.00g
또한 어떤 PV 에 맵핑 됐는지 아래 명령어로 알 수 있다. 각 미러 LV 는 raid1 type으로 확인 할 수 있고, 볼륨이 /dev/sd[b,c] 에 맵핑 되어있는 것을 확인할 수 있다. 추가적으로 메타데이터도 미러링 돼서 저장된 것을 확인 할 수 있다.
$ sudo lvs -a -o +devices --segments
LV VG Attr #Str Type SSize Devices
mirrored-lv simple-vg rwi-a-r--- 2 raid1 50.00g mirrored-lv_rimage_0(0),mirrored-lv_rimage_1(0)
[mirrored-lv_rimage_0] simple-vg iwi-aor--- 1 linear 50.00g /dev/sdb(1)
[mirrored-lv_rimage_1] simple-vg iwi-aor--- 1 linear 50.00g /dev/sdc(1)
[mirrored-lv_rmeta_0] simple-vg ewi-aor--- 1 linear 4.00m /dev/sdb(0)
[mirrored-lv_rmeta_1] simple-vg ewi-aor--- 1 linear 4.00m /dev/sdc(0)
mirrored2-lv simple-vg rwi-a-r--- 2 raid1 50.00g mirrored2-lv_rimage_0(0),mirrored2-lv_rimage_1(0)
[mirrored2-lv_rimage_0] simple-vg Iwi-aor--- 1 linear 50.00g /dev/sdb(12802)
[mirrored2-lv_rimage_1] simple-vg Iwi-aor--- 1 linear 50.00g /dev/sdc(12802)
[mirrored2-lv_rmeta_0] simple-vg ewi-aor--- 1 linear 4.00m /dev/sdb(12801)
[mirrored2-lv_rmeta_1] simple-vg ewi-aor--- 1 linear 4.00m /dev/sdc(12801)
ubuntu-lv ubuntu-vg -wi-ao---- 1 linear 100.00g /dev/sda3(0)
결론
미러링을 사용하면 데이터를 보다 안전하게 지킬 수 있기 때문에 중요한 데이터들은 미러링을 해서 보관하는 것이 좋다.
'Tech > LVM' 카테고리의 다른 글
| Linux 디스크 포맷과 마운트 (0) | 2022.07.01 |
|---|---|
| LVM을 활용해 논리적 볼륨을 구성해보자 (0) | 2022.06.30 |
| LVM (Logical Volume Manager) 개념 (0) | 2022.06.29 |