DRBD 에서 LVM 사용시 파일시스템 및 디스크 확장 방법
용어 설명
DRBD on LVM은 DRBD가 Backing Device로 LVM(Logical Volume Manager)의 LV(Logical Volume)을 사용하는 경우를 말합니다.
LVM on DRBD은 DRBD가 Backing Device로 Hard Disk Device(예, sda# 등)를 사용하고, DRBD를 LVM의 PV(Physical Volume)로 구성하는 경우를 말합니다.
DRBD가 Backing Device로 LVM의 LV를 사용(DRBD on LVM)할 경우, resize명령을 이용하여 볼륨 사이즈를 확장하게되면 DRBD 입장에서는 Backing Device의 사이즈가 늘어나게 됩니다. 이는 복제되고 있는 볼륨에 복제영역이 추가되는 것을 의미합니다.
DRBD의 meta data에는 DRBD device의 사이즈 정보도 포함되어 있기 때문에, DBRD의 meta data 갱신이 필요하고 drbdadm resize는 meta data를 늘어난 LV 사이즈로 갱신합니다. Secondary Node도 마찬가지의 이유로 동일 작업(lvextend , drbdadm resize)이 수행되어야 합니다.
이 장에서는 LVM 의 LV를 Backing Device 로 사용하는 DRBD 환경에서 온라인 중에 파일시스템을 확장하는 방법에 대해 다음의 예제에서 상세하게 설명합니다.
(다음 예제에서 운영 서버는 'DRBD1', 대기 서버는 'DRBD2', 리소스 이름은 r1 이란 이름으로 MCCS에 등록되어 있습니다. LV 사이즈를 1G에서 2G로 증가시키고, 동일사이즈를 DRBD에 인식시키는 예시입니다. )
예시된 /etc/drbd.conf 파일 정보 입니다.
resource r1 { protocol C; disk { on-io-error detach; } on DRBD1 { device /dev/drbd0; disk /dev/vg1/lv1; address 100.100.110.1:7791; flexible-meta-disk internal; } on DRBD2 { device /dev/drbd0; disk /dev/vg1/lv1; address 100.100.110.2:7791; flexible-meta-disk internal; } }
예시된 LVM 구성정보 입니다.
LVM 구성정보
--- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 3.00 GiB PE Size 4.00 MiB Total PE 767 Alloc PE / Size 256 / 1.00 GiB Free PE / Size 511 / 2.00 GiB VG UUID a4AlxN-1MPk-lAJ0-0JJH-tTDz-QlFv-he1TpI --- Logical volume --- LV Name /dev/vg1/lv1 VG Name vg1 LV UUID kwmHaH-bOdX-w3D2-Ktcq-CuZ8-u944-37NCNc LV Write Access read/write LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3 --- Physical volumes --- PV Name /dev/sdb PV UUID FdalSR-ckDD-xk1J-5g0t-7pKU-f18N-IM7oyT PV Status allocatable Total PE / Free PE 767 / 511
1. DRBD Device가 LV 를 Backing Device로 사용하고 있으므로, 사이즈를 늘려주기 위해서는 LV의 사이즈를 늘려주어야 합니다. 이때, 양쪽 노드에서 LV 사이즈를 늘려주어야 합니다.
2. DRBD1 노드에서 Online 중에 LV의 사이즈를 1G에서 2G로 늘립니다.
[root@DRBD1 ~]# lvextend -L 2G /dev/vg1/lv1
3. DRBD1 노드에서 늘어난 LV 사이즈를 확인합니다.
[root@DRBD1 ~]# lvdisplay /dev/vg1/lv1 --- Logical volume --- LV Name /dev/vg1/lv1 VG Name vg1 LV UUID kwmHaH-bOdX-w3D2-Ktcq-CuZ8-u944-37NCNc LV Write Access read/write LV Status available # open 0 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3
4. DRBD2 노드에서 LV의 사이즈를 1G에서 2G로 늘립니다.
[root@DRBD2 ~]# lvextend -L 2G /dev/vg1/lv1
5. DRBD2 노드에서 늘어난 LV 사이즈를 확인합니다.
[root@DRBD2 ~]# lvdisplay /dev/vg1/lv1 --- Logical volume --- LV Name /dev/vg1/lv1 VG Name vg1 LV UUID c8h9wm-mSiC-Jhq8-i9BT-0Bd8-fuc6-DtJ3IY LV Write Access read/write LV Status available # open 0 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3
6. DRBD1노드에서 DRBD에게 늘어난 LV의 사이즈를 인식시켜 주는 작업을 진행합니다.
[root@DRBD1 ~]# drbdadm resize r1
7. DRBD 메타데이터에도 LV의 사이즈가 늘어난 상태로 인식이 되고, 증가된사이즈 만큼 resync가 진행됩니다.
[root@DRBD2 ~]# cat /proc/drbd version: 8.3.13 (api:88/proto:86-96) GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by dag@Build64R6, 2012-05-07 11:52:13 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----- ns:365400 nr:0 dw:0 dr:374512 al:0 bm:22 lo:1 pe:29 ua:64 ap:0 ep:1 wo:b oos:1735324 [==>.................] sync'ed: 17.4% (1735324/2097052)K finish: 0:01:27 speed: 19,872 (17,224) K/sec
8. Resync가 완료되면, DRBD2노드(Target)에서도 동일하게 DRBD의 meta data 갱신을 진행합니다.
[root@DRBD2~]# drbdadm resize r1
9. 양쪽 노드 모두에 LV의 사이즈가 증가되고, DBRD가 Resize된 정보 까지 모두 인식이 되었지만, 파일시스템에서는 2G로 인식하지 않고, 여전히 1G로 인식됩니다.
[root@DRBD1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_drbd1-lv_root 15G 4.7G 9.0G 35% / tmpfs 499M 88K 499M 1% /dev/shm /dev/sda1 485M 33M 428M 7% /boot /dev/drbd0 1008M 34M 924M 4% /test
10. DRBD1노드에서 resize2fs 명령을 이용하여, 파일시스템에 늘어난 사이즈를 인식시킵니다.
[root@DRBD1 ~]# resize2fs /dev/drbd0 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/drbd0 is mounted on /test; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/drbd0 to 524288 (4k) blocks. The filesystem on /dev/drbd0 is now 524288 blocks long.
11. DRBD1 노드에서 파일시스템 사이즈를 최종 확인합니다.
[root@DRBD1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_drbd1-lv_root 15G 4.7G 9.0G 35% / tmpfs 499M 88K 499M 1% /dev/shm /dev/sda1 485M 33M 428M 7% /boot /dev/drbd0 2.0G 34M 1.9G 2% /test