DRBD 8.2 → 8.3 バージョンアップ

| 1 Comment | No TrackingBacks
自宅サーバーの CentOS 5.3 で yum update を実行したところ、DRBD 8.3 がリリースされていた。DRBD はネットワーク越しの RAID 1 よろしくマシン間でブロックデバイスをミラーリングする画期的なソフトウェアで、クリティカルな部分で運用されるケースも多い。我が家のサーバー環境でも定番通り Heartbeat と組み合わせ、HA クラスタリングの要になっている。

DRBD はファイルシステムより下のレイヤーでブロックデバイスを操作し、動作にはカーネルモジュールが必要になる。かつて DRBD 0.7 時代にはソースからコンパイルしてインストールしていたが、今は CentOS 5 用リポジトリの "extras" にあるパッケージをインストールしてあり、drbd82 が DRBD 本体、kmod-drbd82 がカーネルモジュールだ。

ところが yum update で更新ありと表示されたのは drbd83 のみ。現行の DRBD 8.2 からのマイナーバージョンアップになるが、モノがモノだけに気軽に更新できる代物ではない。経験上この手のソフトウェアを何も考えずにバージョンアップすると痛い目に遭う可能性は少なくないので、yum update はいったん中止して、心身ともに準備を整えて出直すことにした。


まず当該サーバーをシャットダウンし、万が一に備えてスナップショットを作成しておく。幸い我が家で DRBD を利用するサーバーは全て VMware Server による仮想マシンなので、これで面倒な事態になっても「なかったこと」にできる。

当該サーバーを起動して改めて yum update を実行すると、DRBD のバージョンアップ自体はすんなり終了した。すかさず cat /proc/drbd を確認してみると DRBD が動作しておらず、スタンバイ側でも Primary を見失っている。また自動起動設定も無効になっている (chkconfig --list から抹消されている) が、いきなり自動起動させるのは危ない気がするので、ひとまずそのままの状態で再起動。また念のため、Heartbeat も自動起動を無効にしておく。

再起動完了後に DRBD の起動スクリプトを手動で叩くと、スタンバイ側を発見できず、以下のようなメッセージが表示された。

DRBD module version: 8.2.6
DRBD userland version: 8.3.2
Preferably kernel and userland versions should match.

やっぱりカーネルモジュールも同時に更新しなきゃダメだったんじゃねーか、と言うことで DRBD を停止させ、カーネルモジュールをインストールし直す。

# yum search drbd ← DRBD パッケージ名を確認
drbd.i386 : Distributed Redundant Block Device driver for Linux
drbd82.i386 : Distributed Redundant Block Device driver for Linux
drbd83.i386 : Distributed Redundant Block Device driver for Linux
kmod-drbd.i686 : drbd kernel module(s)
kmod-drbd-PAE.i686 : drbd kernel module(s)
kmod-drbd-xen.i686 : drbd kernel module(s)
kmod-drbd82.i686 : drbd82 kernel module(s)
kmod-drbd82-PAE.i686 : drbd82 kernel module(s)
kmod-drbd82-xen.i686 : drbd82 kernel module(s)
kmod-drbd83.i686 : drbd83 kernel module(s)
kmod-drbd83-PAE.i686 : drbd83 kernel module(s)
kmod-drbd83-xen.i686 : drbd83 kernel module(s)

# yum remove kmod-drbd82 ← 旧バージョンを削除

# yum install kmod-drbd83 ← 新バージョンをインストール

# rpm -qa | grep drbd | sort ← インストール済み DRBD 関連パッケージを確認
drbd83-8.3.2-6.el5_3
kmod-drbd83-8.3.2-6.el5_3

# shutdown -r now

再起動完了後に改めて DRBD を起動すると、バージョン不一致のメッセージは消えた。kmod-drbd83-PAE は 32bit 版 Linux で 4GB 以上のメモリを扱うための PAE (Physical Address Extension) 対応カーネル用、kmod-drbd83-xen は Xen 対応カーネル用のモジュール。我が家の仮想マシンには無関係なので、インストールしない。

次にスタンバイ側でも同様に DRBD とカーネルモジュールを更新し、再起動する。僕の環境では再起動後に DRBD を手動で起動させるとアクティブ側を見つけられなかったが、慌てず Split brain 発生時の処置を施す。<RESOURCE> は drbd.conf 中で定義したリソース名で、リソースが複数ある場合は全てについて実施する。

アクティブ側
# drbdadm connect <RESOURCE>

スタンバイ側
# drbdadm disconnect <RESOURCE>
# drbdadm secondary <RESOURCE>
# drbdadm -- --discard-my-data connect <RESOURCE>

これで無事に DRBD のバージョンアップは完了。Heartbeat を起動して手動でフェイルオーバーを発生させ、切り替えと復旧が正常に動作することを確認後、DRBD と Heartbeat の自動起動を有効にする。

ただ、まだ安心するのは早い気がする。バージョンアップはひとまずこの 2台だけにしておいて、Heartbeat との連携等、安定性に関してしばらく様子を見ることにしよう。

No TrackBacks

TrackBack URL: http://www.natzworks.com/mtos4/mt-tb.cgi/196

1 Comment

約 1週間様子を見てみたところ DRBD 自体や Heartbeat との連携に問題はなさそうなので、他の仮想マシンの DRBD も更新した。

Leave a comment

About this Entry

This page contains a single entry by Natz published on September 2, 2009 7:36 PM.

Linux: sed -i の罠 (ハードリンクが切れる) was the previous entry in this blog.

CPU ファンの騒音 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

レンタルサーバーなら使えるねっと

レンタルサーバーなら使えるねっと