Ubuntu16.04でmdadmを使用してRAIDアレイを管理する方法

提供:Dev Guides
移動先:案内検索

序章

RAIDアレイは、個々のディスクを特定の構成の仮想ストレージデバイスに結合することにより、パフォーマンスと冗長性を向上させます。 Linuxでは、mdadmユーティリティを使用すると、ソフトウェアRAIDアレイを簡単に作成および管理できます。

以前のガイドでは、 Ubuntu16.04でmdadmを使用してRAIDアレイを作成する方法について説明しました。 このガイドでは、Ubuntu16.04サーバーでRAIDアレイを管理する方法を示します。 ほとんどの場合、RAIDアレイの管理は非常に簡単です。

前提条件

このガイドを完了するには、ルート以外のsudoユーザーにアクセスする必要があります。 Ubuntu 16.04初期サーバーセットアップガイドに従って、適切なユーザーをセットアップできます。

前述のように、このガイドではRAIDアレイ管理について説明します。 このガイドを開始する前に、 Ubuntu 16.04 でmdadmを使用してRAIDアレイを作成する方法に関するガイドに従って、1つ以上のアレイを作成してください。 このガイドでは、操作するアレイが1つ以上あることを前提としています。

RAIDデバイスに関する情報のクエリ

適切な管理のための最も重要な要件の1つは、アレイの構造、コンポーネントデバイス、および現在の状態に関する情報を見つける機能です。

RAIDデバイスの詳細情報を取得するには、-Dまたは--detailオプションを指定したRAIDデバイスをmdadmに渡します。

sudo mdadm -D /dev/md0

アレイに関する重要な情報が表示されます。

Output/dev/md0:
        Version : 1.2
  Creation Time : Mon Aug  8 21:19:06 2016
     Raid Level : raid10
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Aug  8 21:36:36 2016
          State : active 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : mdadmwrite:0  (local to host mdadmwrite)
           UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync set-A   /dev/sda
       1       8       16        1      active sync set-B   /dev/sdb
       2       8       32        2      active sync set-A   /dev/sdc
       3       8       48        3      active sync set-B   /dev/sdd

このビューから、RAIDレベル、アレイサイズ、個々のピースの状態、アレイのUUID、およびコンポーネントデバイスとその役割を確認できます。 このビューで提供される情報はすべて、かなり適切にラベル付けされています。

/dev/mdadm/mdadm.confファイルに追加するのに適した、配列の短縮された詳細を取得するには、詳細ビューで--briefまたは-bフラグを渡すことができます。

sudo mdadm -Db /dev/md0
OutputARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=0dc2e687:1dfe70ac:d440b2ac:5828d61d

RAIDデバイスの人間が読める形式の概要をすばやく取得するには、-Qオプションを使用してクエリを実行します。

sudo mdadm -Q /dev/md0
Output/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

これを使用して、RAIDデバイスに関する重要な情報を一目で見つけることができます。

コンポーネントデバイスに関する情報の取得

mdadmを使用して、個々のコンポーネントデバイスを照会することもできます。

-Qオプションをコンポーネントデバイスで使用すると、そのアレイが含まれているアレイとその役割がわかります。

sudo mdadm -Q /dev/sdc
Output/dev/sdc: is not an md array
/dev/sdc: device 2 in 4 device active raid10 /dev/md0.  Use mdadm --examine for more detail.

-Eまたは--examineオプションを使用すると、より詳細な情報を取得できます。

sudo mdadm -E /dev/sdc
Output/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d
           Name : mdadmwrite:0  (local to host mdadmwrite)
  Creation Time : Mon Aug  8 21:19:06 2016
     Raid Level : raid10
   Raid Devices : 4

 Avail Dev Size : 209584128 (99.94 GiB 107.31 GB)
     Array Size : 209584128 (199.88 GiB 214.61 GB)
    Data Offset : 131072 sectors
   Super Offset : 8 sectors
   Unused Space : before=130984 sectors, after=0 sectors
          State : active
    Device UUID : b0676ef0:73046e93:9d9c7bde:c80352bb

    Update Time : Mon Aug  8 21:36:36 2016
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 8be1be96 - correct
         Events : 18

         Layout : near=2
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)

この情報は、アレイデバイスで-Dオプションを使用した場合に表示される情報と似ていますが、コンポーネントデバイスとアレイの関係に焦点を当てています。

/ proc/mdstat情報の読み取り

