共通テーマ: 新Linux 2.4カーネルのSoftware RAID、第1回

インストール方法と概略の説明

ついに、新しい2.4カーネルが出ました! さあ、使われていないPCを探し出し、Linuxを入れ、それで何ができるかを見てみましょう。Daniel Robbinsは、Linux 2.4 Software RAIDに関する3回連載の記事で、データを複数のディスクに配置することによってディスクのパフォーマンスと信頼性を 高めるための新しいソフトウェアを紹介しています。この第1回の記事では、Software RAIDのセットアップ (カーネルとツールのインストール) を説明し、リニア・ボリュームとRAID-0ボリュームの作成方法を示しています。

Daniel Robbins (drobbins@gentoo.org), President/CEO, Gentoo Technologies, Inc. (Courtesy Intel Corporation)

ニューメキシコ州のアルバカーキーに住む Daniel Robbins は、Gentoo プロジェクトのチーフ・アーキテクトであり、かつ Gentoo Technologies, Inc. の CEO であり、かつ Linux Advanced Multimedia Project (LAMP) のよき助言者です。彼は、マクミラン・ブックCaldera OpenLinux Unleashed、SuSE Linux Unleashed、およびSamba Unleashed の著者です。Daniel は、小学校 2 年生のころから曲がりなりにもコンピューターにのめり込み、当時彼は、危険性を潜めたパック・マンのほか、Logo プログラム言語にも初めて出会いました。これで、彼がなぜ、それ以来 SONY Electronic Publishing/Psygnosis のリード・グラフィック・アーティストを務めているかが分かるでしょう。Daniel は、奥さんの Mary(今度の春に出産の予定です)と一緒に時間を過ごすのが楽しいそうです。彼の電子メール・アドレスはdrobbins@gentoo.org です。



2001年 2月 01日

この新しいカーネルには、いくつかのすばらしい新規機能と追加機能が含まれています。そのうちの1つは、最新のSoftware RAIDインプリメンテーションの組み込みです。Software RAIDを使用すれば、高価なハードウェアRAIDコントローラーや筺体を買わなくても、Linuxディスク入出力のパフォーマンスと信頼性を大幅に向上させることができます。それはソフトウェアでインプリメントされているため、Linux RAIDソフトウェアが柔軟で、高速で ... しかも面白いものに仕上がっています!

RAIDの不思議

Software RAIDの概念は単純です。つまり、これを使用すれば、複数のブロック装置 (通常は、ディスク区画) を単一のRAID装置として組み込むことができます。ここで、3つの空の区画hda3、hdb3、およびhdc3があるとします。Software RAIDを使用すれば、これらの区画を結合し、それらを単一のRAID装置 /dev/md0としてアドレス指定することができます。次に、md0にファイルシステムを含めるようにフォーマット設定し、他の区画と同様に使用することができます。このほかにも、RAIDボリュームを構成する方法がいろいろ用意されています。パフォーマンスを最大化するもの、可用性を最大化するもの、またこの両方を組み合わせたものもあります。

RAIDには、リニア・モードとRAID-0モードの2つの形式があります。技術的に言えば、どれもRAIDの形式ではありません。なぜならば、RAIDは「redundant array of inexpensive disks (高価でないディスクの冗長アレイ)」の略であり、RAID-0やリニア・モードはいかなる種類のデータ冗長も提供しないからです。しかし、どちらのモードも (特にRAID-0は) 非常に有用です。これらの2つのモードを持つ "AID" について概要を説明した後で、Software RAIDをユーザー・システム上にセットアップするプロセスについて説明します。


リニア・モードの紹介

リニア・モードは、複数のブロック装置を結合して単一の "RAID" ボリュームにする非常に簡単な方式です。つまり、簡単な連結方式です。仮にhda3、hdb3、およびhdc3という3つの区画があり、それぞれが約2GBを持っているとすれば、6GBのリニア・ボリュームが作成されます。このリニア・ボリュームの最初の1/3はhda3に含まれ、最後の1/3はhdc3に含まれ、中央の1/3はhdb3に含まれます。

リニア・ボリュームを構成するには、結合する区画が少なくとも2つ必要です。それらの区画はサイズが異なっていることもあれば、パフォーマンスを阻害することなくすべての区画が同一物理ディスクに常駐していることさえあります。

リニア・アプリケーション

リニア・モードは、同一ディスク上の複数の区画を結合して単一のボリュームにするための最良の方法です。他のどのRAID技法を使ってこれを行っても、パフォーマンスを大きく低下させますが、リニア・モードではこの問題は生じません。なぜならば、リニア・モードは、その構成要素である区画に並列(parallel)書き込みをしないからです (他のRAIDモードでは並列書き込みが行われます)。しかしリニア・モードは、ほかならぬこの理由で、RAID-0、RAID-4、RAID-5などと比べ、またある程度はRAID-1と比べ、パフォーマンスに難点があります。

