Ubuntu18.04でmdadmを使用してRAIDアレイを作成する方法
序章
mdadm
ユーティリティは、LinuxのソフトウェアRAID機能を使用してストレージアレイを作成および管理するために使用できます。 管理者は、個々のストレージデバイスを調整し、パフォーマンスまたは冗長性の特性が優れた論理ストレージデバイスを作成する際に大きな柔軟性を備えています。
このガイドでは、Ubuntu18.04サーバーを使用してセットアップできるさまざまなRAID構成について説明します。
前提条件
このガイドの手順を完了するには、次のものが必要です。
- Ubuntu 18.04サーバーでsudo権限を持つroot以外のユーザー:このガイドの手順は、
sudo
ユーザーで完了します。 これらの権限でアカウントを設定する方法については、Ubuntu18.04初期サーバー設定ガイドに従ってください。 - RAIDの用語と概念の基本的な理解:このガイドでは、いくつかのRAIDの用語に触れますが、より完全な理解は非常に役立ちます。 RAIDの詳細と、自分に適したRAIDレベルをよりよく理解するには、RAIDの概要に関する記事をお読みください。
- サーバーで利用可能な複数のrawストレージデバイス:サーバーでさまざまなタイプのアレイを構成する方法を示します。 そのため、構成するにはいくつかのドライブが必要になります。 DigitalOceanを使用している場合は、ブロックストレージボリュームを使用してこの役割を果たすことができます。 アレイの種類に応じて、少なくとも 2〜4台のストレージデバイスが必要になります。 これらのドライブは、このガイドに従う前にフォーマットする必要はありません。
既存のRAIDデバイスのリセット
このガイド全体を通して、さまざまなRAIDレベルを作成する手順を紹介します。 フォローしたい場合は、各セクションの後でストレージデバイスを再利用することをお勧めします。 このセクションを参照して、新しいRAIDレベルをテストする前にコンポーネントストレージデバイスをすばやくリセットする方法を学ぶことができます。 アレイをまだ設定していない場合は、このセクションをスキップしてください。
警告:このプロセスは、アレイとそれに書き込まれたデータを完全に破棄します。 正しいアレイで操作していること、およびアレイを破棄する前に保持する必要のあるデータをコピーしたことを確認してください。
次のように入力して、/proc/mdstat
ファイルでアクティブなアレイを見つけます。
- cat /proc/mdstat
OutputPersonalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdc[1] sdd[0]
209584128 blocks super 1.2 512k chunks
unused devices: <none>
ファイルシステムからアレイをアンマウントします。
- sudo umount /dev/md0
次に、次のように入力して、アレイを停止して削除します。
- sudo mdadm --stop /dev/md0
次のコマンドを使用して、アレイの構築に使用されたデバイスを検索します。
警告: /dev/sd*
の名前は、再起動するたびに変更される可能性があることに注意してください。 毎回それらをチェックして、正しいデバイスで操作していることを確認してください。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G linux_raid_member disk
sdd 100G linux_raid_member disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
アレイの作成に使用されたデバイスを検出したら、スーパーブロックをゼロにしてRAIDメタデータを削除し、通常の状態にリセットします。
- sudo mdadm --zero-superblock /dev/sdc
- sudo mdadm --zero-superblock /dev/sdd
配列への永続的な参照をすべて削除する必要があります。 /etc/fstab
ファイルを編集し、配列への参照をコメントアウトまたは削除します。
- sudo nano /etc/fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0
また、/etc/mdadm/mdadm.conf
ファイルから配列定義をコメントアウトまたは削除します。
- sudo nano /etc/mdadm/mdadm.conf
. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91
最後に、initramfs
を再度更新して、アーリーブートプロセスが使用できないアレイをオンラインにしようとしないようにします。
- sudo update-initramfs -u
この時点で、ストレージデバイスを個別に、または別のアレイのコンポーネントとして再利用する準備ができているはずです。
RAID0アレイの作成
RAID 0アレイは、データをチャンクに分割し、使用可能なディスク全体にストライピングすることで機能します。 これは、各ディスクにデータの一部が含まれており、情報を取得するときに複数のディスクが参照されることを意味します。
- 要件:最低2つのストレージデバイス
- 主な利点:パフォーマンス
- 注意事項:機能的なバックアップがあることを確認してください。 単一のデバイスに障害が発生すると、アレイ内のすべてのデータが破壊されます。
コンポーネントデバイスの識別
開始するには、使用するrawディスクの識別子を見つけます。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
上記のように、ファイルシステムのない2つのディスクがあり、それぞれのサイズは100Gです。 この例では、これらのデバイスには、このセッションの/dev/sda
および/dev/sdb
識別子が与えられています。 これらは、アレイの構築に使用する生のコンポーネントになります。
アレイの作成
これらのコンポーネントを使用してRAID0アレイを作成するには、それらをmdadm --create
コマンドに渡します。 作成するデバイス名(この場合は/dev/md0
)、RAIDレベル、およびデバイスの数を指定する必要があります。
- sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb
/proc/mdstat
ファイルをチェックすることにより、RAIDが正常に作成されたことを確認できます。
- cat /proc/mdstat
OutputPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdb[1] sda[0]
209584128 blocks super 1.2 512k chunks
unused devices: <none>
強調表示された行でわかるように、/dev/md0
デバイスは、/dev/sda
および/dev/sdb
デバイスを使用してRAID0構成で作成されています。
ファイルシステムの作成とマウント
次に、アレイ上にファイルシステムを作成します。
- sudo mkfs.ext4 -F /dev/md0
新しいファイルシステムを接続するためのマウントポイントを作成します。
- sudo mkdir -p /mnt/md0
次のように入力して、ファイルシステムをマウントできます。
- sudo mount /dev/md0 /mnt/md0
次のように入力して、新しいスペースが使用可能かどうかを確認します。
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 196G 61M 186G 1% /mnt/md0
新しいファイルシステムがマウントされ、アクセス可能になります。
アレイレイアウトの保存
起動時にアレイが自動的に再構築されるようにするには、/etc/mdadm/mdadm.conf
ファイルを調整する必要があります。 次のように入力すると、アクティブなアレイを自動的にスキャンしてファイルを追加できます。
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
その後、initramfsまたは初期RAMファイルシステムを更新して、初期の起動プロセス中にアレイを使用できるようにすることができます。
- sudo update-initramfs -u
起動時に自動マウントするために、新しいファイルシステムマウントオプションを/etc/fstab
ファイルに追加します。
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
これで、RAID 0アレイが自動的に組み立てられ、ブートごとにマウントされます。
RAID1アレイの作成
RAID 1アレイタイプは、使用可能なすべてのディスク間でデータをミラーリングすることによって実装されます。 RAID 1アレイの各ディスクはデータの完全なコピーを取得し、デバイスに障害が発生した場合に冗長性を提供します。
- 要件:最低2つのストレージデバイス
- 主な利点:冗長性
- 注意事項:データの2つのコピーが維持されるため、ディスク容量の半分のみが使用可能になります
コンポーネントデバイスの識別
開始するには、使用するrawディスクの識別子を見つけます。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
上記のように、ファイルシステムのない2つのディスクがあり、それぞれのサイズは100Gです。 この例では、これらのデバイスには、このセッションの/dev/sda
および/dev/sdb
識別子が与えられています。 これらは、アレイの構築に使用する生のコンポーネントになります。
アレイの作成
これらのコンポーネントを使用してRAID1アレイを作成するには、それらをmdadm --create
コマンドに渡します。 作成するデバイス名(この場合は/dev/md0
)、RAIDレベル、およびデバイスの数を指定する必要があります。
- sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
使用しているコンポーネントデバイスがboot
フラグが有効になっているパーティションでない場合、次の警告が表示される可能性があります。 続行するには、yと入力しても安全です。
Outputmdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 104792064K
Continue creating array? y
mdadm
ツールがドライブのミラーリングを開始します。 これは完了するまでに時間がかかる場合がありますが、この時間中にアレイを使用できます。 /proc/mdstat
ファイルを確認することで、ミラーリングの進行状況を監視できます。
- cat /proc/mdstat
OutputPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sda[0]
104792064 blocks super 1.2 [2/2] [UU]
[====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec
unused devices: <none>
最初に強調表示されている行でわかるように、/dev/md0
デバイスは、/dev/sda
および/dev/sdb
デバイスを使用してRAID1構成で作成されています。 2番目に強調表示されている行は、ミラーリングの進行状況を示しています。 このプロセスが完了するまで、ガイドを続けることができます。
ファイルシステムの作成とマウント
次に、アレイ上にファイルシステムを作成します。
- sudo mkfs.ext4 -F /dev/md0
新しいファイルシステムを接続するためのマウントポイントを作成します。
- sudo mkdir -p /mnt/md0
次のように入力して、ファイルシステムをマウントできます。
- sudo mount /dev/md0 /mnt/md0
次のように入力して、新しいスペースが使用可能かどうかを確認します。
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 99G 60M 94G 1% /mnt/md0
新しいファイルシステムがマウントされ、アクセス可能になります。
アレイレイアウトの保存
起動時にアレイが自動的に再構築されるようにするには、/etc/mdadm/mdadm.conf
ファイルを調整する必要があります。 次のように入力すると、アクティブなアレイを自動的にスキャンしてファイルを追加できます。
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
その後、initramfsまたは初期RAMファイルシステムを更新して、初期の起動プロセス中にアレイを使用できるようにすることができます。
- sudo update-initramfs -u
起動時に自動マウントするために、新しいファイルシステムマウントオプションを/etc/fstab
ファイルに追加します。
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
これで、RAID 1アレイが自動的に組み立てられ、ブートごとにマウントされます。
RAID5アレイの作成
RAID 5アレイタイプは、使用可能なデバイス間でデータをストライピングすることによって実装されます。 各ストライプの1つのコンポーネントは、計算されたパリティブロックです。 デバイスに障害が発生した場合、パリティブロックと残りのブロックを使用して、欠落しているデータを計算できます。 パリティブロックを受信するデバイスは、各デバイスがバランスの取れた量のパリティ情報を持つようにローテーションされます。
- 要件:最低3つのストレージデバイス
- 主な利点:より多くの使用可能な容量を備えた冗長性。
- 注意事項:パリティ情報が配信されている間、1ディスク分の容量がパリティに使用されます。 RAID 5は、劣化状態の場合、パフォーマンスが非常に低下する可能性があります。
コンポーネントデバイスの識別
開始するには、使用するrawディスクの識別子を見つけます。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
上記のように、ファイルシステムのない3つのディスクがあり、それぞれのサイズは100Gです。 この例では、これらのデバイスには、このセッションの/dev/sda
、/dev/sdb
、および/dev/sdc
の識別子が与えられています。 これらは、アレイの構築に使用する生のコンポーネントになります。
アレイの作成
これらのコンポーネントを使用してRAID5アレイを作成するには、それらをmdadm --create
コマンドに渡します。 作成するデバイス名(この場合は/dev/md0
)、RAIDレベル、およびデバイスの数を指定する必要があります。
- sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
mdadm
ツールはアレイの構成を開始します(パフォーマンス上の理由から、実際にはリカバリプロセスを使用してアレイを構築します)。 これは完了するまでに時間がかかる場合がありますが、この時間中にアレイを使用できます。 /proc/mdstat
ファイルを確認することで、ミラーリングの進行状況を監視できます。
- cat /proc/mdstat
OutputPersonalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdc[3] sdb[1] sda[0]
209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[===>.................] recovery = 15.6% (16362536/104792064) finish=7.3min speed=200808K/sec
unused devices: <none>
最初に強調表示されている行でわかるように、/dev/md0
デバイスは、/dev/sda
、/dev/sdb
、および/dev/sdc
デバイスを使用してRAID5構成で作成されています。 2番目に強調表示されている行は、ビルドの進行状況を示しています。
警告: mdadm
がRAID5アレイを構築する方法が原因で、アレイがまだ構築されている間に、アレイ内のスペアの数が不正確に報告されます。 これは、/etc/mdadm/mdadm.conf
ファイルを更新する前に、アレイの組み立てが完了するのを待つ必要があることを意味します。 アレイの構築中に構成ファイルを更新すると、システムはアレイの状態に関する誤った情報を持ち、起動時に正しい名前で自動的にアセンブルできなくなります。
このプロセスが完了するまで、ガイドを続けることができます。
ファイルシステムの作成とマウント
次に、アレイ上にファイルシステムを作成します。
- sudo mkfs.ext4 -F /dev/md0
新しいファイルシステムを接続するためのマウントポイントを作成します。
- sudo mkdir -p /mnt/md0
次のように入力して、ファイルシステムをマウントできます。
- sudo mount /dev/md0 /mnt/md0
次のように入力して、新しいスペースが使用可能かどうかを確認します。
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
新しいファイルシステムがマウントされ、アクセス可能になります。
アレイレイアウトの保存
起動時にアレイが自動的に再構築されるようにするには、/etc/mdadm/mdadm.conf
ファイルを調整する必要があります。
上記のように、構成を調整する前に、アレイの組み立てが完了していることを再度確認してください。アレイを構築する前にこの手順を完了すると、システムが再起動時にアレイを正しく組み立てることができなくなります。
- cat /proc/mdstat
OutputPersonalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdc[3] sdb[1] sda[0]
209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
上記の出力は、再構築が完了したことを示しています。 これで、アクティブアレイを自動的にスキャンし、次のように入力してファイルを追加できます。
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
その後、initramfsまたは初期RAMファイルシステムを更新して、初期の起動プロセス中にアレイを使用できるようにすることができます。
- sudo update-initramfs -u
起動時に自動マウントするために、新しいファイルシステムマウントオプションを/etc/fstab
ファイルに追加します。
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
これで、RAID 5アレイが自動的に組み立てられ、ブートごとにマウントされます。
RAID6アレイの作成
RAID 6アレイタイプは、使用可能なデバイス間でデータをストライピングすることによって実装されます。 各ストライプの2つのコンポーネントは、計算されたパリティブロックです。 1つまたは2つのデバイスに障害が発生した場合、パリティブロックと残りのブロックを使用して、欠落しているデータを計算できます。 パリティブロックを受信するデバイスは、各デバイスがバランスの取れた量のパリティ情報を持つようにローテーションされます。 これはRAID5アレイに似ていますが、2台のドライブに障害が発生する可能性があります。
- 要件:最低4つのストレージデバイス
- 主な利点:より多くの使用可能な容量を備えた2倍の冗長性。
- 注意事項:パリティ情報が配信されている間、2ディスク分の容量がパリティに使用されます。 RAID 6は、劣化状態の場合、パフォーマンスが非常に低下する可能性があります。
コンポーネントデバイスの識別
開始するには、使用するrawディスクの識別子を見つけます。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
上記のように、ファイルシステムのない4つのディスクがあり、それぞれのサイズは100Gです。 この例では、これらのデバイスには、このセッションの/dev/sda
、/dev/sdb
、/dev/sdc
、および/dev/sdd
の識別子が与えられています。 これらは、アレイの構築に使用する生のコンポーネントになります。
アレイの作成
これらのコンポーネントを使用してRAID6アレイを作成するには、それらをmdadm --create
コマンドに渡します。 作成するデバイス名(この場合は/dev/md0
)、RAIDレベル、およびデバイスの数を指定する必要があります。
- sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
mdadm
ツールはアレイの構成を開始します(パフォーマンス上の理由から、実際にはリカバリプロセスを使用してアレイを構築します)。 これは完了するまでに時間がかかる場合がありますが、この時間中にアレイを使用できます。 /proc/mdstat
ファイルを確認することで、ミラーリングの進行状況を監視できます。
- cat /proc/mdstat
OutputPersonalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
[>....................] resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/sec
unused devices: <none>
最初に強調表示されている行でわかるように、/dev/md0
デバイスは、/dev/sda
、/dev/sdb
、/dev/sdc
を使用してRAID6構成で作成されています。 X158X]