LoginSignup
1
1

More than 1 year has passed since last update.

VirtualBox, Rocky Linux8.5 でDRBDを動かす

Posted at

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でツールを選択します。

DRDB1.png

作成(C)を押下します。

DRDB2.png

作成ボタンを押下し、仮想ハードディスクを作成します。

VitualBox Managerで 仮想マシンを選択し、設定(S)を押下します。

DRDB5.png

ストレージを選択し、コントローラIDEを選択します。

DRDB6.png

ハードディスクの追加ボタンを押下します。

DRDB7.png

先ほど作成した仮想ハードディスクを選択し、選択ボタンを押下します。

DRDB8.png

仮想ハードディスクが追加されていることを確認します。

# 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

参照情報

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1