|
中小企業の情報セキュリティ対策において、データセキュリティは最重要課題であり、企業データの可用性とセキュリティは重要な懸念事項となっています。企業データを保護する過程で、ディスクアレイ技術(RAID(Redundant Array of Inexpensive Disks)とも呼ばれる)は、ディスクのフォールトトレランスやバックアップ、SANストレージの構築などに中小企業で広く利用されており、データセキュリティを確保するための重要な技術となっています。さらに、RAIDには多くの種類があり、企業は適切なディスクアレイを選択する方法について慎重な判断を行う必要があります。この記事では、RAID1およびRAID-5ディスクアレイの作成プロセスを使用して、オープンソースのLinuxシステムにおけるハードウェアディスクアレイの使用方法を紹介します。 I. ディスクアレイの理解 RAIDは、その実装原理に基づいて様々なレベルに分類されます。これらのレベルはそれぞれ異なるモードで動作し、速度、セキュリティ、コスト効率が異なります。業界で一般的に使用されているRAID構成をいくつか以下に示します。 RAID 0(ストライプまたはストライピングとも呼ばれる)は、すべてのRAIDレベルの中で最も高いストレージパフォーマンスを実現します。RAID 0のストレージパフォーマンス向上の原理は、連続したデータを複数のディスクに分散してアクセスできるようにすることです。これにより、データ要求は複数のディスク間で並列に実行され、各ディスクが要求のそれぞれの部分を処理します。この並列データ処理はバス帯域幅を最大限に活用し、全体的なディスクアクセスパフォーマンスを大幅に向上させます。 RAID 1:RAID 1は、データのミラーリングによってデータの冗長性を実現し、2組の別々のディスクにデータのバックアップを作成します。RAID 1は読み取りパフォーマンスを向上させます。元のデータがビジー状態の場合、ミラーコピーから直接データを読み取ることができます。RAID 1は最も高価なディスクアレイですが、最高のデータ可用性を提供します。1つのディスクに障害が発生した場合、システムは障害データを再構築することなく、自動的にミラーディスクに切り替えます。 RAID 2:概念的には、RAID 2はRAID 3に似ています。どちらもデータをブロック単位で複数のハードドライブに分散し、ブロックの単位はビットまたはバイトです。ただし、RAID 2は「加重平均エラー訂正コード」と呼ばれるエンコード技術を使用してエラーチェックとリカバリを行います。このエンコード技術では、チェック情報とリカバリ情報を保存するために複数のディスクが必要になるため、RAID 2の実装はより複雑になります。そのため、商用環境ではほとんど使用されません。 RAID 3:RAID 2とは異なり、RAID 3ではパリティ情報を単一のディスクに保存します。1つのディスクに障害が発生した場合、パリティディスクと他のデータディスクがデータを再生します。パリティディスクに障害が発生しても、データの使用には影響しません。RAID 3は、大量のシーケンシャルデータに対して優れた転送速度を提供しますが、ランダムデータの場合、パリティディスクが書き込み操作のボトルネックになる可能性があります。 RAID4: RAID2やRAID3と同様に、RAID4もデータをストライプ化し、複数のディスクに分散させますが、ストライプ単位はブロックまたはレコードです。RAID4は1つのディスクをパリティディスクとして使用するため、書き込み操作ごとにパリティディスクにアクセスする必要があるため、書き込み操作のボトルネックとなります。 RAID 5:RAID 5は専用のパリティディスクを持たず、代わりにデータとパリティ情報をすべてのディスクにインターリーブします。RAID 5では、読み取り/書き込みポインタがアレイデバイス上で同時に動作するため、データスループットが向上します。RAID 5は、小さなデータブロックやランダムな読み取り/書き込み操作に適しています。RAID 3とRAID 5の主な違いは、RAID 3では各データ転送にすべてのアレイディスクが使用されるのに対し、RAID 5ではほとんどのデータ転送を単一のディスクで実行できるため、並列処理が可能になることです。RAID 5には「書き込みペナルティ」があり、これは各書き込み操作で実際には4回の読み取り/書き込み操作(古いデータとパリティ情報の読み取り2回と、新しいデータとパリティ情報の書き込み2回)が発生することを意味します。RAID 5はおそらく世界で最も普及しているRAID製品であり、ERP、CRM、電子メールなどのトランザクションアプリケーションに最適です。 RAID 6:RAID 5と比較して、RAID 6は独立した2つ目のパリティブロックを追加します。2つの独立したパリティシステムは異なるアルゴリズムを使用するため、非常に高いデータ信頼性を実現します。両方のディスクが同時に故障しても、データ使用には影響しません。ただし、パリティ情報に必要なディスク容量が増えるため、RAID 5と比較して「書き込みペナルティ」が大きくなります。RAID 6は書き込みパフォーマンスが非常に低いです。この低いパフォーマンス、複雑な実装、そして高コストのため、RAID 6はほとんど使用されていません。 RAID7:コントローラとしてリアルタイム組み込みオペレーティングシステムを搭載し、キャッシュ用の高速バスを備えています。高速I/Oを提供しますが、高価で適用範囲が若干制限されます。 RAID 10:データストライプのアレイで構成され、各ストライプはRAID 1のドライブアレイです。RAID 1と同等のフォールトトレランスを備え、高いパフォーマンスと冗長性は必要だが、大容量は必要としないデータベースサーバーに適しています。 RAID53:RAID0データストライプアレイに似た実装で、各セグメントはRAID3アレイです。冗長性とフォールトトレランスはRAID3と同じです。これは、高いデータ転送速度を必要とするRAID3構成を必要とするITシステムには有益ですが、コストが高く、効率性も低くなります。 II. 特定の状況に応じてディスクアレイを使用します。 表 1 では、さまざまな RAID 製品の利点と欠点について詳しく説明しており、ユーザーは特定のアプリケーションに適した製品を選択できます。 表1 各種RAID製品の比較 前述のRAIDタイプ0、1、2は、技術的な洗練度の違いを表すものではなく(例えば、RAID 2は市販製品がなく、RAID 1よりも劣ると考えられています)、異なる技術モデルを表している点に留意することが重要です。したがって、実際のアプリケーションにおけるRAID製品の選択は、アプリケーション環境や予算などの要因によって異なります。 RAID を実装する方法には、ハードウェア RAID とソフトウェア RAID の 2 つがあります。 ハードウェアRAID:これは、RAIDカードと呼ばれる専用コントローラを使用し、RAIDコントローラカードを介してディスクアレイの機能を提供します。ハードウェアディスクアレイを使用するには、LinuxをサポートするRAIDコントローラカードを購入する必要があります。また、デバイスを適切に使用するには、Linuxシステムに適したドライバをインストールする必要があります。 ソフトウェアRAID:ソフトウェアを使用して実装されます。ユーザーは追加のハードウェアをインストールする必要はありません。Linuxカーネルがサポートしている限り、そのまま使用できます。 ハードウェアディスクアレイは、ディスクアレイコントローラカードを使用して計算を行うため、Linuxカーネルを搭載したソフトウェアディスクアレイよりもはるかに効率的です。ただし、ハードウェアディスクアレイには追加の機器が必要なため、運用コストはソフトウェアディスクアレイよりもはるかに高くなります。歴史的に、RAIDはハイエンドサーバーの機能であり、ハイエンドSCSIハードドライブと組み合わせて使用されていました。SCSI RAIDは優れた安定性と速度を提供しますが、SCSIハードドライブとSCSIインターフェースRAIDカードは高価であるため、ハイエンドサーバーでの使用に限定されていました。近年、技術の進歩と製品コストの低下により、IDEおよびSATAハードドライブのパフォーマンスが大幅に向上しました。さらに、RAIDチップが広く入手できるようになったことで、IDEおよびSATAハードドライブでRAIDテクノロジーが広く採用されるようになりました。 III. オープンソースLinuxシステムでディスクアレイを構築するための具体的な方法 現在、LinuxはRAID 0、RAID 1、RAID 4、RAID 5のディスクアレイモードをほぼ完全にサポートしています。4つのモードのうち、RAID 4とRAID 5は動作が似ています。 1. RAID1ディスクアレイを作成する RAID 1 ディスクアレイは、2組の別々のディスクに互いのバックアップを作成し、データミラーリングを行うことでデータの冗長性を実現します。つまり、各ディスクには同一のデータが保存されます。したがって、RAID 1 アレイを作成するには、少なくとも2台のハードドライブが必要であり、理想的には同じサイズのものが望ましいです。これは、1台のハードドライブに同じデータが保存されている場合、1台のドライブの容量が他のドライブよりも大きいと、アレイは余分なスペースを活用できないためです。この例では、2台のハードドライブ(hda1 と hdb1)のパーティションを使用して RAID 1 アレイを作成しています。 基本的な手順は次のとおりです。 1) ディスクアレイ構成ファイル /etc/raidtab を次のように編集します。 raiddev /dev/md0 RAIDレベル1 nr-raid-ディスク 2 スペアディスク数 0 チャンクサイズ 4 永続スーパーブロック1 デバイス /dev/hda1 RAIDディスク0 デバイス /dev/sdb1 RAIDディスク1 上記文書中の各項目の意味は次のとおりです。 raiddev: ディスクアレイのデバイス名を指定します。 raid-level: 使用する RAID モードを指定します (この例では RAID1)。 nr-raid-disks: RAIDアレイ内のハードドライブの数を指定します。この例では、RAIDは2台のハードドライブで構成されています。 nr-spare-disks: ディスク アレイ内のスペア ディスクの数を指定します (この例では 0)。 `chunk-size`: ディスク アレイに書き込まれる各ブロックのサイズを KB 単位で指定します。サイズは 2 の累乗である必要があります。一般的に、この設定はディスク アレイの読み取りおよび書き込み効率に影響しますが、理想的な設定はコンピューターの使用状況によって異なるため、絶対的な結果はありません。 persistent-superblock: ディスク上のスーパーブロックに書き込むかどうかを設定します。「1」に設定すると書き込み、「0」に設定すると書き込みません。 デバイス /dev/hda1: 実際の状況に応じて、最初のハードディスクパーティションの名前を指定します。ここでは、最初のハードディスクパーティションはhda1です。 RAID ディスク 0: 上記のパーティションを、このディスク アレイで使用される最初のハード ドライブとして構成し、番号は 0 から始まります。 デバイス /dev/hdb1: 上記と同じで、実際の状況に応じて 2 番目のハードディスク パーティションの名前を指定します。 raid-disk 1: 上記のパーティションを、このディスク アレイで使用される最初のハード ドライブ (番号 1) として構成します。 2) 次のコマンドを使用してディスクアレイをフォーマットしてマウントします。 // ディスクを作成 #mkraid /dev/md0 // ext3ファイルシステムを使用してフォーマットする #mke3fs /dev/md0 // md0 ディスクアレイを /mnt/md0 ディレクトリにロードします #マウント -t ext3 /dev/md0 mnt/md0 3) ディスクアレイを起動する #raidstart /dev/md0 4) 使用中にディスクアレイの使用状況を確認します。 #/proc/mdstat の詳細 5) ディスクアレイを停止してアンロードする //まずディスクアレイを停止します #raidstop /dev/md0 //マウントされたディスクアレイをアンロードします #/dev/md0 をアンマウントする 6) ディスク アレイを削除します。まず、手順 5) を使用してディスク アレイを停止し、/etc/raidtab ファイルを削除します。 2. RAID5ディスクアレイを作成する 前のセクションでは、RAID 0 アレイの作成方法を紹介しました。以下では、RAID 5 ディスクアレイの作成方法について説明します。この基礎知識があれば、RAID 5 アレイの作成ははるかに簡単になります。簡単に言うと、RAID 5 は RAID 0 と RAID 1 の妥協案であり、ハードドライブの容量をあまり消費せずにフォールトトレランスを提供し、ディスク I/O パフォーマンスを向上させます。RAID 5 ではパリティビットの保存が必要となるため、このタイプのアレイを作成するには少なくとも 3 台のハードドライブが必要です。したがって、この例では、3 つのディスク (hda、hdb、hdc) のパーティション (hda1、hdb1、hdc1) を使用して RAID 5 アレイを作成します。もちろん、3 つのディスク上の他のパーティションを指定することもできます。これはオプションであり、実際のディスクパーティションのニーズによって異なります。 基本的な操作手順は次のとおりです。 1) ディスクアレイ構成ファイル /etc/raidtab を次のように編集します。 raiddev /dev/md0 RAIDレベル5 nr-raid-ディスク 3 スペアディスク数 0 チャンクサイズ 32 永続スーパーブロック1 パリティアルゴリズム左対称 デバイス /dev/hda1 RAIDディスク0 デバイス /dev/hdb1 RAIDディスク1 デバイス /dev/hdc1 RAIDディスク2 同様に、上記文書中の各項目の意味は次のとおりです。 raiddev: ディスクアレイの名前を指定します。 raid-level: 使用する RAID5 ディスク アレイを指定します。 nr-raid-disks: このディスク アレイは 3 つのハード ドライブで構成されています。 nr-spare-disks: このディスク アレイのスペア ハード ドライブの数を指定します。 チャンクサイズ: ディスクアレイにデータを書き込む際の、各データ書き込みサイズ(KB単位、2の累乗でなければなりません)。この設定はディスクアレイの読み取り/書き込み効率に影響しますが、理想的な設定はコンピュータによって異なり、絶対的な結果が得られるわけではありません。 `persistent-superblock`: ディスク スーパーブロックに書き込むかどうかを設定します。書き込みの場合は 1、それ以外の場合は 0 に設定します。このパラメータを 1 に設定すると、ディスク アレイ内のハード ドライブに障害が発生してもシステムは起動できます。予備のハード ドライブが使用可能な場合は、そのドライブもアクティブ化されます。 `parity-algorithm`: パリティチェックに使用するアルゴリズムを指定します。左対称、左非対称、右対称、右非対称の4つのアルゴリズムが利用可能です。一般的に、左対称アルゴリズムはアクセス効率が最も高くなります。 デバイス /dev/hda1: 使用される最初のハードディスクパーティションの名前を指定します。 raid-disk 0: この設定は、上記のパーティションを、このディスク アレイで使用される最初のハード ドライブとして指定します (番号は 0 から始まります)。 デバイス /dev/hdb1: 使用する 2 番目のハードディスク パーティションの名前を指定します。 RAID ディスク 1: 上記のパーティションを、このディスク アレイで使用される 2 番目のハード ドライブとして構成します。 デバイス /dev/hdc1: 使用する 3 番目のハードディスク パーティションの名前を指定します。 RAID ディスク 2: 上記のパーティションを、このディスク アレイで使用される 3 番目のハード ドライブとして構成します。 2) 次のコマンドを使用してディスクアレイをフォーマットしてマウントします。 // ディスクを作成 #mkraid /dev/md0 // ext3ファイルシステムを使用してフォーマットする #mke3fs /dev/md0 // md0 ディスクアレイを /mnt/md0 ディレクトリにロードします #マウント -t ext3 /dev/md0 mnt/md0 3) ディスクアレイを起動する #raidstart /dev/md0 4) 使用中にディスクアレイの使用状況を確認します。 #/proc/mdstat の詳細 5) ディスクアレイを停止してアンロードする //まずディスクアレイを停止します #raidstop /dev/md0 //マウントされたディスクアレイをアンロードします #/dev/md0 をアンマウントする 6) ディスク アレイを削除します。まず、手順 5) を使用してディスク アレイを停止し、/etc/raidtab ファイルを削除します。 [編集者のおすすめ]
|