自宅サーバー構築日記: CentOS7でmdadmを使ったソフトウェアRIADを組む

photo credit: Andrew Abogado via photopin cc

クリスマスまで6~7日という、12月も中旬にさしかかる最中に当ブログで「アドベントカレンダーやろう!」とは言えず(良いネタも思いつかず)、なので最近ちまちま行っている自宅サーバー構築について少しずつ書いてみようかなと。記してみようかなと。

自宅サーバーを構築して何がしたいかというと、主に以下のものを用意したいのです。

  • ファイル共有サーバー
  • iTunesサーバー
  • ownCloud
  • Gitlab
  • Jenkins
  • その他やってみたいこと(Botさんの召喚とか)

というワケでまずはファイル共有サーバーを用意したいのですが、その前にデータ保存を安全にするためRAIDを組みました。その流れをメモしておきます。(先に述べておきますが、自分はLinuxスーパー初心者です。ので、同じく初心者の方対象の内容にしたつもり…です)

photo credit: Andrew Abogado via photopin cc

mdadmを使ってソフトウェアRAIDを組む

ソフトウェアRAIDを組むにはいくつか方法(LVMやらZFSやら)があるようで、その中でもインフラに詳しい友達に薦められたmdadmを使うことにしました。

組む手順の前にサーバー環境を載せておきます。

サーバー機N54L PROLIANT-500
OSCentOS 7
RAM4GB
HDD500GB + 2TB * 2

サーバー機はこちらで、

HDDにはこちらを2つ使用しました。

ちなみに今回、主に2つの記事を参考にソフトウェアRAIDを組みました。

参考記事:

CentOSでソフトウェアRAIDの構築 – maruko2 Note.

3TB-HDDでソフトウェアRAID構築 | Scribble

上記2つの記事を見ればある程度作業は進むのですが、自分なりに躓いた点もあったのでそこらへんを書きます。(初心者なので変なところに躓いたのでしょう)

一つ目の参考記事から引用しますと、ソフトウェアRAIDを組む手順はこのようになります。

大まかな手順は次のようになる。

  1. RAID を構成するディスクに RAID 用パーティションを作成 (fdisk コマンドなど)。
  2. mdadm コマンドで RAID アレイを作成。
  3. /etc/mdadm.conf を作成。
  4. RAID アレイをフォーマット(ファイルシステム作成)。

それでは早速作業内容について。(以降の例ではRAID 1を組みます)

0.RAIDを組むデバイスを確認する

パーティションを作成する前に、RIADを組みたいデバイスを確認しておきます。サーバー機に接続されたHDDを確認するには以下のコマンドを実行します。

これは自分の例ですが、サーバー機に接続されている500GB、2TB、2TBはそれぞれデバイスドライバを通してディレクトリに割り当てられます。

500GB/dev/sda
2TB一つ目/dev/sdb
2TB2つ目/dev/sdc

sdとは「SCSIディスク」の略で(多分)、後ろにつく”a”、”b”、”c”はサーバー機に接続された順番で振り分けられます。上の例では/dev/sda1/dev/sda2とありますが、この数字がパーティションになります。/dev/sdaはOSをインストールするときにパーティション分けしているので、既に2つも出来上がっているのです。

今回は2TBを2つ使ってRAIDを組みたいので、/dev/sdb/dev/sdcそれぞれにRAID用のパーティションを作成することになります。(間違ってOSのデータを格納しているデバイスを操作するとOSが壊れるので注意です)

1.RAID用パーティションを作成する

partedを使ってパーティションを作成します。似たような機能のコマンドfdiskがありますが、partedの方がより良いそうなのでこちらを使います。(すみませんが詳しくは調べて見てください)

この一連のコマンドを行うとパーティションが作成されます。(mkpartの指定の”0 2000”とは「HDDの0~2000GBを使用する」、つまり2TB全てパーティションで使うという意味です)

パーティション情報はprintで見れます。

このパーティション作成手順を他のハードディスクにも行います。全て終わったらquitで終了します。

