設定 - RAID10 (SUSE)

提供:MochiuWiki : SUSE, EC, PCB
2025年1月2日 (木) 17:35時点におけるWiki (トーク | 投稿記録)による版 (→‎RAID構成の保存)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

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 zypper install mdadm



ディスクの確認

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

sudo fdisk -l
# または
lsblk



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

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


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

詳細を知りたい場合は、設定_-_RAID10_(SUSE)#障害ディスクの特定のセクションを参照すること。

sudo mdadm --detail <作成したRAIDデバイス名>



RAID構成ファイルの作成および更新

sudo mkdir -p /etc/mdadm
sudo mdadm --detail --scan > /etc/mdadm/mdadm.conf


initrdを更新する。

sudo mkinitrd



RAID構成の保存

現在のRAID構成情報をシステムに永続的に保存する。

RAID構成の保存は、システムの信頼性と可用性を確保する上で非常に重要な手順となる。
設定を保存して、定期的に確認することにより、システムの安定運用が可能になる。

  • --detail
    詳細な構成情報を出力する。
  • --scan
    システム上の全てのRAIDアレイを検出する。


sudo mdadm --detail --scan >> /etc/mdadm.conf

# 生成される設定内容の例
ARRAY /dev/md0 metadata=1.2 name=hostname:0 UUID=3aaa0122:29827cff:1234:56789

・/dev/md0
RAIDデバイス名

・metadata
RAIDのメタデータバージョン

・name
ホスト名とアレイ番号

・UUID
RAIDアレイの一意の識別子


現在の構成と設定ファイルの整合性を確認する。

sudo mdadm --examine --scan



ファイルシステムの作成

# Btrfsの場合
sudo mkfs.btrfs <作成したRAIDデバイス名  例: /dev/md0>

# XFSの場合
sudo mkfs.xfs <作成したRAIDデバイス名  例: /dev/md0>



マウントポイントの作成とマウント

RAIDアレイをシステムで使用できるようにする。

マウントポイント (アクセスポイント) となるディレクトリ (一時的なマウントポイント) を作成する。
これは、RAIDアレイをファイルシステムに接続するための入り口である。

sudo mkdir <マウントディレクトリ  例: /mnt/raid10>


作成したRAIDアレイ (例: /dev/md0) を指定したディレクトリ (例: /mnt/raid10) にマウントする。
これにより、RAIDアレイがファイルシステムの一部として利用可能になる。

ユーザは通常のディレクトリとしてRAIDアレイにアクセス可能となる。

sudo mount <作成したRAIDデバイス名  例: /dev/md0> <マウントディレクトリ  例: /mnt/raid10>


上記の操作により、RAIDアレイが通常のファイルシステムの一部として利用可能になり、データの読み書きが可能になる。

※注意
マウントポイントは、空のディレクトリである必要がある。
マウント後、元々そのディレクトリに存在したファイルは視認できなくなる。
マウント解除するまで、RAIDアレイのデータにアクセス可能である。

マウント情報の確認

マウント情報を確認する。

df -h
# または
mount | grep md0


マウント解除が必要な場合

sudo umount /mnt/raid10


アクセス権限の設定

必要に応じて、マウントポイントの所有者やパーミッションを設定する。

sudo chown <ユーザ名>:<グループ名> <マウントポイント  例: /mnt/raid10>
sudo chmod 755 <マウントポイント  例: /mnt/raid10>



永続的なマウントの設定

システム再起動後も自動的にマウントさせるには、/etc/fstabファイルに設定を追加する。

sudo vi /etc/fstab


# /etc/fstabファイル

<作成するRAIDデバイス名  例: /dev/md0> <マウントディレクトリ  例: /mnt/raid10> <ファイルシステム  例: btrfs> defaults 0 0

# 設定例
## Btrfsの場合
/dev/md0 /mnt/raid10 btrfs defaults 0 0
## XFSの場合
/dev/md0 /mnt/raid10 xfs defaults 0 0



RAIDアレイの状態監視

RAIDアレイの状態を確認するための異なる2つの方法がある。

  • cat /proc/mdstat
    簡単な状態確認を行う。
    再同期の進行状況の監視する。
    全RAIDアレイの概要を把握する。

  • sudo mdadm --detailコマンド
    特定のRAIDアレイの詳細確認
    トラブルシューティング
    設定内容を確認する。


方法 1 : cat /proc/mdstat

Linuxカーネルが管理している全てのRAIDデバイスの状態をリアルタイムで表示する。

cat /proc/mdstat