一般に、リニア・モードは、従来の非RAID区画に対してはいかなる種類のパフォーマンス向上も行いません。実際にリニア・ボリュームを複数のディスクに配置すると、ハード・ディスクの不意の障害により、ユーザー・ボリュームが使用不能になる可能性が増加します。リニア・ボリュームが障害を起こす確率は、その構成要素である物理ディスクとコントローラーが障害を起こす確率の和と等しくなります。1つの物理ディスクが障害を起こすと、リニア・ボリュームは通常リカバリー不能になります。リニア・モードは、単一ディスクを使用するための追加の冗長度を提供しません。

しかしリニア・モードは、単一ディスクの再区分化を回避するための優れた方法です。たとえば、2番目のIDEドライブに2つの未使用区画hdb1およびhdb3があるとします。また、重要データが頻繁にhdb2に出入りするため、このドライブを再区分化できないでいるとします。このような場合でも、リニア・モードを使用すれば、hdb1とhdb3を結合して単一の結合体にすることができます。

単一の大きな区画が必要な場合 (しかも、実際にパフォーマンスを落としても構わない場合)、リニア・モードは、異なるディスク上の異なるサイズの区画を結合するための優れた方法でもあります。しかし、他の任意のジョブについては、これよりも優れたRAIDテクノロジーを使用することができます。


RAID-0モードの紹介

RAID-0は、"R" (冗長度) をまったく持っていない "RAID" モードの1つです。しかし、RAID-0は非常に有用です。それは第1に、このモードがすべての形式のRAIDにおいて最高のハイパフォーマンスを提供するからです。

RAID-0ボリュームをセットアップする際には、複数の同サイズの (もしくはほとんど同サイズの) 区画が必要になります。RAID-0コードは、すべての構成区画間で均等に書き込みを (および読み取りも) 配分します。また、RAID-0は、すべての構成装置間で読取と書込を並列に実行させることにより、入出力パフォーマンスを向上させています。コントローラーとバス帯域幅の複雑さを度外視すれば、別々の2つの同等ディスク上の2つの区画から構成されるRAID-0ボリュームにより、従来の区画のほぼ2倍のパフォーマンスを達成することができます。RAID-0ボリュームを3ディスクまで増やせば、パフォーマンスは約3倍になります。このため、IDEディスクのRAID-0アレイは、マーケットで最速のSCSIまたはFC-ALドライブよりも性能が優れています。実際にパフォーマンスを高めるために、SCSIまたはFC-ALドライブのグループをRAID-0アレイ内にセットアップすることができます。これこそがRAID-0の長所です。

RAID-0ボリュームを作成するには、同サイズの複数の区画をそれぞれ別個のディスクに入れる必要があります。このボリュームの容量は、構成区画の結合容量と等しくなります。リニア・モードの場合と同じように、さまざまなソース (たとえば、IDEドライブやSCSIドライブなど) のブロック装置を、問題なく単一のボリュームに結合することができます。

IDEディスクを使用してRAID-0ボリュームを作成する場合は、最大の信頼性を確保するためにUltraDMA準拠ディスクを使用するようにしてください。また、パフォーマンスの低下を回避するために、各IDEチャネルごとに1ドライブだけを使用してください。特にスレーブ装置がRAID-0アレイの一部に含まれている場合は、RAID-0のすべてのパフォーマンス利益をほとんど無にしてしまうほど低速になります。また、オフボードIDEコントローラーを追加して、必要な余分のIDEチャネルも取得する必要があります。

SCSI装置を使用してRAID-0ボリュームを作成する場合は、すべての装置を結合したスループットが、SCSI (および、場合によってはPCI) バスの最大スループットを超える可能性があることを知っておいてください。この場合は、SCSIバスがパフォーマンスを制限する要因になります。たとえば、40MB/秒 の68ピンUltra Wideバスに15MB/秒の最大スループットが設定された4ドライブがある場合、これらのドライブは、いつかはこのバスを飽和し、パフォーマンスが40MB/秒に近い最大値に達します。これはユーザーのアプリケーションにとっては良いことかもしれません (結局、40MB/秒の入出力は悪くはありません!)。しかし、これと同じ最大入出力パフォーマンスは、3ドライブだけを使用したRAID-0ボリュームからも得られるでしょう。

RAID-0アプリケーション