サーバー上でアセンブルされた各アレイの詳細情報を入手するには、/proc/mdstatファイルを確認してください。 これは、多くの場合、システム上のアクティブなアレイの現在のステータスを見つけるための最良の方法です。

cat /proc/mdstat
OutputPersonalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      
unused devices: <none>

ここでの出力は非常に高密度であり、小さなスペースで多くの情報を提供します。

/ proc / mdstat

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
. . .

Personalities 行は、カーネルが現在サポートしているさまざまなRAIDレベルと構成を示しています。

md0 で始まる行は、RAIDデバイスの説明の始まりを示しています。 次のインデントされた線も、このデバイスを説明しています。

/ proc / mdstat

. . .
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
. . .

最初の行は、アレイがアクティブ(障害ではない)であり、RAID10として構成されていることを示しています。 その後、アレイの構築に使用されたコンポーネントデバイスが一覧表示されます。 括弧内の数字は、アレイ内のデバイスの現在の「役割」を示しています(これは、デバイスに与えられるデータのコピーに影響します)。

/ proc / mdstat

. . .
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
. . .

この例で表示される2行目は、仮想デバイスが提供するブロック数、メタデータバージョン(この例では1.2)、およびアレイのチャンクサイズを示しています。 これはRAID10アレイであるため、アレイのレイアウトに関する情報も含まれています(この例では、データの各チャンクの2つのコピーを「近い」レイアウトに格納するように構成されています)。

角括弧内の最後の項目は両方とも、正常なセットから現在利用可能なデバイスを表しています。 数字の括弧内の最初の数字は正常なアレイのサイズを示し、2番目の数字は現在使用可能なデバイスの数を示します。 他の括弧はアレイの状態を視覚的に示しており、「U」は正常なデバイスを表し、「_」は障害のあるデバイスを表します。

アレイが現在アセンブルまたはリカバリしている場合は、進行状況を示す別の行がある可能性があります。 次のようになります。

/ proc / mdstat

. . .
      [>....................]  resync =  0.9% (2032768/209584128) finish=15.3min speed=225863K/sec
. . .

これは、現在適用されている操作と現在の進行状況をさまざまな方法で説明します。 また、現在の速度と完了までの推定時間を提供します。

システムで現在実行されているアレイを把握したら、実行できるアクションがいくつかあります。

アレイの停止

アレイを停止するには、最初のステップはアレイをアンマウントすることです。

マウントされたディレクトリの外に出て、次のように入力してマウントを解除します。

cd ~
sudo umount /mnt/md0

次のように入力すると、アクティブなすべてのアレイを停止できます。

sudo mdadm --stop --scan

特定のアレイを停止する場合は、それをmdadm --stopコマンドに渡します。

sudo mdadm --stop /dev/md0

これにより、アレイが停止します。 再度アクセスするには、アレイを再アセンブルする必要があります。

アレイの開始

構成ファイルまたは/proc/mdstatで定義されているすべてのアレイを開始するには、次のように入力します。

sudo mdadm --assemble --scan

特定の配列を開始するには、それを引数としてmdadm --assembleに渡すことができます。

sudo mdadm --assemble /dev/md0

これは、アレイが構成ファイルで定義されている場合に機能します。

アレイの正しい定義が構成ファイルにない場合でも、コンポーネントデバイスを渡すことでアレイを開始できます。

sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd

アレイを組み立てたら、通常どおりにマウントできます。

sudo mount /dev/md0 /mnt/md0

これで、マウントポイントでアレイにアクセスできるようになります。

アレイへのスペアデバイスの追加

スペアデバイスは、冗長性を提供する任意のアレイ(RAID 1、5、6、または10など)に追加できます。 アクティブなデバイスに障害が発生しない限り、スペアはアレイによってアクティブに使用されません。 これが発生すると、アレイはデータをスペアドライブに再同期して、アレイを完全な状態に修復します。 スペアは非冗長アレイ(RAID 0)に追加できません。これは、アレイがドライブの障害に耐えられないためです。

スペアを追加するには、アレイと新しいデバイスをmdadm --addコマンドに渡すだけです。

sudo mdadm /dev/md0 --add /dev/sde

アレイが劣化状態にない場合は、新しいデバイスがスペアとして追加されます。 デバイスが現在劣化している場合、再同期操作はすぐにスペアを使用して障害のあるドライブを交換し始めます。

スペアを追加した後、新しいデバイスの向きを反映するように構成ファイルを更新します。

sudo nano /etc/mdadm/mdadm.conf

配列定義に対応する現在の行を削除またはコメントアウトします。

