Ubuntu 16.04でmdadmを使用してRAIDアレイを管理する方法

前書き

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

以前のガイドでは、https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-16-04 [`でRAIDアレイを作成する方法+ mdadm + `on Ubuntu 16.04]。 このガイドでは、Ubuntu 16.04サーバーでRAIDアレイを管理する方法を示します。 ほとんどの場合、RAIDアレイの管理は非常に簡単です。

前提条件

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

前述のように、このガイドではRAIDアレイ管理について説明します。 `+ mdadm +`でRAIDアレイを作成する方法Ubuntu 16.04では、このガイドを開始する前に1つ以上のアレイを作成します。 このガイドでは、操作対象のアレイが1つ以上あることを前提としています。

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

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

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

sudo mdadm -D /dev/

配列に関する重要な情報が表示されます。

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/
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/
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/
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]
. . .

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

/ proc / mdstat

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

この例で表示される2行目には、仮想デバイスが提供するブロック数、メタデータバージョン(この例では1.2)、およびアレイのチャンクサイズが示されます。 これはRAID 10アレイであるため、アレイのレイアウトに関する情報も含まれています(この例は、各データチャンクの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/

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

配列の開始

設定ファイルまたは `+ / proc / mdstat +`で定義されているすべての配列を開始するには、次のように入力します。

sudo mdadm --assemble --scan

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

sudo mdadm --assemble /dev/

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

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

sudo mdadm --assemble /dev/ /dev/ /dev/ /dev/ /dev/

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

sudo mount /dev/ /mnt/

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

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

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

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

sudo mdadm /dev/ --add /dev/

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

スペアを追加したら、構成ファイルを更新して、新しいデバイスの向きを反映させます。

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/ | sudo tee -a /etc/mdadm/mdadm.conf

新しい情報は、 `+ mdadm +`ユーティリティによって配列を組み立てるために使用されます。

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

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

RAID 1または10

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

sudo mdadm /dev/ --add /dev/

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

sudo mdadm --detail /dev/
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)


   Persistence : Superblock is persistent

   . . .

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

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

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

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

cat /proc/mdstat

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

RAID 5または6

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

sudo mdadm /dev/ --add /dev/

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

sudo mdadm --detail /dev/
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)


   Persistence : Superblock is persistent

   . . .

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

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

Note

sudo mdadm --grow --raid-devices= --backup-file= /dev/

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

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

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

cat /proc/mdstat

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

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

sudo resize2fs /dev/md0

アレイには、容量に合ったファイルシステムが必要です。

RAID 0を使用

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

まず、アレイ内のRAIDデバイスの現在の数を調べます。

sudo mdadm --detail /dev/
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)


   Persistence : Superblock is persistent

   . . .

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

sudo mdadm --grow /dev/ --raid-devices= --add /dev/

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

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

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

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

cat /proc/mdstat

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

sudo resize2fs /dev/

アレイには、容量に合ったファイルシステムが必要です。

アレイからデバイスを削除する

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

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

sudo mdadm --detail /dev/
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

Active Devices : 2
Working Devices : 2

 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

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

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

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

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

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

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

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

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

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

配列の削除

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

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

cd ~
sudo umount

次に、配列を停止します。

sudo mdadm --stop /dev/

その後、RAIDデバイスを対象とした `+-remove +`コマンドでアレイ自体を削除します。

sudo mdadm --remove /dev/

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

`+ lsblk --fs `の出力の ` FSTYPE +`カラムをチェックアウトすると、スーパーブロックがまだ配列に存在していることがわかります。

lsblk --fs
OutputNAME    FSTYPE            LABEL        UUID                                 MOUNTPOINT
sda      mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706
sdb      mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706
sdc      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/ /dev/ /dev/

次に、 `+ / 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では、これらすべてのテクノロジーを一緒に使用して、ストレージ機能を強化できます。

Related