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 파일 정보 입니다.

/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
로그인하면 댓글을 남길 수 있습니다.
  • drbd_에서_lvm_사용시_파일시스템_및_디스크_확장_방법.txt
  • 마지막으로 수정됨: 2016/06/02 11:05
  • 저자 koov