# 出力例:

Personalities : [raid10] [raid6] [raid5] [raid4] [raid1] 
md0 : active raid10 sdd1[3] sdc1[2] sdb1[1] sda1[0]
      1000000 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

unused devices: <none>


  • Personalities
    サポートされているRAIDレベル
  • active
    RAIDアレイの状態
  • [4/4]
    全ディスク数 / アクティブディスク数
  • [UUUU]
    各ディスクの状態 (U=Up, _=Down)
    再同期中の場合は進行状況も表示される。


方法 2 : sudo mdadm --detailコマンド

指定したRAIDアレイの詳細な情報を表示する。
より多くの具体的な情報を確認可能である。

sudo mdadm --detail <作成したRAIDデバイス名  例: /dev/md0>

# 出力例:

/dev/md0:
        Version : 1.2
  Creation Time : Wed Jan 1 12:00:00 2024
     Raid Level : raid10
     Array Size : 1000000 (976.56 GiB)
  Used Dev Size : 500000 (488.28 GiB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Wed Jan 1 15:00:00 2024
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0


  • 基本情報
    • RAIDレベル
    • アレイサイズ
    • 作成日時

  • 状態情報
    • 現在の状態(clean, degraded等)
    • アクティブデバイス数
    • 故障デバイス数
    • スペアデバイス数

  • デバイス詳細
    • 各ディスクの状態
    • デバイスの役割
    • 同期状態



障害発生時の対応手順

障害ディスクの特定

--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アレイのデータ整合性を保ちながら、安全にディスクを取り外すことができる。

新しいディスクの追加

新しいディスクをRAIDアレイに追加する。

自動的に同期 (再構築) プロセスが開始される。
同期中もRAIDアレイは使用可能である。

このコマンドは、故障したディスクの交換後、RAIDアレイの拡張時、スペアディスクの追加した時等に実行する。

# X : ストレージ番号
# A : パーティション番号
sudo mdadm <対象のRAIDアレイ  例: /dev/md0> \
           --add <追加する新しいディスク  例: /dev/sdXA>


  1. 新しいディスクを物理的に接続する。
  2. 必要な場合は、ディスクを初期化する。
  3. --addオプションを付加して、新しいディスクをRAIDアレイに追加する。
  4. 同期完了まで待機する。
  5. 状態を確認する。(同期の進行状況と新しいディスクの状態を確認)
    sudo mdadm --detail <対象のRAIDアレイ 例: /dev/md0>


※注意
追加するディスクは未使用、または、パーティションテーブルが消去されている必要がある。
ディスクサイズは既存のディスクと同じかそれ以上である必要がある。

同期プロセス中はシステムのパフォーマンスが低下する可能性がある。


メール通知の設定

RAIDアレイに関する重要なイベントが発生した場合に、システム管理者に自動的にメール通知を送信するための設定である。

通知される主なイベント

  • ディスク障害の検出
  • RAIDアレイの劣化状態
  • 再構築(リビルド)の開始と完了
  • その他の重要なRAIDイベント


メール通知の設定のメリットを以下に示す。

  • 障害の早期発見が可能となる。
  • システムの予防的なメンテナンスが可能となる。
  • 問題発生時の迅速な対応が可能となる。
  • システムの信頼性向上する。


※注意
メールサーバが正しく設定されていることを確認する。
スパムフィルタでブロックされないように設定する。

また、バックアップ通知手段も検討することが推奨される。

メール通知を機能させるための設定を行う。
まず、メール送信に必要なパッケージをインストールする。

sudo zypper install postfix mailx


postfixサービスを起動する。

sudo systemctl enable postfix
sudo systemctl start postfix


次に、/etc/mdadm/mdadm.confファイルの設定を変更する。

sudo vi /etc/mdadm/mdadm.conf


# /etc/mdadm/mdadm.confファイル

# 単一の管理者にのみ通知する場合
MAILADDR admin@example.com

# 複数の管理者に通知する場合
MAILADDR admin1@example.com,admin2@example.com

# 通知プログラムの指定(必要な場合)
PROGRAM /usr/local/bin/custom-notify-script


通知設定のテストを行う。

# テストメールの送信
echo "Test email" | mail -s "RAID Test" admin@example.com

# mdadmの通知機能のテスト
sudo mdadm --monitor --scan --test



パフォーマンスチューニング

# readaheadの設定
sudo blockdev --setra 4096 /dev/md0


# stripeキャッシュの設定
echo 4096 > /sys/block/md0/md/stripe_cache_size