いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.090 / 読者数:981名

こんばんは、うすだです。

もともと当メルマガは、Linux のお勉強をある程度したけれど、 それからどうすりゃわからん、という方々のために、 ぱっと試せる内容を紹介することを目的としております。

そんな気持ちを込めて、先頭に「いますぐ実践!」とつけました。

しかし、深い考えを持って、「実践」という言葉を用いたわけではなく、 なんとなく使っていたことに、今さらですが、気がつきました。

そのあたり、曖昧にしておくのはよろしくないと思い、 「実践」の意味を辞書で調べてみることにしました。
すると、

「主義・理論などを、みずから実際に行うこと」

と書いてあるではありませんか。

「主義・理論」ですか…。
な、名前負けしないよう、精進したいと思います。
(ちなみに、この文脈で「精進」と言うのも間違いかも…スミマセン。)

それでは、今週もはりきってまいりたいと思います。

今週のお題 - ディスクを RAID5 にする

先週は、mdadm コマンドを使用して、ディスクをミラーリングする方法を、 ご紹介しました。

Vol.089 - ディスクをミラーリングする
http://www.usupi.org/sysad/089.html

ミラーリングは、同じ内容を2つ(以上)のパーティションに書き込みますので、 両方とも壊れなければ、もとのデータを失うことはありません。

しかし、使いたい容量のパーティションを2つ以上必要としますので、 半分(以上)の領域を犠牲にしてしまうことになります。

信頼性も必要だけど、容量もそれなりに効率よく使いたいな、 と思われる節約上手な貴兄も、たくさんいらっしゃることでしょう。

そんなときには、RAID5 なんていかがでしょうか。
RAID5 なら、1台分の容量を犠牲にするだけで、 いずれか1台が故障しても中のデータは失われません。

というわけで今週は、RAID5 なディスクを構成してみたいと思います。


先週に引続き、mdadm コマンドを使って、あれこれ行いたいと思います。
先週とかぶってる部分も多いですので、若干踏み込んで、パーティションの入れ換えや、 スペアを使って備えるといったことも、やってみます。

  1. RAID5 なMDデバイスを作成する。
  2. MDデバイスをフォーマットして使えるようにする。
  3. おかしくなったパーティションを差し替える。
  4. スペアを追加して、障害に備える。

RAID5 の場合、パーティションが3つ以上必要となります。
とりあえず試すだけなら、1台のディスク上に、パーティションを3つ以上作成すれば、 試すことができます。
ただし、実運用の際には、それぞれ別のディスクを用いてください。
(でないと、ディスク1台が壊れると、全部ふっとぶ可能性があります。)

また、各パーティションのサイズは、前回同様、きっちり同じである必要はありません。 ディスクの型式なども、特に制限はありません。


それではまず、RAID5 を構成するための MDデバイスを作成しましょう。

まず、3つ以上、パーティションを作成します。
パーティションの作り方は、先週のお題などを参考にしてください。
(以降を全部試すなら、4つ(以上)作っておくことをお勧めします。)

…3つ以上作成したら、mdadm コマンドで、MDデバイスを作成します。
mdadm コマンドの使い方も、前回とほぼ同じです。
以下では、/dev/hdb1, /dev/hdb2 と /dev/hdb3 を用いて、 /dev/md0 という RAID5 の MDデバイスを作成しています。

  # mdadm -C /dev/md0 -ayes -l raid5 -n 3 /dev/hdb1 /dev/hdb2 \
  /dev/hdb3

今回は RAID5 にしますので、-l オプションで raid5 を指定します。
また、使用するパーティションは3つ以上ですので、 -n オプションでその個数(上記では 3)、そしてその後に、 その個数分デバイスファイルを指定します。

文句を言われなければ、問題なく実行されていると思いますが、 念のため確認しておきましょう。
前回と同様、以下のように、/proc/mdstat を参照します。

  # cat /proc/mdstat
  Personalities : [raid5] [raid4]
  md0 : active raid5 hdb3[2] hdb2[1] hdb1[0]
        65280 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
  unused devices: <none>

