2019/09/24にCentOS8がリリースされました。CentOS8にDRBD9をインストールしてテストしてみましょう。
1.ソースコードからコンパイル
DRBDはカーネルオブジェクトとして動く部分と、ユーザー空間で動くコマンドから構成されます。
それぞれのソースコードは別々のURLからダウンロードできます。
とりあえず以下の手順で、カーネルオブジェクトの部分であるkmod-drbdのrpmファイルがCentOS8で作れました。
dnf install elfutils-libelf-devel gcc git kernel-devel kernel-rpm-macros make perl-interpreter rpm-build tar kernel-abi-whitelists wget mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} wget https://www.linbit.com/downloads/drbd/9.0/drbd-9.0.20-0rc2.tar.gz tar xvzf drbd-9.0.20-0rc2.tar.gz cd drbd-9.0.20-0rc2 make kmp-rpm
※本blogを執筆時のDRBDの最新バージョンは9.0.20(rc2)でした。最新バージョンはここから確認下さい。
次にdrbdamやdrbdsetupコマンドをインストールするため、drbd-utilsのtarファイルをダウンロードしてコンパイルします。
wget https://www.linbit.com/downloads/drbd/utils/drbd-utils-9.10.0.tar.gz cp drbd-utils-9.10.0.tar.gz ~/rpmbuild/SOURCES/ tar xzf drbd-utils-9.10.0.tar.gz cd drbd-utils-9.10.0/ ./autogen.sh ./configure --enable-spec rpmbuild -bb drbd.spec --without sbinsymlinks --without heartbeat --with prebuiltman
/root/rpmbuildにrpmファイルが作られます。
2.LINBITのリポジトリからダウンロード
LINBITのサポートライセンスを契約すると、LINBITが運営するリポジトリサーバへのアクセスできます。設定方法はCentOS7の場合と同じで、/etc/yum.repo.d/linbit.repoというファイルに次のような記述をします。
[linbit.repo] name=LINBIT repo baseurl=https://packages.linbit.com/<ハッシュ番号>/yum/rhel8/drbd-9.0/x86_64 gpgcheck=0
※<ハッシュ番号>は40文字の文字列で、契約されたユーザ様の契約ノード毎に提供されます。
これで後はyumコマンド(またはdnfコマンド)でDRBDをインストールできます。
yum install kmod-drbd drbd
3.動作確認
インストール後は、/etc/drbd.d/ディレクトリに設定ファイルを置いて、DRBDを起動します。このあたりの動きはCentOS7等と同じです。
以下はDRBDのストレージが/dev/sdb1の設定例です。
[root@node2 ~]# cat r0.res resource r0 { net{ protocol C; max-buffers 128K; } on node1 { device /dev/drbd0; disk /dev/sdb1; address 192.168.3.151:7788; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.3.152:7788; meta-disk internal; } }
設定ファイルが出来たら、初期化してxfsのファイルシステムとしてマウントしてみます。
まずメタデータを両ノードで作成します。(このコマンドは両ノードで実行します。)
[root@node1 ~]# drbdadm create-md r0 md_offset 1077932032 al_offset 1077899264 bm_offset 1077862400 Found some data ==> This might destroy existing data! <== Do you want to proceed? [need to type 'yes' to confirm] yes initializing activity log initializing bitmap (36 KB) to all zero Writing meta data... New drbd meta data block successfully created. success
次に両ノードでDRBDを起動します。(このコマンドも両ノードで実行します。)
[root@node1 ~]# drbdadm up r0
node1を一旦Primaryにして初期同期を開始します。(このコマンドはnode1で実行します。)
ここで初期同期が開始したらSecondary状態に戻してください。これはDRBD9にはAuto Promoteの機能があるためで、Sedondary状態に戻し忘れると、系切り替えができなくなることがあります。
[root@node1 ~]# drbdadm --force primary r0 [root@node1 ~]# drbdadm secondary r0
最後にファイルシステムを初期化して/mntディレクトリにマウントします。
[root@node1 ~]# mkfs.xfs /dev/drbd0 meta-data=/dev/drbd0 isize=512 agcount=4, agsize=65788 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=263150, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@node1 ~]# mount /dev/drbd0 /mnt [root@node1 ~]# df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 devtmpfs 405548 0 405548 0% /dev tmpfs 420560 0 420560 0% /dev/shm tmpfs 420560 5716 414844 2% /run tmpfs 420560 0 420560 0% /sys/fs/cgroup /dev/mapper/cl-root 14034944 2707280 11327664 20% / /dev/sda1 999320 182068 748440 20% /boot tmpfs 84112 0 84112 0% /run/user/0 /dev/drbd0 1042360 40384 1001976 4% /mnt
CentOS7と同じように使えました。
CentOS8はyum コマンドがdnf コマンドに変わったり、ファイヤーウォールの内部コマンドが変わったりしていますが、DRBDのコンパイルに関しては大きな違いはなく、これまでと同じように実行ができるようです。