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が同期できた!