Ubuntu 22.04でmdadmを使用してRAIDアレイを作成する方法

はじめに

mdadmユーティリティは、LinuxのソフトウェアRAID機能を使用してストレージアレイを作成および管理するために使用されます。管理者は個々のストレージデバイスを調整し、より高いパフォーマンスや冗長性の特性を持つ論理ストレージデバイスを作成するために、非常に柔軟性のある機能を持っています。

このガイドでは、Ubuntu 22.04サーバーを使用して設定できるさまざまなRAID構成を実行します。

前提条件

このガイドの手順に従うためには、次のものが必要です:

  • A non-root user with sudo privileges on an Ubuntu 22.04 server. To learn how to set up an account with these privileges, follow our Ubuntu 22.04 initial server setup guide.
  • A basic understanding of RAID terminology and concepts. To learn more about RAID and what RAID level is right for you, read our introduction to RAID article.
  • サーバー上で利用可能な複数の生のストレージデバイス。このチュートリアルの例では、サーバー上でさまざまなタイプのアレイを構成する方法を示しています。したがって、構成するためにいくつかのドライブが必要です。
  • アレイタイプに応じて、2〜4つのストレージデバイスが必要です。これらのドライブは、このガイドに従う前にフォーマットする必要はありません。

情報: バーチャルプライベートサーバー上のRAIDセットアップの効率の悪さのため、DigitalOceanドロップレットでのRAIDセットアップの展開は推奨されていません。データセンターのディスクレプリケーションの効率性により、裸の金属ハードウェア上のセットアップと比較して、RAIDの利点は無視できるほどです。このチュートリアルは、従来のRAIDセットアップのリファレンスとなることを目指しています。

既存のRAIDデバイスのリセット(オプション)

まだ配列を設定していない場合は、このセクションをスキップすることができます。このガイドでは、さまざまなRAIDレベルについて説明します。各セクションごとにデバイスを再利用することを希望する場合は、これらのセクションの後に続いてデバイスをリセットするためのこの特定のセクション既存のRAIDデバイスのリセットを参照できます。

警告:このプロセスは配列とその上に書き込まれたデータを完全に破壊します。正しい配列上で操作していることを確認し、配列を破壊する前に保持する必要のあるデータをコピーしていることを確認してください。

まず、/proc/mdstatファイルからアクティブな配列を見つけます:

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

次に、ファイルシステムから配列をアンマウントします:

  1. sudo umount /dev/md0

そして、配列を停止して削除します:

  1. sudo mdadm --stop /dev/md0

次のコマンドで配列を構築するために使用されたデバイスを見つけます:

注意:/dev/sd*の名前は再起動するたびに変わる可能性があることに注意してください。正しいデバイス上で操作していることを確認するために、常にそれらを確認してください。

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G linux_raid_member disk sdb 100G linux_raid_member disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

配列を作成するために使用されたデバイスを発見した後は、そのスーパーブロックをゼロに設定します。スーパーブロックにはRAIDのセットアップに関するメタデータが含まれており、ゼロにすることでRAIDメタデータが削除され通常の状態にリセットされます。

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

配列への持続的な参照も削除することをお勧めします。 /etc/fstab ファイルを編集し、配列への参照をコメントアウトまたは削除します。行の先頭にハッシュタグ記号 # を挿入することでコメントアウトできます。 nano やお好みのテキストエディタを使用してください:

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

また、/etc/mdadm/mdadm.conf ファイルから配列の定義もコメントアウトまたは削除してください:

  1. sudo nano /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf
. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

最後に、initramfs を再度更新します。これにより、早期のブートプロセスで利用できない配列をオンラインにしようとしなくなります:

  1. sudo update-initramfs -u

これで、ストレージデバイスを個別に再利用するか、別の配列のコンポーネントとして使用する準備が整いました。

RAID 0 配列の作成

RAID 0 配列は、データをチャンクに分割し、利用可能なディスクにストライピングすることで動作します。つまり、各ディスクにデータの一部が格納され、情報を取得する際には複数のディスクが参照されます。

  • 要件:最低 2 つのストレージデバイス
  • 主な利点:読み書きと容量のパフォーマンス。
  • 注意点:機能するバックアップがあることを確認してください。1 つのデバイスの故障で配列内のすべてのデータが失われます。

コンポーネントデバイスの識別