あるいは、-D オプションをつけて mdadm コマンドを実行しましょう。

  # mdadm -D /dev/md0
  /dev/md0:
          Version : 00.90.03
    Creation Time : Fri Jul 14 15:29:13 2006
       Raid Level : raid5
       Array Size : 65280 (63.76 MiB 66.85 MB)
      Device Size : 32640 (31.88 MiB 33.42 MB)
     Raid Devices : 3
    Total Devices : 3
  ...中略...

      Number   Major   Minor   RaidDevice State
         0       3       65        0      active sync   /dev/hdb1
         1       3       66        1      active sync   /dev/hdb2
         2       3       67        2      active sync   /dev/hdb3

こんな感じであれば、問題ないと思います。


では次に、MDデバイスをフォーマットして、使えるようにしましょう。
といっても、MDデバイスを普通にフォーマットするだけです。
たとえば、ext3 ファイルシステムとして使いたい場合は、 以下のように mkfs.ext3 コマンドを実行します。

  # mkfs.ext3 /dev/md0

そして、マウントします。
以下では、/mnt/data というディレクトリにマウントしています。

  # mount /dev/md0 /mnt/data
  # ls /mnt/data
  lost+found/

以上で、RAID5 なディスクを作ることができました。

しかし、ディスクというものは、いつかは壊れるものです。
そんなとき、壊れたパーティションを、代わりのパーティションに、 交換することができます。

今までの例では、/dev/hdb1 〜 /dev/hdb3 を使って、 RAID5 なディスクに仕立てあげていました。
ここで、/dev/hdb2 が壊れてしまったとしましょう。
/dev/hdb2 が壊れたことに気づいたあなたは、mdadm コマンドを使って、 その旨を教えてあげる必要があります。

  # mdadm /dev/md0 -f /dev/hdb2
  mdadm: set /dev/hdb2 faulty in /dev/md0

/dev/hdb2 に faulty が設定されました。
/proc/mdstat を参照すると、hdb2 に (F) というマークがつきます。

  # cat /proc/mdstat
  Personalities : [raid5] [raid4]
  md0 : active raid5 hdb3[2] hdb2[3](F) hdb1[0]
        65280 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
      
  unused devices: <none>

そして、/dev/hdb2 を /dev/md0 から切り離します。

  # mdadm /dev/md0 -r /dev/hdb2
  mdadm: hot removed /dev/hdb2

とはいえ、このままでは RAID5 としてやっていけませんので、 代わりのパーティションを追加する必要があります。

ここで、同じ容量(かそれ以上)のパーティションを用意してください。
(ディスク交換が必要な場合、 立ち上げ時に /dev/md0 がマウントされないように仕込んでから、 シャットダウンして、交換してください。)

用意できたら、-a オプションで追加します。
以下では、例として、/dev/hdb4 を追加しています。

  # mdadm /dev/md0 -a /dev/hdb4
  mdadm: added /dev/hdb4
  # cat /proc/mdstat
  Personalities : [raid5] [raid4]
  md0 : active raid5 hdb4[1] hdb3[2] hdb1[0]
        65280 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
  unused devices: <none>

これで、壊れたパーティションを差し替えることができました。

ただ、ディスク交換が必要な場合、シャットダウンしないといけません。
しかし、みんなのサーバですので、できることなら、 OS を止めずに交換したいところです。

そんなときのために、最初からスペアを用意しておきましょう。
以下では、/dev/hdb1 〜 /dev/hdb4 を使って RAID5 な MDデバイスを作りますが、 1つをスペアとしてみたいと思います。

  # mdadm -C /dev/md0 -ayes -l raid5 -n 3 -x 1 /dev/hd1 /dev/hdb2 \
  /dev/hdb3 /dev/hdb4

スペアの数を、-x オプションで指定します。
以下のように /proc/mdstat を参照すると、 /dev/hdb4 に (S) というのがついていますので、 /dev/hdb4 がスペアだということがわかります。

  # cat /proc/mdstat
  Personalities : [raid5] [raid4]
  md0 : active raid5 hdb3[2] hdb4[3](S) hdb2[1] hdb1[0]
        65280 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
  unused devices: <none>