信頼性の点では、RAID-0はリニア・モードと同じ特性を持っています。つまり、アレイに追加するドライブの数が増えれば増えるほど、ボリューム障害が発生する確率も高まります。また、リニア・モードと同様に、単一ドライブの障害により、RAID-0ボリューム全体が停止し、リカバリー不能になります。RAID-0ボリュームに障害が生じる確率を算出するには、単にすべての構成ドライブの障害の確率を合算します。

RAID-0は、現在使用可能なRAIDモードの中で最も高パフォーマンスであるため、RAID-0は、最大入出力パフォーマンスを達成させる必要があるアプリケーションにとって理想的です。ただし、ボリューム障害の危険性が幾分高まるのを許容できる場合にのみ、RAID-0を使用ください。

コンピュート・ファームまたはWebクラスターを一緒にする場合は、RAID-0が、ディスクの入出力パフォーマンスを向上させるための優れた方法を提供します。この場合はすでに既存のレベルの冗長度 (多くのスペア・マシン) があると思われますので、ハード・ディスクに障害があるマシンを停止して、そのハード・ディスクを取り替えて再ロードしなければならないようなまれなケースの場合でも、リソースを引き続き使用することができます。


Linux 2.4 Software RAIDのセットアップ

2.4システムをSoftware RAIDで使用できるようにするには、2つのステップがあります。まず、RAIDサポートをカーネルで使用できるようにする必要があります。すでにRAIDサポートを組み込んだ2.4シリーズ・カーネルを使用している場合を除き、上記の操作では通常、新規のカーネルの再コンパイルとインストールが必要になります。

次に、raidtoolsパッケージをコンパイルしてインストールする必要があります。raidtoolsは、RAIDボリュームの初期化、開始、停止、および制御を可能にするユーザー・レベルのツールです。この2つのステップを完了したら、ユーザー独自のRAIDの作成、このボリューム上でのファイルシステムの作成、それらのマウント、などが可能になります。


カーネル特集号

わたしはこの連載記事にカーネル2.4.0-test10を使用しています。2.4カーネルは、入手できる最新のものを使用することをお勧めします。したがって、少なくともカーネル2.4.0-test10以降ということになります (しかし、2.4.0-test11ではありません。このカーネルはファイルシステム破壊という重大な問題をかかえています)。最新のカーネルはkernel.orgに入っており、ソースから新規のカーネルを再コンパイルしてインストールする方法を示すチュートリアルは、このdeveloperWorks にあります (この記事の末尾の参考文献のセクションを参照してください)。


カーネルの構成

Software RAIDサポートが組み込まれるように (モジュールとしてサポートされるのではなく)、カーネルを構成することをお勧めします。"make menuconfig" または "make xconfig" と入力すると、Software RAIDの設定が "Multi-device support (RAID and LVM)" セクションに表示されます。ここで、"Boot support" や "Auto Detect support" を含め、RAIDに関連するものをすべて使用可能にすることもお勧めします。これにより、カーネルがブート時にRAIDボリュームを自動開始できるようになるだけでなく、必要な場合、ルートRAIDファイルシステムを作成できるようになります。次に "make menuconfig" の例を示します。最後の2つのオプション (LVMサポート) は不要ですが、とりあえずそれらをカーネルに組み込みました。

RAID用のカーネルの構成
RAID用のカーネルの構成

カーネルを正しく構成したら、それをインストールしてリブートします。では、最新バージョンのraidtoolsを入手してみましょう。


raidtoolsのインストール

raidtoolsをインストールするには、事前に最新バージョンを見つけ出しておかなければなりません。通常、raidtoolsプログラムはkernel.orgに入っています。ここで、最新の "raidtools-0.90" アーカイブ (not raid0145!) を入手します。現在のところ、それは "raidtools-19990824-0.90.tar.gz" です。

最先端の事を手がけたい方 (そして2.4.0-testカーネルを使用しているのであれば、それを続けながら)、RedHat (参考文献を参照) へ向かい、最新版のraidtoolsを入手するという手もあります。現在、それは "raidtools-dangerous-0.90-20000116.tar.gz" です。

raidtoolsをインストールするには、アーカイブをアンパックします。次に、以下のように入力します。

# cd raidtools-0.90
# ./configure
# make
# make install

raidtools-0.90がインストールされました。これで、Software RAIDを使用できるようになりました。カーネルRAIDサポートがアクティブであることを確認するには、/proc/mdstatファイルが存在することを確認してください。このファイルには、現行のSoftware RAID構成が含まれています。

# cat /proc/mdstat

区画のセットアップ

ここでいくつかのディスク区画を作成しなければなりません。このうちユーザーが必要な区画は少なくとも2つです。RAID-0を使用する場合は、それらの区画を別々のディスクに入れ、同じくらいのサイズにしてくださ。これらの区画のデータが壊されるのは言うまでもありません。

