設定 - RAID10 (RHEL)
概要
RAID10とは、RAID1とRAID0を組み合わせた方式である。
2つのディスクにまったく同じデータを書き込み、さらに、データをブロック単位に分割して並列に書き込む。
RAID1+0では、RAID0を構成するRAID1の構成ドライブ2台がどちらも故障しない限り、データは破壊されない。
RAID10を構築する場合は、最低4台の物理ディスクが必要となる。
RAID10の特徴を以下に示す。
- 2つのディスクへ同時書き込む(ミラーリング)を行い、かつ、データをブロック単位に分割(ストライピング)して書き込む。
- RAID1の冗長性とRAID0の高速性を組み合わせたRAID方式。
- 容量コストが倍になるが安全性の高いRAID構成である。
※注意
データのバックアップを必ず取ることが推奨される。
ディスク障害時の交換手順も把握しておくことが重要となる。
システムの再起動後において、RAIDアレイが正常にマウントされることを確認すること。
RAID10の同期完了を待機した後、本番データを配置することが推奨される。
mdadmのインストール
mdadmパッケージをインストールする。
sudo dnf install mdadm
ディスクの確認
利用可能なディスクを確認する。
sudo fdisk -l # または lsblk
パーティションの作成 (オプション)
# X : ストレージ番号
sudo fdisk /dev/sdX
- [N]キーを押下して、新規パーティションを作成する。
- [P]キーを押下して、プライマリパーティションを作成する。
- 次に、デフォルトの開始セクタを入力する。
- デフォルトのサイズを入力する。
- [W]キーを押下して保存する。
RAID10アレイの作成
- 例: /dev/md0
- 作成するRAIDデバイス名
- 例: /dev/sdXA, /dev/sdYB, /dev/sdZC, /dev/sdWD
- 使用するデバイスを指定
--levelオプション
--level
オプション または -l
オプションは、RAIDレベルを指定するためのオプションである。
指定可能な値を以下に示す。
- raid0 または 0
- ストライピングのみ
- データを複数のディスクに分散して書き込む。
- 冗長性なし、性能向上が目的
- 必要なディスク数は、最低2台である。
- raid1 または 1
- ミラーリング
- 同じデータを複数のディスクに書き込む。
- 完全な冗長性を提供する。
- 必要なディスク数は、最低2台である。
- raid4 または 4
- ストライピング + 専用パリティ
- 1台のディスクをパリティ専用として使用する。
- 必要なディスク数は、最低3台である。
- 現在はあまり使用されていない。
- raid5 または 5
- ストライピング + 分散パリティ
- パリティ情報を全ディスクに分散する。
- 1台のディスク障害まで耐えられる。
- 必要なディスク数は、最低3台である。
- raid6 または 6
- ストライピング + 二重分散パリティ
- 2台のディスク障害まで耐えられる。
- 必要なディスク数は、最低4台である。
- raid10 または 10
- RAID1 (ミラーリング) と RAID0 (ストライピング) の組み合わせ
- 高性能と冗長性の両立する。
- 必要なディスク数は、最低4台 (2の倍数である必要あり) である。
- linear
- 単純な結合
- ディスクを順番に使用する。
- 冗長性なし。
- 必要なディスク数は、最低2台である。
--raid-devicesオプション
--raid-devices
オプション または -n
オプションは、RAIDアレイを構成するディスクの数を指定する。
※注意
RAIDレベルに応じて最小必要数が異なる。
RAID1とRAID10では偶数である必要がある。
一般的な構成例
- RAID1
- 2台
- RAID5
- 3〜5台
- RAID6
- 4〜6台
- RAID10
- 4台以上 (2の倍数)
--chunkオプション
--chunk
オプション または -c
オプションは、チャンクサイズを指定するために使用する。
チャンクサイズとは、RAIDアレイ内の各ディスクに書き込まれるデータの最小単位のサイズである。
指定できる値
- K (キロバイト)、M (メガバイト)、G (ギガバイト) の単位を使用する。
- 一般的な値は4K、64K、512K、1M等
- デフォルトは、512K
チャンクサイズの選択は、RAID性能に大きな影響を与える。
- 大きなチャンクサイズ
- 大きなファイルの連続読み書きに適している。
- 小さなチャンクサイズ
- 小さなファイルやランダムアクセスに適している。
--layoutオプション
--layout
オプションは、RAIDアレイのデータレイアウトを指定する。
指定できる主な値
- n2 (ネスト化)
- RAID10のネスト化されたレイアウト (2wayミラー)
- 最も一般的なRAID10レイアウト
- デバイスをペアに分割し、各ペア内でミラーリングする。
- 高い信頼性と良好な性能を提供する。
- --layout=n2は、近距離コピーを意味する。
- o2 (オフセット)
- RAID10のオフセットレイアウト
- 各デバイスのブロックを隣接するデバイスにミラーリングする。
- より柔軟な冗長性を提供する。
- ディスク障害時の再構築が比較的高速である。
- f2 (遠距離)
- RAID10の遠距離レイアウト
- 各ブロックを離れた位置にあるデバイスにミラーリング
- 連続するディスク障害に対してより強い耐性を持つ。
※注意
これらのレイアウトオプションは主にRAID10で使用される。
数値である2
は、ミラーリングの方法を示す。
デフォルトは、n2
である。
作成例
# X : ストレージ番号 # A, B, C, D : パーティション番号 sudo mdadm --create <作成するRAIDデバイス名 例: /dev/md0> \ --level=10 \ --raid-devices=<使用するディスク数> \ --chunk=512K \ --layout=n2 \ /dev/sdXA \ /dev/sdYB \ /dev/sdZC \ /dev/sdWD 例: sudo mdadm --create /dev/md0 \ --level=10 \ --raid-devices=4 \ --chunk=512 \ --layout=n2 \ /dev/sda1 \ /dev/sdb1 \ /dev/sdc1 \ /dev/sdd1
RAIDアレイの確認
sudo mdadm --detail <作成したRAIDデバイス名>
RAID構成の保存
sudo mdadm --detail --scan >> /etc/mdadm.conf
ファイルシステムの作成
# ext4の場合 sudo mkfs.ext4 <作成したRAIDデバイス名 例: /dev/md0> # XFSの場合 sudo mkfs.xfs <作成したRAIDデバイス名 例: /dev/md0>
マウントポイントの作成とマウント
まず、マウントポイントを作成する。
sudo mkdir <マウントディレクトリ 例: /mnt/raid10>
マウントする。
sudo mount <作成したRAIDデバイス名> <マウントディレクトリ 例: /mnt/raid10>
永続的なマウントの設定
/etc/fstabファイルに、以下に示すような設定を追加する。
sudo vi /etc/fstab
# /etc/fstabファイル <作成するRAIDデバイス名 例: /dev/md0> <マウントディレクトリ 例: /mnt/raid10> <ファイルシステム 例: xfs> defaults 0 0
RAID10の状態監視
RAID10の状態を確認する。
cat /proc/mdstat
RAID10の詳細な状態を確認する。
sudo mdadm --detail <作成したRAIDデバイス名 例: /dev/md0>
障害発生時の対応手順
障害ディスクの特定
--detail
オプションを付加することにより、指定したRAIDアレイの詳細な状態や設定情報を表示することができる。
sudo mdadm --detail <作成したRAIDデバイス名 例: /dev/md0> # 出力例 /dev/md0: # RAIDデバイス名 Version : 1.2 # RAIDのバージョン Creation Time : Wed Jan 1 12:00:00 2024 # RAIDアレイの作成日時 Raid Level : raid10 # RAIDレベル(RAID0,1,5,6,10など) Array Size : 1000000 (976.56 GiB) # アレイの総容量 Used Dev Size : 500000 (488.28 GiB) # 各デバイスの使用サイズ Raid Devices : 4 # RAIDを構成するデバイスの総数 Total Devices : 4 # 現在接続されているデバイスの総数 Persistence : Superblock is persistent # スーパーブロックの永続性 Update Time : Wed Jan 1 15:00:00 2024 # 最終更新日時 State : clean # RAIDの状態(clean, degraded, resync等) Active Devices : 4 # アクティブなデバイス数 Working Devices : 4 # 正常に動作しているデバイス数 Failed Devices : 0 # 故障しているデバイス数 Spare Devices : 0 # スペアデバイス数 Layout : near=2 # RAIDのレイアウト設定 Chunk Size : 512K # チャンクサイズ Name : hostname:0 # RAIDアレイの名前 UUID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # RAIDのUUID Events : 100 # イベントカウンタ Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 64 3 active sync /dev/sde
上記の出力例から、以下に示すような情報を確認することができる。
この情報は、特に、デバイスの状態や同期状況を確認する場合等、RAIDアレイの健全性チェックやトラブルシューティング時に役に立つ。
- RAIDの基本情報
- RAIDレベル
- アレイの総容量
- 作成日時
- 現在の状態
- アレイの全体的な状態(clean, degraded等)
- アクティブ/故障デバイスの数
- 最終更新日時
- 構成デバイスの詳細
- 各ディスクのステータス
- デバイスパス
- RAIDアレイ内での役割
- 技術的な設定
- チャンクサイズ
- レイアウト設定
- UUID
障害ディスクの削除
RAID配列 (/dev/md0) 内の特定のディスク (/dev/sdXY) において、意図的に"故障"状態とマークする。
これは実際のハードウェア故障をシミュレートするような動作である。
例えば、ディスクの交換やメンテナンスの前準備として使用される。
# X : ストレージ番号 # A : パーティション番号 sudo mdadm <作成したRAIDデバイス名 例: /dev/md0> --fail /dev/sdXA
"故障"マークの後に実行して、該当ディスクをRAID配列から物理的に削除する。
この操作により、マークされたディスクを安全にRAIDアレイから取り外すことができる。
例えば、新しいディスクに交換する際の準備段階として使用される。
# X : ストレージ番号 # A : パーティション番号 sudo mdadm <作成したRAIDデバイス名 例: /dev/md0> --remove /dev/sdXA
上記のコマンドは、以下に示すような状況で使用される。
- ディスクの予防的交換が必要な場合
- 実際に問題のあるディスクを交換する場合
- RAIDアレイの再構成が必要な場合
上記のコマンドにおいて、--fail
オプションを実行した後に--remove
オプションを実行する必要がある。
これにより、RAIDアレイのデータ整合性を保ちながら、安全にディスクを取り外すことができる。
新しいディスクの追加
# X : ストレージ番号 # A : パーティション番号 sudo mdadm <作成したRAIDデバイス名 例: /dev/md0> --add /dev/sdXA