VirtualBox, Rocky Linux8.5 でDRBDを動かす
環境
-
VitualBox 6.1.34
-
仮想マシン (Rocky Linux 8.5) * 2つ
ホスト名 IPアドレス helloworld1 192.168.1.14 helloworld2 192.168.1.5
DRBDのインストール(仮想マシン 2台共通)
ELRepoリポジトリからDRBDをインストールします。
ELRepoリポジトリの登録
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# dnf -y install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
DRBDのインストール
# dnf install -y drbd90-utils kmod-drbd90
インストール後、リブートします。
ポートの解放
DRBDで使用するポートを解放します。
# firewall-cmd --add-port=6996-7800/tcp --permanent
# firewall-cmd --reload
ディスクの準備(仮想マシン 2台共通)
仮想ハードディスクの作成
VitualBox Managerでツールを選択します。
作成(C)を押下します。
作成ボタンを押下し、仮想ハードディスクを作成します。
VitualBox Managerで 仮想マシンを選択し、設定(S)を押下します。
ストレージを選択し、コントローラIDEを選択します。
ハードディスクの追加ボタンを押下します。
先ほど作成した仮想ハードディスクを選択し、選択ボタンを押下します。
仮想ハードディスクが追加されていることを確認します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 63G 0 part
├─rl-root 253:0 0 41G 0 lvm /
├─rl-swap 253:1 0 2.1G 0 lvm [SWAP]
└─rl-home 253:2 0 20G 0 lvm /home
sdb 8:16 0 10G 0 disk
sr0 11:0 1 1024M 0 rom
パーティションの作成
追加した仮想ハードディスクにパーティションを作成します。
# parted /dev/sdb mklabel msdos
# parted /dev/sdb mkpart primary 0% 100%
# parted /dev/sdb set 1 lvm on
パーティションが作成されていることを確認します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 63G 0 part
├─rl-root 253:0 0 41G 0 lvm /
├─rl-swap 253:1 0 2.1G 0 lvm [SWAP]
└─rl-home 253:2 0 20G 0 lvm /home
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 1024M 0 rom
PV(フィジカルボリューム), VG(ボリュームグループ), LV(ロジカルボリューム)の作成
PV(フィジカルボリューム), VG(ボリュームグループ), LV(ロジカルボリューム)を作成します。
# pvcreate /dev/sdb1
# vgcreate pool /dev/sdb1
# lvcreate -n data0 -l 100%FREE pool
作成されていることを確認します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 63G 0 part
├─rl-root 253:0 0 41G 0 lvm /
├─rl-swap 253:1 0 2.1G 0 lvm [SWAP]
└─rl-home 253:2 0 20G 0 lvm /home
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 10G 0 part
└─pool-data0 253:3 0 10G 0 lvm
sr0 11:0 1 1024M 0 rom
DRBDリソースの定義(仮想マシン 2台共通)
DRBDリソースの定義ファイル /etc/drbd.d/r0.res を以下の内容で作成します。
resource r0 {
on helloworld1 {
device /dev/drbd0;
disk /dev/mapper/pool-data0;
address 192.168.1.14:7788;
meta-disk internal;
}
on helloworld2 {
device /dev/drbd0;
disk /dev/mapper/pool-data0;
address 192.168.1.5:7788;
meta-disk internal;
}
}
DRBDリソースの初期化と有効化(仮想マシン 2台共通)
# drbdadm create-md r0
# drbdadm up r0
helloworld1で状態を確認
# drbdadm status r0
r0 role:Secondary
disk:Inconsistent
helloworld2 role:Secondary
peer-disk:Inconsistent
helloworld2で状態を確認
# drbdadm status r0
r0 role:Secondary
disk:Inconsistent
helloworld1 role:Secondary
peer-disk:Inconsistent
DRBDの同期
helloworld1側をプライマリに昇格させます。
helloworld1側で以下を実施します。
# drbdadm primary --force r0
# drbdadm status r0
r0 role:Primary
disk:UpToDate
helloworld2 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:3.61
同期が終了すると以下の表示になります。
helloworld1側
r0 role:Primary
disk:UpToDate
helloworld2 role:Secondary
peer-disk:UpToDate
helloworld2側
r0 role:Secondary
disk:UpToDate
helloworld1 role:Primary
peer-disk:UpToDate
DRBDデバイスを マウントする。(仮想マシン helloworld1側)
helloworld1ホスト側にフォルダ/mnt/drbd0を作成し、/dev/drbd0を/mnt/drbd0にマウントします。
# mkfs.xfs /dev/drbd0
# mkdir /mnt/drbd0
# mount /dev/drbd0 /mnt/drbd0
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 63G 0 part
├─rl-root 253:0 0 41G 0 lvm /
├─rl-swap 253:1 0 2.1G 0 lvm [SWAP]
└─rl-home 253:2 0 20G 0 lvm /home
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 10G 0 part
└─pool-data0 253:3 0 10G 0 lvm
└─drbd0 147:0 0 10G 0 disk /mnt/drbd0
ファイルを作成する。(仮想マシン helloworld1側)
/mnt/drbd0フォルダにファイルを作成します。
# echo "Hello World 1" > /mnt/drbd0/helloworld1.txt
# cat /mnt/drbd0/helloworld1.txt
Hello World 1
セカンダリホスト側(helloworld2)を昇格させ、ファイルが作成されていることを確認する。(仮想マシン helloworld2側)
helloworld1側の DRBDデバイスをアンマウントし、セカンダリに降格させます。
# umount /mnt/drbd0
# drbdadm secondary r0
# drbdadm status r0
r0 role:Secondary
disk:UpToDate
helloworld2 role:Secondary
peer-disk:UpToDate
helloworld2側をプライマリに昇格させて、DRBDデバイスをマウントします。
以下のコマンドを実施し、プライマリに昇格させます。
# drbdadm primary r0
# drbdadm status r0
r0 role:Primary
disk:UpToDate
helloworld1 role:Secondary
peer-disk:UpToDate
/mnt/drbd0 フォルダを作成し、DRBDデバイスをマウントします。
# mkdir /mnt/drbd0
# mount /dev/drbd0 /mnt/drbd0
# ls /mnt/drbd0
hellowrold1.txtが存在していることが分かります。
helloworld1.txt
参照情報