重要な点についてもう1つ。区画を作成するときは、区画型を "FD" にしてください。こうすれば、Linuxカーネルはそれらの区画をLinux RAID区画として認識できますので、それらの区画は、ブートのたびに自動的に検出されて開始されます。このようにRAID区画にマークが付いていない場合は、ブートを行った後 "raidstart --all" と入力しておかないと、RAIDボリュームをマウントできません。これは面倒ですので、区画タイプを正しく設定するようにしてください。


/etc/raidtabのセットアップ

次のステップは /etc/raidtabファイルの作成です。このファイルは、RAIDボリュームの構成を記述したものです。以下に、/dev/md0 RAID-0ボリュームを定義したサンプルのraidtabを示します。このボリュームは、ブロック装置 /dev/hde1および /dev/hdg1からなり、/dev/md1リニア・ボリュームは、ブロック装置 /dev/hde2および /dev/hdg2からなっています。

raiddev /dev/md0
        raid-level		0
        nr-raid-disks		2
        persistent-superblock   1
        chunk-size		32
        device			/dev/hde1
        raid-disk		0
        device			/dev/hdg1
        raid-disk		1               
raiddev /dev/md1
        raid-level		linear
        nr-raid-disks		2
        persistent-superblock   1
        chunk-size		32
        device			/dev/hde2
        raid-disk		0
        device			/dev/hdg2
        raid-disk		1

raidtab構文は比較的分かりやすいものになっています。各ディレクティブ・ブロックは、作成するRAIDボリュームを指定する "raiddev" エントリーで始まります。raidtoolsをインストールしたときに、Makefileが /dev/md0?md15を作成していますので、ユーザーはこれらを使用できます。

次に、"nr-raid-disks" でアレイ内のディスクの数を指定します。ここで、"persistent-superblock" を1に設定します。この指示により、raidtoolsは、このボリュームを作成するときに、特殊なスーパーブロックを、RAIDアレイの構成を記述する各構成装置に書き込みます。Linuxカーネルは、この情報を使用して、ブート時にRAIDアレイを自動的に検出して開始しますので、ユーザーは、作成したすべてのRAIDボリュームがこれを行うよう構成する必要があります。

"chunk-size" は、RAID-0に使用するチャンクの細分性をKバイト (KB) で指定します。この例の場合、RAID-0ボリュームは、その構成区画に32Kブロック単位で書き込みを行います。つまり、RAIDボリュームの最初の32Kはhde1にマップされ、2番目の32Kはhdg1にマップされ、という具合になります。また、/dev/md1リニア・ボリュームにもチャンク・サイズを指定します。これはダミー・エントリーに過ぎず、何の意味も持っていません。

最後に、ボリュームを構成する装置を指定します。まず、"device" 行に実際のブロック装置を指定し、そのすぐ後に、アレイ内のその位置を指定する "raid-disk" エントリーを、ゼロから開始して入力します。

ユーザー独自の /etc/raidtabファイルを作成したら、アレイを使えるようにするための初期化を開始できます。


mkraidおよびファイルシステム作成

区画の作成が完了し、raidtabファイルの準備が整いました。ここで、mkraidコマンドを使用して、最初の区画を初期化します。

# mkraid /dev/md0

このコマンドが完了すると、/dev/md0が初期化され、md0アレイが開始されます。"cat /proc/mdstat" と入力すると、次のような画面が表示されます。

Personalities : [linear] [raid0] [raid1] [raid5]
read_ahead 1024 sectors
md0 : active raid0 hdg1[1] hde1[0]
      90069632 blocks 32k chunks
 
unused devices: <none>

RAID装置が立ち上がり稼働しています。ここで必要な処置は、そこにファイルシステムを作成することだけです。これを作成するには、mke2fsコマンドまたはmkreiserfsコマンドを使用します (RAID-0とReiserFSはすばらしい組み合わせです!)。

# mke2fs /dev/md0

または

# mkreiserfs /dev/md0

これで、新しいファイルシステムをマウントできるようになりました。

# mkdir /mnt/raid
# mount /dev/md0 /mnt/raid

/dev/md0エントリーを自由にfstabに追加できます。たとえば、次のようになります。

/dev/md0      /mnt/raid      reiserfs      defaults        0 0

区画タイプを正しく "FD" に設定すると、RAIDボリュームがブート時に自動的に開始されます。これで、後は、新規のSoftware RAIDボリュームを使って楽しむだけになりました。そして (もちろん)、わたしの第2回Software RAID記事を読んでください。この記事では、さらに拡張されたSoftware RAIDの機能とRAID-1について詳しく説明しています。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=230112
ArticleTitle=共通テーマ: 新Linux 2.4カーネルのSoftware RAID、第1回
publish-date=02012001