DRBD : インストール2023/08/29 |
|
DRBD (Distributed Replicated Block Device) をインストールして分散ストレージシステムを構築します。 +----------------------+ | +----------------------+ | [ DRBD Server#1 ] |10.0.0.51 | 10.0.0.52| [ DRBD Server#2 ] | | node01.srv.world +----------+----------+ node02.srv.world | | | | | +----------------------+ +----------------------+
前提として、DRBD クラスター全ノードに DRBD デバイスに割り当てる空きブロックデバイスが存在している必要があります。
|
|
| [1] | 全ノードで DRBD をインストールして設定します。 |
|
root@node01:~#
apt -y install drbd-utils
root@node01:~#
vi /etc/drbd.d/r0.res # 新規作成 : 設定ファイル名 ⇒ (リソース名).res
resource r0 {
net {
# A : ローカルディスクとローカル TCP 送信バッファにデータを書き込んだ時点で書き込み完了と判断
# B : ローカルディスクとリモートバッファキャッシュにデータを書き込んだ時点で書き込み完了と判断
# C : ローカルディスクとリモートディスクの両方にデータを書き込んだ時点で書き込み完了と判断
protocol C;
cram-hmac-alg sha1;
# ノード間の認証に使用する任意のシークレットキー
shared-secret "MySharedSecret";
}
disk {
# 同期に使用する帯域幅を制限可 (下例は 10MB/sec)
resync-rate 10M;
}
# on (ホスト名)
on node01.srv.world {
address 10.0.0.51:7788;
volume 0 {
# 使用するデバイス名
device /dev/drbd0;
# 使用するブロックデバイス
disk /dev/sdb1;
# メタデータを作成する場所
# 別ディスクにする場合はブロックデバイス名を指定
meta-disk internal;
}
}
on node02.srv.world {
address 10.0.0.52:7788;
volume 0 {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
}
}
}
# モジュールロード root@node01:~# modprobe drbd root@node01:~# drbd 425984 0 lru_cache 16384 1 drbd libcrc32c 16384 1 drbd # DRBDリソース作成 root@node01:~# drbdadm create-md r0 initializing activity log initializing bitmap (2560 KB) to all zero Writing meta data... New drbd meta data block successfully created.root@node01:~# systemctl enable --now drbd |
| [2] | 全ノードで設定した後は、いずれかのホストをプライマリにしてデータの同期を実施します。 |
|
# 設定直後は Secondary/Secondary root@node01:~# cat /proc/drbd
version: 8.4.11 (api:1/proto:86-101)
srcversion: 0ACE0C074EBC10D79EE52CB
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:83882460
# DRBDリソース起動 root@node01:~# drbdadm up r0
# プライマリにしてデータ同期 root@node01:~# drbdadm -- --overwrite-data-of-peer primary r0
# データ同期が開始する root@node01:~# cat /proc/drbd
version: 8.4.11 (api:1/proto:86-101)
srcversion: 0ACE0C074EBC10D79EE52CB
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:1494016 nr:0 dw:0 dr:1494016 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:82388444
[>....................] sync'ed: 1.8% (80456/81916)M
finish: 0:36:57 speed: 37,144 (30,488) K/sec
# 同期が完了すると以下のようなステータスになる root@node01:~# cat /proc/drbd
version: 8.4.11 (api:1/proto:86-101)
srcversion: 0ACE0C074EBC10D79EE52CB
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:83882460 nr:0 dw:0 dr:83882460 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
|
| [3] | 以上で設定完了です。後は DRBD デバイスにファイルシステムを作成して、プライマリ側でマウントすれば利用可能です。 |
|
root@node01:~# mkfs.ext4 /dev/drbd0 root@node01:~# mkdir /drbd_disk root@node01:~# mount /dev/drbd0 /drbd_disk root@node01:~# df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 392M 564K 391M 1% /run /dev/mapper/debian--vg-root ext4 28G 1.3G 26G 5% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda1 ext2 455M 58M 373M 14% /boot tmpfs tmpfs 392M 0 392M 0% /run/user/0 /dev/drbd0 ext4 79G 24K 75G 1% /drbd_disk # テストファイル作成 root@node01:~# echo 'test file' > /drbd_disk/test.txt root@node01:~# ll /drbd_disk total 20 drwx------ 2 root root 16384 Aug 28 19:53 lost+found -rw-r--r-- 1 root root 10 Aug 28 19:55 test.txt |
| [4] | セカンダリ側で DRBD デバイスをマウントするには、現在プライマリになっているホストでアンマウントしてセカンダリに降格させ、 セカンダリ側をプライマリに昇格させてマウントという流れになります。 |
|
# プライマリーホスト # アンマウントしてセカンダリーにする root@node01:~# umount /drbd_disk root@node01:~# drbdadm secondary r0
# セカンダリーホスト # プライマリーにしてマウントする root@node02:~# drbdadm primary r0 root@node02:~# mount /dev/drbd0 /drbd_disk root@node02:~# df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 392M 548K 391M 1% /run /dev/mapper/debian--vg-root ext4 28G 1.3G 26G 5% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda1 ext2 455M 58M 373M 14% /boot tmpfs tmpfs 392M 0 392M 0% /run/user/0 /dev/drbd0 ext4 79G 28K 75G 1% /drbd_diskroot@node02:~# cat /drbd_disk/test.txt test file |
| Sponsored Link |
|
|