前回はRAIDの作成を行いました。
これで片方のストレージが壊れても動き続けるようにはなりましたが、ストレージが壊れていないかといった状況を確認したり、ストレージが壊れた際に復旧する方法が分からないとまだまだ安心できません。
今回はそういったRAIDの管理について説明したいと思います。
この記事で行うこと
1. RAIDの状態確認
前回、RAIDの構築状態を確認したコマンドと同じコマンドとなります。
[root@localhost ~]# cat /proc/mdstat
正常な場合は概ね以下のように表示されます。
Personalities : [raid1]
md0 : active raid1 sda1[1] sdb1[0]
15127040 blocks super 1.2 [2/2] [UU]
片方が切断された場合は以下のようになります。
Personalities : [raid1]
md0 : active (auto-read-only) raid1 sdb1[0]
15127040 blocks super 1.2 [2/1] [U_]
切断されたデバイス名が表示されなくなり、最後の数字が 2/2
ではなく 2/1
となり、 UU
ではなく U_
となっています。
また、状態の active
の後に (auto-read-only)
となっています。
これは、問題が発生したためデータを保護するために自動的に書き込みを禁止したものとなります。解除方法については後述します。
2. RAIDの設定を保存する
RAIDに関する設定が全く無い状況ではファイルタイプ( fdisk -l
で表示される タイプ
)がRAIDとなっているストレージを片っ端からRAIDと認識します。(ファイルタイプが参照される一部の状況です)
このため他のサーバから持ってきたストレージがRAIDタイプになっていたとか、そういった事でRAIDストレージ名(md0のような名称)が入れ替わったりする可能性があります。
自動マウントでディスク名を使っていたりすると面倒な事になりかねないので、RAIDの情報を設定ファイルに保存しておきます。
以下のコマンドを使います。
[root@localhost ~]# mdadm --detail --brief /dev/md0 >> /etc/mdadm.conf
mdadm
: RAID作成時にも使った、RAID管理のコマンドです。多分Multiple Disk ADMinistrationとかそんな感じです。--detail
: RAIDの詳細を表示するコマンドです。--brief
: 概要だけを表示するコマンドです。--detail
と組み合わせると、設定ファイルに記述するのと同じ形式の出力となります。/dev/md0
: 設定ファイルに保存したいRAIDを指定します。>>
: この記号の右側に指定したファイルに、左側にあるコマンドの結果を追記します。なお、>
の場合は上書きとなります。/etc/mdadm.conf
: 設定ファイルの場所です。
ちなみに、そのサーバに存在する全てのRAIDを設定に追記する場合は --brief /dev/md0
の代わりに、 --scan
と記載します。 --scan
はそのサーバに存在するRAIDをスキャンして概要だけ表示するオプションです。
作成されたファイルを確認すると以下のように記載されています。
ARRAY /dev/md0 metadata=1.2 name=localhost:0 UUID=XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX
3. RAIDに問題が生じた際にメールで通知を行う
RAIDに問題が起きたとき、メール通知を行わせるようにします。
こちらは既にメールサーバが存在している前提で記載しています。
メールサーバの構築については以下のページを確認してください。
先ほど作成した設定ファイル /etc/mdadm.conf
に以下の行を追加します。
MAILADDR 「宛先メールアドレス」
これで、メール通知先の設定が出来ました。
メールが届くかを確認するには以下のコマンドを実行します。
[root@localhost ~]# mdadm --monitor --scan --oneshot --test
--monitor
: RAIDの監視を行うオプションです。--scan
:mdadm.conf
ファイルから監視対象や宛先メールアドレスを取得するオプションです。--oneshot
: 監視し続けるのではなく、そのコマンド実行時点の状態を確認して終了します。--test
: テストイベントを発生させます。これはメール通知の対象となります。(このオプションがないと、RAIDに問題が無い限りコマンドを実行しても何も起きません)
これでテストメールが指定されたメールアドレス宛に送付されるはずです。
実際の監視についてですがCentOS8ではデフォルトでRAIDを監視し続けるようになっています。
しかし、メールアドレスの指定が無かったり、そもそも設定ファイルが存在しないと起動しません。
これで設定ファイルにメールアドレスが指定されるようになったので次回のサーバ起動以降は自動的に監視されるようになります。
とはいえ監視を始めるためだけにサーバを再起動するのもなんなので、手動で起動します。
[root@localhost ~]# systemctl start mdmonitor
4. 問題発生時の対応
RAID1では問題が発生した際には壊れたディスクを取り外して新しいディスクを付け加えます。
4-1. ディスクの取り外し
問題が起きた際に完全に壊れて接続が切れていたりする場合は後で物理的に取り外せば良いですが、もし壊れた状態でも認識されている場合は明示的に切断する必要があります。
[root@localhost ~]# mdadm --fail /dev/md0 /dev/sdb1
[root@localhost ~]# mdadm --remove /dev/md0 /dev/sdb1
--fail
: 指定したストレージを不良ストレージとしてマークします。(正常されているストレージを直接外すことは出来ないため、先に不良としてマークする必要があります)/dev/md0 /dev/sdb1
: ストレージの指定は、先にRAIDを指定して、その後ストレージを指定します。--remove
: 指定したストレージをRAIDから外します。
4-2. 新規のRAIDディスクの追加
取り外したら、新しいディスクを加えます。
なお、ディスクは事前に加える先のRAIDと同じ大きさのパーティションに区切ってください。
RAIDにストレージを加えるコマンドは以下の通りです。
[root@localhost ~]# mdadm --add /dev/md0 /dev/sda1
--add
: RAIDにストレージを加えるコマンドとなります。
4-3. (おまけ)auto-read-onlyの解除
RAIDの状態確認でみたとおり、RAIDに問題が生じると自動的に書き込みが出来なくなります。
基本的には復旧するまでは新たな書き込み等を行わない事が無難ですが、とはいえ書き込みを行わなくてはいけないという状況もあり得るかと思います。
(或いはバックアップを定期的に取っていれば最悪壊れても復旧出来るので保てば儲けものといった具合で使うという選択も取り得るかも知れません)
そういった場合は以下のコマンドで読み書き可能な状態にできます。
[root@localhost ~]# mdadm --readwrite /dev/md0
--readwrite
: 読み書き可能な状態にするためのオプションです。/dev/md0
: 対象となるRAIDを指定します。
これで以下のように auto-read-only
が解除され書き込みが出来るようになります。
Personalities : [raid1]
md0 : active raid1 sdb1[0]
15127040 blocks super 1.2 [2/1] [U_]
まとめ
これでRAIDの状態確認と、問題があった時に対処が出来るようになりました。
RAIDは確かに1つのストレージよりは安全ですが、だからといって放っておくと両方のストレージが壊れてしまいどうしようもなくなる可能性があります。
問題が生じた際には早め早めに対処するようにしましょう。