はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は今勉強しているLPIC2で出てくる「RAID」について、アウトプットの一環としてまとめてみました。
RAID自体は知っていますが、実際RAIDを組むとなったら何をすればいいのかわかっていなかったので少し深掘りをしたのが経緯です。
そもそもRAIDとは?
RAIDとは「複数のディスク(SSDやHDD)を仮想的に1つにまとめてアクセス高速化や冗長化を行う機能」となります。
個人的には高速化よりも冗長化をメインで使われているイメージがあります。
このRAIDにも「ソフトウェアRAID」と「ハードウェアRAID」の2種類があります。
ソフトウェアRAIDとは「OSが管理するRAID」です。
この後出てくるmdadmコマンドを利用し構築するRAIDとなります。
このRAIDはOSが管理しているため、サーバ自体の負荷が高くなりますが、比較的容易に構築、拡張、縮小ができるのがメリットとなります。
ハードウェアRAIDとは「専用のRAIDコントローラが管理するRAID」となります。
このRAIDは専用のコントローラが存在するのでサーバの負荷は軽減しますが、専用ハードウェアの導入が必要なため、導入のハードルが少し高くなります(特に個人開発だと)
どれを選べばいい?数多くあるRAID種別
RAIDにも種類が数多く存在します。
その数多く存在するRAIDの種類の中から何を選べばいいのか?
それは要求される要件次第としか言えません。。。。
この章では6種類のRAIDについてまとめていきたいと思います。
RAID0
RAID0は「ストライピング」と呼ばれており、ブロック単位でデータを分割し、各ハードディスクにデータを分散配置します。
このタイプは並行処理や高速化のメリットがありますが、データの冗長化はされていないため、故障時にデータの復元が不可というデメリットも存在します。
このタイプを構成するためには、ディスクが最低2台必要となります。
RAID1
RAID1は「ミラーリング」と呼ばれており、ブロック単位で分割したデータをそれぞれのディスクに複製し保存しています。
そのため、冗長性が確保されており、データの復元ができるメリットがあります。
しかし、ディスク容量の効率的利用ができない点や並行処理ができないため、大容量かつ高速化に適していないデメリットも存在します。
このタイプもディスクは最低2台必要となります。
RAID5
RAID5は「パリティRAID」とも呼ばれており、各ディスクにパリティビットを配置する。
データ保存はRAID0と同様にブロック単位で分割したデータを各ディスクに分散させる。
パリティビットの組み合わせで1台の故障が発生した場合でも稼働可能であり、並行処理・高速化のメリットがある。
一方、パリティビットとデータの組み合わせによる計算が必要になる場合は、write処理が低速となるデメリットも存在する。
また、RAID0、RAID1とは異なり最低3台のディスクが必要となる特徴があります。
RAID6
RAID6は「ダブルパリティRAID」とも呼ばれており、RAID5と基本は同じですが、パリティの冗長性も担保しています。
このRAIDはパリティの冗長性を担保しているため、ディスク故障2台でも稼働できるメリットがあります。
一方、パリティの冗長性を担保している関係上、パリティ2つ分の容量が必要となるため、効率性が低下するデメリットもあります。
そして、このRAIDはディスクが最低4台必要となるため、導入コストが他と比較し上昇します。
RAID0+1(01)
RAID0+1は、「RAID01」や「RAID1+0」とも呼ばれることがあるようです。
このRAIDタイプは、RAID0とRAID1の組み合わせであり、最低4台のディスクを必要としています。
具体的には、「RAID0」をRAID1(ミラーリング)するタイプになります。
RAID1+0(10)
RAID1+0(RAID10)は、RAID0+1(RAID01)の逆となり「RAID1(ミラーリング)」したものをRAID0(分散)するタイプとなります。
このタイプも最低4台のディスクが必要となります。
RAIDを組むにはどうしたらいいの?
RAIDを構築するためには、どうしたいいのか?
構築する1つの手法として「mdadmコマンド」が存在します。
この章では「mdadmコマンド」についてまとめていきたいと思います。
mdadmコマンドとは?
mdadmコマンドとは「Linux上でソフトウェアRAIDを構築」するコマンドになります。
このコマンドには全部で3つのモードがあります。
Createモード
このモードは名前の通りRAIDを作成するモードになります。
・書式:mdadm [-c| --create] (作成元) [オプション] デバイス1 | デバイス2 ・・・
(オプション)
・-l | --levevl:RAIDレベルの指定
・-n | --reaid-devices:利用デバイス数の指定
・-x | --spare-devices:予備デバイス数の指定
Manageモード
Manageモードは既存で運用しているRAIDデバイスに対し、デバイスの追加や削除、不良マークの付与を行うモードとなります。
・書式:mdadm [--manage] (RAIDデバイス) [オプション] デバイス1 | デバイス2 ・・・
(オプション)
・-a | --add:構成デバイス追加
・-r | --remove:構成デバイス削除
・-f | --fail:構成デバイスに不良マーク付与
Miscモード
Miscモードは基本的には状態表示を行うモードとなります。
・書式:mdadm [--misc] (RAIDデバイス) [オプション] デバイス1 | デバイス2 ・・・
(オプション)
・-Q | --query:RAID状態表示
・-D | --detail:RAID状態の詳細表示
・-S | --stop:構成デバイスの停止
RAIDを実際に組んでみよう(後日追加予定)
mdadmコマンドによるRAIDの実機確認は後日実装し確認したいと思います。
最後に
今回の記事はいかがでしたでしょうか。
私もLPIC Level2の勉強中となるので、この記事をまとめてみました。
今後も勉強していく上でアウトプットしたほうが覚えが早いと思ったものを記事作成していきたいと思います。