設定 - RAID10 (RHEL)

提供:MochiuWiki : SUSE, EC, PCB
2025年1月2日 (木) 16:22時点におけるWiki (トーク | 投稿記録)による版 (→‎障害ディスクの特定)
ナビゲーションに移動 検索に移動

概要

RAID10とは、RAID1とRAID0を組み合わせた方式である。

2つのディスクにまったく同じデータを書き込み、さらに、データをブロック単位に分割して並列に書き込む。
RAID1+0では、RAID0を構成するRAID1の構成ドライブ2台がどちらも故障しない限り、データは破壊されない。

RAID10を構築する場合は、最低4台の物理ディスクが必要となる。

RAID10の特徴を以下に示す。

  • 2つのディスクへ同時書き込む(ミラーリング)を行い、かつ、データをブロック単位に分割(ストライピング)して書き込む。
  • RAID1の冗長性とRAID0の高速性を組み合わせたRAID方式。
  • 容量コストが倍になるが安全性の高いRAID構成である。


RAID Overview 4.jpg


※注意
データのバックアップを必ず取ることが推奨される。
ディスク障害時の交換手順も把握しておくことが重要となる。

システムの再起動後において、RAIDアレイが正常にマウントされることを確認すること。
RAID10の同期完了を待機した後、本番データを配置することが推奨される。


mdadmのインストール

mdadmパッケージをインストールする。

sudo dnf install mdadm



ディスクの確認

利用可能なディスクを確認する。

sudo fdisk -l
# または
lsblk



パーティションの作成 (オプション)

# X : ストレージ番号
sudo fdisk /dev/sdX


  1. [N]キーを押下して、新規パーティションを作成する。
  2. [P]キーを押下して、プライマリパーティションを作成する。
  3. 次に、デフォルトの開始セクタを入力する。
  4. デフォルトのサイズを入力する。
  5. [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