본문 바로가기

Tech/LVM

LVM 볼륨 미러링

개요

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