最初に使ったコマンドでパーティションが作成されているか確認できます。

ちゃんとsdb1とsdc1が追加されていますね。

2.mdadmコマンドでRAIDアレイを作成

ここで1つ躓いたのは、そもそもmdadmプログラムが入っていないのが原因でした。「mdadmコマンドが使えないよ」みたいなエラーが出た場合、以下のコマンドでプログラムをインストールしましょう。

インストールが終わったら早速RAIDアレイを作成します。自分の例では「RAID 1」「デバイス数2」「/dev/sdb1と/dev/sdc1を使う」という内容なので、このようなコマンドになります。/dev/md0にRAIDアレイを作成します。

Continue creating array?」と聞かれるので”y”と入力します。すると、

と出て作成開始されますが、これには結構な時間がかかります。RAIDアレイの構成状況の確認はこのコマンドで行いましょう。

おおよその終了時間は6行目の「finish=236.0min」という箇所です。236分なので約4時間ですね。気長に待ちましょう。終わるとこんなメッセージが表示されます。

 3.mdadm用の設定ファイルを作成

mdadm用の設定ファイルを作成し、そこにRAIDアレイ情報を書き込みます。mdadm --detail --scanとするとアレイ情報が出るのでこれを標準出力でファイル(mdadm.conf)に追記します。

ですが、ここでまたもや躓きました。参考記事の通りに実行すると、

というエラーが出るんですね。sudoを利用して権限を持っていたのですが上手くいかず。ので、まず先に設定ファイルを作成しておきました。

そして標準出力>>を使った方法ではなく、パイプ|teeを使った方法に切り替えるとコマンドが通りました。(以下では念のためsudoコマンドを追加しておきます。root権限を持っていれば必要無いでしょう)

catで見てみると、ちゃんと内容が追記されていました。

 4.RAIDアレイにファイルシステムを作成しマウントする

いよいよ最終ステップです。構成したRAIDアレイ/dev/md0にファイルシステムを作成した後、マウントをします。

まずは以下のようにmkfsを使ってファイルシステムを作ります。

(ちょっと時間がかかるので待ちます)

ファイルシステムの作成が終わったら、特定のディレクトリにマウントします。今回自分の例で言えば、/dataというディレクトリを作ってここにマウントしました。/etc/fstabにマウント情報を追記します。(このファイルに追記すると、以降サーバー起動時に自動的にマウントしてくれるようになります

ただ、このマウントの記述にはディレクトリ指定(/dev/md0)よりもUUIDという識別子で指定したほうが無難のようです。ので、先にRAIDアレイのUUIDを確認してみましょう。

他にもデバイスは出ますが、今回確認したいのはRAIDアレイ(md0)です。確認したところ「ec8338de-460a-49f8-a53d-06ee2829e285」がRAIDアレイのUUIDでした。こちらを利用してマウント指定します。

viなどのエディタで/etc/fstabを開いて以下のように1行追加します。

これで自動的にマウントされるようになります。保存が終わったら、

を行い、/etc/fstabで指定されているファイルシステムを全てマウントします。もし、

と出た場合はUUIDが間違っているので、打ち間違いがないか確認してみましょう。マウントがちゃんとできているかはmountで確認できます。

以上でmdadmによるソフトウェアRAID構築は完了です。

 

2014年12月21日追記:

mdmonitorの起動ができていたので追記。

5.RAIDアレイを監視

障害が発生した場合に知らせたいメールアドレスを設定ファイル/etc/mdadm.confに書き込みます。

そしてmdmonitorの起動ですが、systemctlコマンドでできました。

enableオプションで自動起動の設定をし、is-enabledでシステム起動時の状態を調べます。メールの送信テストは以下のコマンドで行います。(自分は迷惑メールに入っていました)


余談ですがサーバー機とHDDの費用は合計3万円ほど。冬ですし身体も財布の中も寒いです。ついでに今回の主な参考書籍はこちら。勉強になりましたし助かりました。

最終更新日:2015年1月8日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/centos7-mdadm-raid/trackback/