序章

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デバイスに関する詳細情報を取得するには、RAIDデバイスを -D また --detail オプション mdadm:

  1. 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 詳細ビューのフラグ:

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

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

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

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

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

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

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

  1. 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 オプション:

  1. 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 ファイル。 これは、多くの場合、システム上のアクティブなアレイの現在のステータスを見つけるための最良の方法です。

  1. cat /proc/mdstat
Output
Personalities : [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
. . .

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

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

アレイの停止

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

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

  1. cd ~
  2. sudo umount /mnt/md0

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

  1. sudo mdadm --stop --scan

特定の配列を停止する場合は、それをに渡します mdadm --stop 指図:

  1. sudo mdadm --stop /dev/md0

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

アレイの開始

構成ファイルで定義されているすべてのアレイを開始するには、または /proc/mdstat、 タイプ:

  1. sudo mdadm --assemble --scan

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

  1. sudo mdadm --assemble /dev/md0

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

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

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

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

  1. sudo mount /dev/md0 /mnt/md0

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

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

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

スペアを追加するには、アレイと新しいデバイスをに渡すだけです。 mdadm --add 指図:

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

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

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

  1. sudo nano /etc/mdadm/mdadm.conf

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

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

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

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

新しい情報は、 mdadm アレイをアセンブルするユーティリティ。

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

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

RAID1または10の場合

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

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

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

  1. 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つであることがわかります(スペアを追加したため)。

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

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

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

  1. cat /proc/mdstat

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

RAID5または6の場合

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

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

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

  1. 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の場所を指している必要があります。

ノート

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

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

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

Output
mdadm: Need to backup 3072K of critical section..

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

  1. cat /proc/mdstat

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

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

  1. sudo resize2fs /dev/md0

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

RAID0の場合

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

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

  1. 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デバイスの数を増やすことができます。

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

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

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

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

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

  1. cat /proc/mdstat

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

  1. sudo resize2fs /dev/md0

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

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

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

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

  1. 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 オプション:

  1. sudo mdadm /dev/md0 --fail /dev/sdc
Output
mdadm: set /dev/sdc faulty in /dev/md0

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

デバイスに障害が発生したら、次の方法でアレイからデバイスを削除できます。 mdadm --remove:

  1. sudo mdadm /dev/md0 --remove /dev/sdc
Output
mdadm: hot removed /dev/sdc from /dev/md0

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

  1. sudo mdadm /dev/md0 --add /dev/sdd
Output
mdadm: added /dev/sdd

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

アレイの削除

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

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

  1. cd ~
  2. sudo umount /mnt/md0

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

  1. sudo mdadm --stop /dev/md0

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

  1. sudo mdadm --remove /dev/md0

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

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

  1. lsblk --fs
Output
NAME 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 はすべてアレイの一部であり、そのようにラベル付けされています。

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

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

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

  1. sudo nano /etc/fstab
/ etc / fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

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

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

  1. nano /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706 

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

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

  1. sudo update-initramfs -u

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

結論

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

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