すでに /dev/hdb1 〜 /dev/hdb3 で RAID5 が構築済だった場合、 後からスペアを追加することもできます。

  # mdadm /dev/md0 -a /dev/hdb4
  mdadm: added /dev/hdb4
  # cat /proc/mdstat
  Personalities : [raid5] [raid4]
  md0 : active raid5 hdb4[3](S) hdb3[2] hdb2[1] hdb1[0]
        65280 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
  unused devices: <none>

 

そして、たとえば、/dev/hdb3 が壊れたことに気づき、 faulty なマークをつけたとします。

  # mdadm /dev/md0 -f /dev/hdb3

すると、自動的に、スペアである /dev/hdb4 へ切り替わります。

  # cat /proc/mdstat
  Personalities : [raid5] [raid4]
  md0 : active raid5 hdb4[2] hdb3[3](F) hdb2[1] hdb1[0]
        65280 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
  unused devices: <none>

おお! これはすばらしいですね!!


以上、RAID5 なディスクの構成方法などを、ご紹介しました。

OS 起動時に、自動的にマウントして使えるようにするには、 前回のお題を参照してください。

それから、スペアや代わりのパーティションは、もとのひとたちより容量が小さいと、 使えません。ご注意ください。(経験者は語る…。)

 

RAID5 の詳細については、各自で調べていただけますと幸いです。
個人的には、Wikipedia の説明が、わかりやすかったと思います。
検索すると大抵トップに出てきますが、念のため、ご紹介しておきます。

RAID - Wikipedia
http://ja.wikipedia.org/wiki/RAID

あ、RAID6 の方が、パリティが2つあるので、信頼性が高いですね。
mdadm 自体は、RAID6 も構築できますので、ご検討くださいませ。

宿題の答え

先週の宿題は、

  ミラーリングされたディスクを、いずれか一方のパーティションだけで
  使えるかどうか、試してみましょう。

でした。

まず、現在使用中の場合は、以下のようにMDデバイスを停止させてから、 以降をお試しください。

  # umount /mnt/data
  # mdadm -S /dev/md0

MDデバイスが /dev/hdb1 と /dev/hdb2 で成り立っている場合、 それぞれのパーティションだけで使えるかどうか、mount してみればよいですね。
というわけで、mount してみましょう。

  # mount /dev/hdb1 /mnt/data
  # ls /mnt/data
  lost+found/  secret_data/

問題なく、見えます。
同様に、/dev/hdb2 も試してみましょう。

  # umount /mnt/data
  # mount /dev/hdb2 /mnt/data
  # ls /mnt/data
  lost+found/  secret_data/

こちらも大丈夫なようです。
ちなみに、mdadm -S を実行せずに mount を試みますと、

  # mount /dev/hdb1 /mnt/data
  mount: /dev/hdb1 already mounted or /mnt/data busy

と言われます。

今週の宿題

今週の宿題は、

  RAID5 で構成されたMDデバイスで、パーティションが1つ壊れた場合に
  書き込みを行うと、どうなるでしょうか。

です。

パーティションが1つ壊れても、データが失われることはありませんが、 その状態で書き込みを行うとどうなるのか、実際に確認してみたいと思います。 (できれば、どうなってもいいディスクで試してください。)

あとがき

わたくし事ですが、昨日から、風邪をひいております。

発端は、子どもで、次によめ、そしてわたしへと、引き継がれました。
まるで、パイプラインのようです。

パイプラインハザードによって風邪が長引いたらいやだなとか、 投機実行して予測が外れたら風邪がすぐ治るのかなとか、 意味のわからない妄想が頭をかけめぐっています。

…すみません、今週は、このくらいでご勘弁いただけますと幸いです。
しかし、今年の風邪は、喉にきますね。
痰が絡んで、咳が止まらないのは、かなりうっとおしいです。
みなさまも、風邪にはお気をつけください。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−今週はナゼか読者が増えています。ありがたいです。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本