まず、使用する生ディスクの識別子を見つけます:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME 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 vdb 466K iso9660 disk

この例では、ファイルシステムがない2つのディスクがあります。それぞれのサイズは100Gです。これらのデバイスはこのセッションで/dev/sda/dev/sdbの識別子が与えられ、アレイを構築するための生のコンポーネントとして使用されます。

アレイの作成

これらのコンポーネントを使用してRAID 0アレイを作成するには、mdadm --createコマンドに渡します。作成するデバイス名、RAIDレベル、およびデバイスの数を指定する必要があります。このコマンドの例では、デバイス名を/dev/md0とし、アレイを構築する2つのディスクを含めます:

  1. sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

/proc/mdstatファイルを確認して、RAIDが正常に作成されたことを確認します:

  1. cat /proc/mdstat
Output
Personalities : [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デバイスを使用してRAID 0構成で作成されたことがわかります。

ファイルシステムの作成とマウント

次に、配列にファイルシステムを作成します:

  1. sudo mkfs.ext4 -F /dev/md0

その後、新しいファイルシステムをアタッチするマウントポイントを作成します:

  1. sudo mkdir -p /mnt/md0

以下のコマンドを使用してファイルシステムをマウントできます:

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

その後、新しい領域が利用可能かどうかを確認します:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem 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ファイルを調整する必要があります。以下のコマンドを使用してアクティブな配列を自動的にスキャンし、ファイルに追加できます:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

その後、initramfs(初期RAMファイルシステム)を更新して、配列が早期の起動プロセス中に利用可能になるようにします:

  1. sudo update-initramfs -u

自動的にマウントするために、新しいファイルシステムのマウントオプションを/etc/fstabファイルに追加します:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

RAID 0配列は、起動時に自動的に組み立てられ、マウントされます。

RAIDの設定はこれで完了です。別のRAIDを試したい場合は、このチュートリアルの最初の手順に従って新しいRAID配列タイプの作成を進めてください。

RAID 1アレイの作成

RAID 1アレイは、利用可能なすべてのディスクにデータをミラーリングすることで実装されます。RAID 1アレイの各ディスクにはデータの完全なコピーが保存され、デバイスの障害時に冗長性を提供します。

  • 要件:最低2つのストレージデバイスが必要です。
  • 主な利点:2つのストレージデバイス間の冗長性があります。
  • 注意点:データの2つのコピーが保持されるため、ディスクスペースの半分しか利用できません。

コンポーネントデバイスの特定

まず、使用する生ディスクの識別子を見つけます:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME 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 vdb 466K iso9660 disk

この例では、ファイルシステムのない2つのディスクがあり、それぞれ100Gのサイズです。これらのデバイスは、このセッションで/dev/sdaおよび/dev/sdbの識別子が割り当てられ、アレイを構築するための生のコンポーネントとして使用されます。

アレイの作成

これらのコンポーネントを使用してRAID 1アレイを作成するには、mdadm --createコマンドにそれらを渡します。作成するデバイス名、RAIDレベル、およびデバイスの数を指定する必要があります。このコマンドの例では、デバイス名を/dev/md0とし、アレイを構築するディスクを含めます:

  1. sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

使用しているコンポーネントデバイスがbootフラグが有効化されたパーティションではない場合、おそらく次の警告が表示されます。安全にyと応答して続行してください:

Output
mdadm: 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ファイルをチェックすることで監視できます:

  1. cat /proc/mdstat
Output
Personalities : [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デバイスを使用してRAID 1構成で作成されました。2番目のハイライトされた行はミラーリングの進捗状況を示しています。このプロセスが完了するまで次のステップに進むことができます。

ファイルシステムの作成とマウント

次に、アレイ上にファイルシステムを作成します:

  1. sudo mkfs.ext4 -F /dev/md0

次に、新しいファイルシステムをアタッチするためのマウントポイントを作成します:

  1. sudo mkdir -p /mnt/md0

次のコマンドを実行してファイルシステムをマウントできます:

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

新しい領域が利用可能かどうかを確認してください。

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem 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 ファイルを調整する必要があります。以下のコマンドを使用してアクティブな配列を自動的にスキャンし、ファイルに追記します:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

その後、initramfs(初期RAMファイルシステム)を更新し、配列が早期の起動プロセスで利用できるようにします:

  1. sudo update-initramfs -u

自動マウントのために新しいファイルシステムのマウントオプションを /etc/fstab ファイルに追加します:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

RAID 1 配列は、起動時に自動的に組み立てられ、マウントされます。

RAID のセットアップはこれで完了です。別の RAID を試したい場合は、このチュートリアルの最初の手順に従って新しい RAID 配列を作成してください。

RAID 5 配列の作成

RAID 5アレイタイプは、利用可能なデバイスにデータをストライピングすることで実装されます。各ストライプの1つのコンポーネントは計算されたパリティブロックです。デバイスが故障した場合、パリティブロックと残りのブロックを使用して欠落しているデータを計算することができます。パリティブロックを受け取るデバイスは回転し、各デバイスにバランスの取れたパリティ情報が含まれるようにします。

  • 要件:最低3つのストレージデバイスが必要です。
  • 主な利点:より多くの使用可能な容量を持つ冗長性。
  • 注意点:パリティ情報は分散されていますが、パリティのために1つのディスク分の容量が使用されます。RAID 5は、劣化した状態では非常にパフォーマンスが低下する可能性があります。

コンポーネントデバイスの識別

まず、使用する生のディスクの識別子を見つけます:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME 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 vdb 466K iso9660 disk

このセッションでは、ファイルシステムのない3つのディスクがあり、それぞれサイズが100Gです。これらのデバイスはこのセッションで/dev/sda/dev/sdb、および/dev/sdcの識別子が割り当てられ、アレイを構築するために使用されます。

アレイの作成

これらのコンポーネントでRAID 5アレイを作成するには、それらをmdadm --createコマンドに渡します。作成するデバイス名、RAIDレベル、およびデバイスの数を指定する必要があります。このコマンドの例では、デバイス名を/dev/md0とし、アレイを構築するディスクを含めます:

  1. sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

mdadmツールはアレイの構成を開始します。パフォーマンス上の理由から、回復プロセスを使用してアレイを構築します。これには時間がかかる場合がありますが、この間にアレイを使用することができます。ミラーリングの進捗状況は、/proc/mdstatファイルを確認することで監視できます:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdc[3] sdb[1] sda[0] 209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_] [>....................] recovery = 0.9% (957244/104791040) finish=18.0min speed=95724K/sec unused devices: <none>

最初のハイライトされた行では、/dev/md0デバイスが、/dev/sda/dev/sdb/dev/sdcデバイスを使用してRAID 5構成で作成されました。2番目のハイライトされた行はビルドの進捗状況を示しています。

注意: mdadmがRAID 5アレイを構築する方法のため、アレイがまだ構築中の場合、アレイ内のスペアの数が正確に報告されません。これは、アレイの組み立てが完了するまで/etc/mdadm/mdadm.confファイルを更新しないで待つ必要があることを意味します。アレイがまだ構築中の間に構成ファイルを更新すると、システムはアレイの状態に関する正確な情報を持たず、正しい名前で自動的にブート時にアレイを組み立てることができません。

このプロセスが完了する間、ガイドを続けることができます。

ファイルシステムの作成とマウント

次に、配列上にファイルシステムを作成します:

  1. sudo mkfs.ext4 -F /dev/md0

新しいファイルシステムを接続するマウントポイントを作成します:

  1. sudo mkdir -p /mnt/md0

以下のコマンドでファイルシステムをマウントできます:

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

新しいスペースが利用可能かどうかを確認します:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem 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ファイルを調整する必要があります。

警告:前述したように、構成を調整する前に、配列の組み立てが完了していることを再確認してください。配列が正しく再組み立てされないようにするには、以下の手順を配列が構築される前に完了させる必要があります。

ミラーリングの進行状況は、/proc/mdstatファイルを確認することで確認できます:

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

この出力からリビルドが完了したことがわかります。その後、アクティブな配列を自動的にスキャンし、ファイルに追記することができます:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

その後、initramfs(初期RAMファイルシステム)を更新することで、配列を早期のブートプロセスで利用できるようにすることができます。

  1. sudo update-initramfs -u

自動マウントするために、/etc/fstab ファイルに新しいファイルシステムのマウントオプションを追加してください:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

RAID 5 アレイは今後、起動時に自動的にアセンブルされ、マウントされます。

RAID のセットアップは完了しました。別の RAID を試したい場合は、このチュートリアルの最初の手順に従って新しい RAID アレイを作成してください。

RAID 6 アレイの作成

RAID 6 アレイは、利用可能なデバイスにデータをストライピングします。各ストライプの2つのコンポーネントにはパリティブロックが計算されます。デバイスが1つまたは2つ故障した場合、パリティブロックと残りのブロックを使用して欠落しているデータを計算することができます。パリティブロックを受け取るデバイスは、各デバイスがバランスの取れたパリティ情報を持つように回転します。これは RAID 5 アレイと似ていますが、2つのドライブの故障に対応できます。

  • 要件: 最低4つのストレージデバイスが必要です。
  • 主な利点: より多くの使用可能容量を持つ二重冗長性。
  • 注意事項: パリティ情報が分散されている間、2つのディスク分の容量がパリティに使用されます。RAID 6 は、劣化した状態で非常にパフォーマンスが低下する可能性があります。

コンポーネントデバイスの特定

まず、使用する生ディスクの識別子を見つけます:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME 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 vdb 466K iso9660 disk

この例では、ファイルシステムのない4つのディスク、各100Gのサイズがあります。これらのデバイスは、このセッションで /dev/sda/dev/sdb/dev/sdc、および /dev/sdd の識別子が与えられ、アレイの構築に使用されます。

アレイの作成

これらのコンポーネントを使用してRAID 6アレイを作成するには、mdadm --create コマンドにそれらを渡します。作成するデバイス名、RAIDレベル、およびデバイスの数を指定する必要があります。次のコマンド例では、デバイス名を /dev/md0 とし、アレイを構築するディスクを含めます:

  1. sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

mdadm ツールは、アレイを構成するためにリカバリプロセスを使用します。これには時間がかかる場合がありますが、この時間中にアレイを使用することができます。ミラーリングの進捗状況は、/proc/mdstat ファイルを確認することで監視できます。

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [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デバイスがRAID 6構成で作成されており、/dev/sda/dev/sdb/dev/sdc/dev/sddデバイスが使用されています。2番目のハイライトされた行はビルドの進捗を示しています。このプロセスが完了するまで、ガイドを続けることができます。

ファイルシステムの作成とマウント

次に、配列上にファイルシステムを作成します:

  1. sudo mkfs.ext4 -F /dev/md0

新しいファイルシステムをアタッチするためのマウントポイントを作成します:

  1. sudo mkdir -p /mnt/md0

次のコマンドでファイルシステムをマウントできます:

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

新しい領域が利用可能かどうかを確認します:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem 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ファイルを調整する必要があります。次のコマンドを入力して、アクティブな配列を自動的にスキャンし、ファイルに追記できます:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

その後、initramfs(初期RAMファイルシステム)を更新して、配列が早期のブートプロセス中に利用可能になるようにします。

  1. sudo update-initramfs -u

ブート時に自動的にマウントするために、新しいファイルシステムのマウントオプションを/etc/fstabファイルに追加してください:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

RAID 6アレイは今後、自動的にアセンブルおよびマウントされます。

RAIDのセットアップは完了しました。別のRAIDを試したい場合は、このチュートリアルの最初の手順に従って新しいRAIDアレイタイプを作成してください。

複雑なRAID 10アレイの作成

RAID 10アレイタイプは、通常、RAID 1アレイのセットからなるストライプ化されたRAID 0アレイを作成することによって実装されます。このネストされたアレイタイプは冗長性と高いパフォーマンスを提供しますが、大量のディスク容量を必要とします。mdadmユーティリティには、同様の特性と保証を提供する独自のRAID 10タイプがありますが、アレイをネストすることはありません。ここではmdadm RAID 10を使用します。

  • 要件:最低3つのストレージデバイス
  • 主な利点:パフォーマンスと冗長性。
  • 注意点:データのコピー数によって、アレイの容量削減量が定義されます。mdadmスタイルのRAID 10では、保持するコピーの数は設定可能です。

デフォルトでは、各データブロックの2つのコピーが近くのレイアウトと呼ばれる方法で保存されます。データブロックが保存される方法を示す可能なレイアウトは次のとおりです:

  • near:デフォルトの配置です。ストライピング時に各チャンクのコピーが連続して書き込まれるため、データブロックのコピーは複数のディスクの同じ部分に書き込まれます。
  • far:最初のコピーとその後のコピーは、ストレージデバイスの配列内の異なる部分に書き込まれます。たとえば、最初のチャンクはディスクの先頭付近に書き込まれ、2番目のチャンクは別のディスクの中間地点に書き込まれます。これにより、書き込みパフォーマンスの犠牲になりますが、従来の回転ディスクにおいて読み取りパフォーマンスの向上が得られる場合があります。
  • offset:各ストライプはコピーされ、1つのドライブでオフセットされます。つまり、コピーは互いにオフセットされますが、ディスク上では近くに配置されます。これにより、一部のワークロードにおいて余分なシークを最小限に抑えるのに役立ちます。

これらのレイアウトについては、このmanページのRAID10セクションを参照することで詳細を調べることができます:

  1. man 4 md

また、オンラインでこのmanページを見つけることもできます

コンポーネントデバイスの識別

まず、使用する生ディスクの識別子を見つけます:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME 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 vdb 466K iso9660 disk

この例では、ファイルシステムのない4つのディスクがあります。各ディスクのサイズは100Gです。これらのデバイスは、このセッションで/dev/sda/dev/sdb/dev/sdc/dev/sddという識別子が与えられ、配列を構築するための生のコンポーネントとして使用されます。

配列の作成

これらのコンポーネントを使用してRAID 10配列を作成するには、mdadm --createコマンドにそれらを渡す必要があります。作成するデバイス名、RAIDレベル、およびデバイスの数を指定する必要があります。次のコマンド例では、デバイス名を/dev/md0とし、配列を構築するディスクを含めます:

レイアウトとコピーの数を指定せずに、近接レイアウトを使用して2つのコピーを設定することもできます:

  1. sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

異なるレイアウトを使用したり、コピーの数を変更したりする場合は、--layout=オプションを使用する必要があります。このオプションは、レイアウトとコピーの識別子を取ります。レイアウトにはn(近接)、f(遠く)、o(オフセット)があります。保存するコピーの数はその後に追加されます。

たとえば、オフセットレイアウトで3つのコピーを持つ配列を作成する場合、次のようなコマンドを含める必要があります。

  1. sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

mdadmツールは、配列を設定するために開始します。パフォーマンスのためにリカバリプロセスを使用して配列を構築します。これには時間がかかる場合がありますが、この間に配列を使用することができます。ミラーリングの進捗状況を確認するには、/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] [===>.................] resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec unused devices: <none>

最初のハイライトされた行では、/dev/md0デバイスが、/dev/sda/dev/sdb/dev/sdc、および/dev/sddデバイスを使用してRAID 10構成で作成されています。2番目のハイライトされたエリアは、この例で使用されたレイアウトを示しています(ネア構成で2つのコピー)。3番目のハイライトされたエリアは、ビルドの進捗状況を示しています。このプロセスが完了するまで、ガイドを続けることができます。

ファイルシステムの作成とマウント

次に、配列上にファイルシステムを作成します:

  1. sudo mkfs.ext4 -F /dev/md0

新しいファイルシステムをアタッチするためのマウントポイントを作成します:

  1. sudo mkdir -p /mnt/md0

次のコマンドでファイルシステムをマウントできます:

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

新しい領域が利用可能かどうかを確認します:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem 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ファイルを調整する必要があります。次のコマンドを実行して、アクティブな配列を自動的にスキャンし、ファイルに追加することができます:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

その後、initramfs(初期RAMファイルシステム)を更新して、配列が早いブートプロセス中に利用可能になるようにします:

  1. sudo update-initramfs -u

自動的にマウントするために、新しいファイルシステムのマウントオプションを/etc/fstabファイルに追加します:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

RAID 10配列は、各起動時に自動的に組み立てられてマウントされるようになります。

まとめ

このガイドでは、LinuxのmdadmソフトウェアRAIDユーティリティを使用して、さまざまなタイプの配列を作成する方法を学びました。RAID配列は、複数のディスクを個別に使用するよりも冗長性とパフォーマンスの向上があります。

環境に必要な配列のタイプを決定し、デバイスを作成したら、mdadmを使用して日常的な管理を行う方法について学ぶことができます。当社のガイド「Ubuntuでmdadmを使用してRAID配列を管理する方法」は、スタートガイドとして役立ちます。

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-22-04