/etc/mdadm/mdadm.conf

. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=d81c843b:4d96d9fc:5f3f499c:6ee99294

その後、現在の構成を追加します。

sudo mdadm --detail --brief /dev/md0 | sudo tee -a /etc/mdadm/mdadm.conf

新しい情報は、mdadmユーティリティがアレイを組み立てるために使用します。

アレイ内のアクティブデバイスの数を増やす

アセンブリ内のアクティブなデバイスの数を増やすことで、アレイを拡張できます。 正確な手順は、使用しているRAIDレベルによってわずかに異なります。

RAID1または10の場合

前のセクションで示したように、スペアとして新しいデバイスを追加することから始めます。

sudo mdadm /dev/md0 --add /dev/sde

アレイ内のRAIDデバイスの現在の数を確認します。

sudo mdadm --detail /dev/md0
Output/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 15:29:26 2016
     Raid Level : raid1
     Array Size : 104792064 (99.94 GiB 107.31 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    . . .

この例では、アレイが2つのデバイスをアクティブに使用するように構成されており、アレイで使用可能なデバイスの総数が3つであることがわかります(スペアを追加したため)。

次に、アレイを再構成して、アクティブなデバイスを追加します。 スペアは、追加のドライブ要件を満たすために使用されます。

sudo mdadm --grow --raid-devices=3 /dev/md0

アレイは、追加のアクティブディスクで再構成を開始します。 データの同期の進行状況を表示するには、次のように入力します。

cat /proc/mdstat

プロセスが完了するまで、デバイスを引き続き使用できます。

RAID5または6の場合

前のセクションで示したように、スペアとして新しいデバイスを追加することから始めます。

sudo mdadm /dev/md0 --add /dev/sde

アレイ内のRAIDデバイスの現在の数を確認します。

sudo mdadm --detail /dev/md0
Output/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 18:38:51 2016
     Raid Level : raid5
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    . . .

この例では、アレイが3つのデバイスをアクティブに使用するように構成されており、アレイで使用可能なデバイスの総数が4つであることがわかります(スペアを追加したため)。

次に、アレイを再構成して、アクティブなデバイスを追加します。 スペアは、追加のドライブ要件を満たすために使用されます。 RAID5またはRAID6アレイを拡張する場合、--backup-fileと呼ばれる追加オプションを含めることが重要です。 これは、重要な情報を含むバックアップファイルが保存されるアレイのoffの場所を指している必要があります。

ノート

バックアップファイルは、このプロセス中の非常に短いが重要な時間にのみ使用され、その後自動的に削除されます。 これが必要な時間は非常に短いため、ディスク上のファイルが表示されることはほとんどありませんが、問題が発生した場合は、アレイの再構築に使用できます。 この投稿には、詳細を知りたい場合の追加情報があります。


sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0

次の出力は、クリティカルセクションがバックアップされることを示しています。

Outputmdadm: Need to backup 3072K of critical section..

アレイは、追加のアクティブディスクで再構成を開始します。 データの同期の進行状況を表示するには、次のように入力します。

cat /proc/mdstat

このプロセスが完了するまで、デバイスを引き続き使用できます。

再形成が完了したら、追加のスペースを利用するために、アレイ上のファイルシステムを拡張する必要があります。

sudo resize2fs /dev/md0

これで、アレイの容量に一致するファイルシステムが作成されます。

RAID0の場合

RAID 0アレイにはスペアドライブを含めることができないため(スペアが損傷したRAID 0アレイを再構築する可能性はありません)、アレイを拡張すると同時に新しいデバイスを追加する必要があります。

まず、アレイ内のRAIDデバイスの現在の数を確認します。

sudo mdadm --detail /dev/md0
Output/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 19:17:14 2016
     Raid Level : raid0
     Array Size : 209584128 (199.88 GiB 214.61 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    . . .

これで、新しいドライブの追加と同じ操作でRAIDデバイスの数を増やすことができます。

sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc

アレイがRAID4に変更されたことを示す出力が表示されます。

Outputmdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/sdc

これは正常であり、予想されます。 データが既存のすべてのディスクに再配布されると、アレイはRAID0に戻ります。

次のように入力すると、アクションの進行状況を確認できます。

cat /proc/mdstat

同期が完了したら、追加のスペースを使用するようにファイルシステムのサイズを変更します。

sudo resize2fs /dev/md0

これで、アレイの容量に一致するファイルシステムが作成されます。

アレイからのデバイスの削除

障害が発生した場合、またはディスクを切り替える必要がある場合は、RAIDアレイからドライブを取り外す必要がある場合があります。

デバイスを削除するには、最初にアレイ内で「障害が発生した」とマークする必要があります。 mdadm --detailを使用して、障害が発生したデバイスがあるかどうかを確認できます。

sudo mdadm --detail /dev/md0
Output/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 21:42:12 2016
     Raid Level : raid5
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Thu Aug 11 14:10:43 2016
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           Name : mdadmwrite:0  (local to host mdadmwrite)
           UUID : bf7a711b:b3aa9440:40d2c12e:79824706
         Events : 144

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8        0        1      active sync   /dev/sda
       2       8       16        2      active sync   /dev/sdb
       0       8       32        -      faulty   /dev/sdc

強調表示された行はすべて、ドライブが機能していないことを示しています(この例では/dev/sdc)。

問題のないドライブを削除する必要がある場合は、--failオプションを使用して、手動でドライブに障害のマークを付けることができます。

sudo mdadm /dev/md0 --fail /dev/sdc
Outputmdadm: set /dev/sdc faulty in /dev/md0

mdadm --detailの出力を見ると、デバイスに障害のマークが付けられていることがわかります。

デバイスに障害が発生したら、mdadm --removeを使用してアレイからデバイスを削除できます。

sudo mdadm /dev/md0 --remove /dev/sdc
Outputmdadm: hot removed /dev/sdc from /dev/md0

次に、スペアの追加に使用するのと同じmdadm --addコマンドを使用して、新しいドライブと交換できます。

sudo mdadm /dev/md0 --add /dev/sdd
Outputmdadm: added /dev/sdd

アレイは、データを新しいドライブにコピーすることで回復を開始します。

アレイの削除

アレイに含まれるすべてのデータを含むアレイを破棄するには、アレイの停止に使用したプロセスに従うことから始めます。

まず、ファイルシステムをアンマウントします。

cd ~
sudo umount /mnt/md0

次に、アレイを停止します。

sudo mdadm --stop /dev/md0

その後、RAIDデバイスを対象とする--removeコマンドを使用して、アレイ自体を削除します。

sudo mdadm --remove /dev/md0

アレイ自体を削除したら、各コンポーネントデバイスでmdadm --zero-superblockを使用する必要があります。 これにより、mdスーパーブロックが消去されます。これは、mdadmがアレイの一部としてコンポーネントデバイスを組み立て、管理するために使用するヘッダーです。 これがまだ存在する場合は、他の目的でディスクを再利用しようとしたときに問題が発生する可能性があります。

lsblk --fs出力のFSTYPE列を確認すると、スーパーブロックがまだアレイに存在していることがわかります。

lsblk --fs
OutputNAME    FSTYPE            LABEL        UUID                                 MOUNTPOINT
sda     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdb     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdc     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdd                                                                         
vda                                                                         
├─vda1  ext4              DOROOT       4f8b85db-8c11-422b-83c4-c74195f67b91 /
└─vda15

この例では、/dev/sda/dev/sdb、および/dev/sdcはすべてアレイの一部であり、そのようにラベル付けされています。

次のように入力してラベルを削除します。

sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc

次に、/etc/fstabファイル内の配列への参照を削除またはコメントアウトしてください。

sudo nano /etc/fstab

/ etc / fstab

. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

終了したら、ファイルを保存して閉じます。

/etc/mdadm/mdadm.confファイルからも配列への参照を削除またはコメントアウトします。

nano /etc/mdadm/mdadm.conf

/etc/mdadm/mdadm.conf

# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706 

終了したら、ファイルを保存して閉じます。

次のように入力して、initramfsを更新します。

sudo update-initramfs -u

これにより、デバイスがアーリーブート環境から削除されます。

結論

Linuxのmdadmユーティリティを使用すると、使用する規則と情報を探すことができる場所を理解すれば、アレイの管理がかなり簡単になります。 このガイドは完全なものではありませんが、日常的に実行する必要のある管理タスクのいくつかを紹介するのに役立ちます。

mdadmを使用したRAIDアレイの作成と管理に慣れたら、次に検討できるさまざまな方向性があります。 LVMのようなボリューム管理レイヤーはRAIDと緊密に統合されており、スペースを論理ボリュームに柔軟に分割できます。 同様に、LUKSとdm-crypt暗号化は、ファイルシステムを書き込む前にRAIDデバイスを暗号化するために一般的に使用されます。 Linuxでは、これらすべてのテクノロジーを一緒に使用して、ストレージ機能を強化できます。