CentOS8でのDRBD9を動かそう!!

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

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のコンパイルに関しては大きな違いはなく、これまでと同じように実行ができるようです。

DRBDの設定についてはこちらの記事でもご紹介しています。

アバター画像
プロフェッショナルサービスチームの中の人。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる