DRBDの練習 4 〜LVM / DRBD / LVM〜
DRBDの下位デバイスと、DRBDのデバイスにLVMを使ってみる。
DRBDの公式ドキュメントを参考に作業する。
まずはDRBDの下位デバイスとして使う論理ボリューム vg01/r0
を作成する。
drbd1# pvcreate /dev/vdb Physical volume "/dev/vdb" successfully created. drbd1# pvs PV VG Fmt Attr PSize PFree /dev/vda5 drbd1-vg lvm2 a-- <4.52g 0 /dev/vdb vg01 lvm2 a-- <10.00g <9.51g drbd1# vgcreate vg01 /dev/vdb Volume group "vg01" successfully created drbd1# vgs vg01 VG #PV #LV #SN Attr VSize VFree vg01 1 1 0 wz--n- <10.00g <9.51g drbd1# lvcreate -n r0 -L 500M vg01 Logical volume "r0" created. drbd1# lvs vg01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert r0 vg01 -wi-ao---- 500.00m
全く同じことをdrbd2
でも行う。
続いて、DRBDの設定ファイルを編集する。
disk
には先ほど作成した論理ボリューム /dev/vg01/r0
を指定する。
resource r0 { on drbd1 { device /dev/drbd1; disk /dev/vg01/r0; address 192.168.122.166:7776; meta-disk internal; } on drbd2 { device /dev/drbd1; disk /dev/vg01/r0; address 192.168.122.45:7776; meta-disk internal; } }
以前の記事と同様に、リソースの初回有効化を行う。
drbd1# drbdadm create-md r0 drbd1# drbdadm up r0
ここまではdrbd2
でも実行する。
ここからはdrbd1
だけで実行。
drbd1# drbdadm new-current-uuid --clear-bitmap r0/0 drbd1# drbdadm primary r0
これで、論理ボリューム vg01/r0
が、DRBDで同期される。
次に、今使えるようになった/dev/drbd1
をLVMのPVとして、その上にVG vg_drbd
, LV lv0
を作る。
drbd1# pvcreate /dev/drbd1 Physical volume "/dev/drbd1" successfully created. drbd1# pvs PV VG Fmt Attr PSize PFree /dev/drbd1 vg_drbd lvm2 a-- 496.00m 496.00m /dev/vda5 drbd1-vg lvm2 a-- <4.52g 0 /dev/vdb vg01 lvm2 a-- <10.00g <9.51g drbd1# vgcreate vg_drbd /dev/drbd1 Volume group "vg_drbd" successfully created drbd1# vgs vg_drbd VG #PV #LV #SN Attr VSize VFree vg_drbd 1 0 0 wz--n- 496.00m 496.00m drbd1# lvcreate -n lv0 -L 200M vg_drbd Logical volume "lv0" created. drbd1# lvs vg_drbd LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg_drbd -wi-a----- 200.00m
今作った`lv0'にファイルシステムを作り、マウントして、ファイルを作成してみる。
drbd1# mkfs.ext4 /dev/vg_drbd/lv0 mke2fs 1.46.2 (28-Feb-2021) Discarding device blocks: done Creating filesystem with 204800 1k blocks and 51200 inodes Filesystem UUID: 2d5a478b-f48d-475d-9f3a-3feff10c6fb8 Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done drbd1# mount /dev/vg_drbd/lv0 /mnt drbd1# echo 'Test File' > /mnt/test drbd1# ls /mnt lost+found test drbd1# cat /mnt/test Test File
アクティブ系をdrbd1
からdrbd2
に切り換えてみる。
まずdrbd1
で、lv0
をアンマウントし、vg_drbd
を非アクティブ化して、セカンダリに降格する。
drbd1# umount /mnt drbd1# vgchange -a n vg_drbd 0 logical volume(s) in volume group "vg_drbd" now active drbd1# drbdadm secondary r0 drbd1# drbdadm status r0 r0 role:Secondary disk:UpToDate peer role:Secondary replication:Established peer-disk:UpToDate
続いてdrbd2
をプライマリに昇格する。
drbd2# drbdadm primary r0 drbd2# drbdadm status r0 r0 role:Primary disk:UpToDate peer role:Secondary replication:Established peer-disk:UpToDate drbd2# pvs PV VG Fmt Attr PSize PFree /dev/drbd1 vg_drbd lvm2 a-- 496.00m 296.00m /dev/vda5 drbd2-vg lvm2 a-- <4.52g 0 /dev/vdb vg01 lvm2 a-- <10.00g <9.51g drbd2# vgs vg_drbd VG #PV #LV #SN Attr VSize VFree vg_drbd 1 1 0 wz--n- 496.00m 296.00m drbd2# lvs vg_drbd LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg_drbd -wi------- 200.00m
ちゃんとdrbd1
で作ったPV, VG, LVが見えている。
drbd2
で、vg_drbd
をアクティブ化し、マウントしてファイルを確認。
drbd2# vgchange -a y vg_drbd 1 logical volume(s) in volume group "vg_drbd" now active drbd2# mount /dev/vg_drbd/lv0 /mnt drbd2# ls /mnt lost+found test drbd2# cat /mnt/test Test File
DRBDで入れ子LVが同期できた!