はじめに
mdadm
ユーティリティは、Linux のソフトウェア RAID 機能を使用してストレージ アレイを作成および管理するために使用することができます。 管理者は、個々のストレージ デバイスを調整し、より高いパフォーマンスや冗長特性を持つ論理ストレージ デバイスを作成する際に、非常に柔軟性があります。
Prerequisites
このガイドの手順を完了するには、次のものが必要です:
- Ubuntu 16.04 サーバーで
sudo
権限のある root でないユーザー。 このガイドの手順は、sudo
ユーザーを使用して完了します。 これらの特権を持つアカウントを設定する方法については、Ubuntu 16.04 初期サーバー設定ガイドを参照してください。 このガイドでは、RAID の用語について少し触れますが、より完全に理解することは非常に有用です。 RAIDについての詳細と、どのようなRAIDレベルが適切かを理解するために、RAID入門の記事をお読みください。 私たちは、サーバー上でさまざまなタイプのアレイを構成する方法を実演する予定です。 そのため、構成するためにいくつかのドライブが必要になります。 DigitalOceanを使用している場合、この役割を果たすためにBlock Storageボリュームを使用することができます。
Resetting Existing RAID Devices
このガイドを通じて、いくつかの異なるRAIDレベルを作成する手順を紹介します。 このガイドに従うと、各セクションの後に、ストレージ デバイスを再利用したくなることでしょう。 このセクションは、新しい RAID レベルをテストする前に、コンポーネントストレージ デバイスを素早くリセットする方法を学ぶために参照することができます。
このプロセスは、アレイとそれに書き込まれたデータを完全に破壊します。 正しいアレイで操作していること、およびアレイを破壊する前に保持する必要のあるデータをコピーしていることを確認してください。
/proc/mdstat
ファイルでアクティブなアレイを見つけるには、次のように入力します:
- cat /proc/mdstat
OutputPersonalities : md0 : active raid0 sdc sdd 209584128 blocks super 1.2 512k chunks unused devices: <none>
Unmount the array from the filesystem:
- sudo umount /dev/md0
そして、停止してアレイを削除するには、次のように入力します。
- sudo mdadm --stop /dev/md0
- sudo mdadm --remove /dev/md0
Find the devices that were used to build the array with the following command:
Keep in mind that the/dev/sd*
names can change any time you reboot !
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINTsda 100G disk sdb 100G disk sdc 100G linux_raid_member disk sdd 100G linux_raid_member disk vda 20G disk ├─vda1 20G ext4 part /└─vda15 1M part
アレイを作成するために使用されるデバイスを検出した後、それらのスーパーブロックをゼロにして、通常状態にリセットします。 /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
この時点で、ストレージデバイスを個別に、または別のアレイのコンポーネントとして再利用する準備が整っています。
RAID 0 アレイの作成
RAID 0 アレイはデータを塊に分割して、利用できるディスク間でストライピングすることで動作します。 これは、各ディスクにデータの一部が含まれ、情報を取得する際に複数のディスクが参照されることを意味します。
- 要件:最低2つのストレージデバイス
- 主な利点:パフォーマンス
- 注意すべき点:。 機能的なバックアップがあることを確認してください。
Identify the Component Devices
開始するには、使用するローディスクの識別子を見つけます:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINTsda 100G disksdb 100G diskvda 20G disk ├─vda1 20G ext4 part /└─vda15 1M part
上に示すように、ファイルシステムなしのディスクが2台あり、それぞれ100Gのサイズがあります。 この例では、このセッションのために、これらのデバイスに /dev/sda
と /dev/sdb
という識別子が割り当てられています。
アレイの作成
これらのコンポーネントでRAID 0アレイを作成するには、それらを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 : md0 : active raid0 sdb sda 209584128 blocks super 1.2 512k chunks unused devices: <none>
ハイライトされた行でわかるように、/dev/md0
デバイスが /dev/sda
および /dev/sdb
デバイスを使って RAID 0 構成で作成されていることが確認できます。
Create and Mount the Filesystem
次に、アレイ上にファイルシステムを作成します:
- 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 20G 1.1G 18G 6% //dev/md0 197G 60M 187G 1% /mnt/md0
新しいファイルシステムがマウントされてアクセスできるようになりました。
Save the Array Layout
起動時にアレイが自動的に再組み立てされるようにするには、/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アレイが自動的に組み立てられて各ブートにマウントされるはずです。
RAID 1 アレイの作成
RAID 1 アレイタイプは、すべての利用可能なディスク間でデータをミラーリングすることにより実装されます。 RAID 1アレイの各ディスクは、データの完全なコピーを取得し、デバイス障害の場合に冗長性を提供します。
- 要件:最低2つのストレージデバイス
- 主な利点。 冗長性
- 注意すべきこと。 データの 2 つのコピーが維持されるため、ディスク領域の半分しか使用できません
Identify the Component Devices
開始するには、使用する生のディスクの識別子を見つけます:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINTsda 100G disksdb 100G diskvda 20G disk ├─vda1 20G ext4 part /└─vda15 1M part
上に示すように、ファイルシステムなしのディスクが 2 台、それぞれ 100G サイズあります。 この例では、このセッションのために、これらのデバイスに /dev/sda
と /dev/sdb
という識別子が割り当てられています。
アレイの作成
これらのコンポーネントでRAID 1アレイを作成するには、それらをmdadm --create
コマンドに渡します。 作成したいデバイス名 (この例では /dev/md0
) と RAID レベル、デバイス数を指定する必要があります。
- sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
使用しているコンポーネント デバイスが boot
フラグを有効にしたパーティションでない場合、次の警告が表示される可能性があります。
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.90mdadm: size set to 104792064KContinue creating array? y
mdadm
ツールはドライブのミラーリングを開始します。 これは完了するまでに時間がかかることがありますが、この間アレイを使用することができます。 ミラーリングの進行状況は、/proc/mdstat
ファイル:
- cat /proc/mdstat
OutputPersonalities : md0 : active raid1 sdb sda 104792064 blocks super 1.2 resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/secunused devices: <none>
最初のハイライトされた行にあるように、/dev/md0
デバイスは/dev/sda
と/dev/sdb
デバイスを使用してRAID 1構成で作成されていることが確認できます。 2番目のハイライトされた行は、ミラーリングの進行状況を示しています。 このプロセスが完了する間、ガイドを続けることができます。
Create and Mount the Filesystem
次に、アレイ上にファイルシステムを作成します:
- 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 20G 1.1G 18G 6% //dev/md0 99G 60M 94G 1% /mnt/md0
新しいファイルシステムがマウントされアクセスできるようになりました。
Save the Array Layout
起動時にアレイが自動的に再組み立てされるようにするには、/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アレイは自動的に組み立てられて各ブートにマウントされているはずです。
RAID 5 アレイの作成
RAID 5 アレイタイプは、利用可能なデバイス間でデータをストライピングすることにより実装されます。 各ストライプの1つのコンポーネントは、計算されたパリティブロックです。 デバイスに障害が発生した場合、パリティブロックと残りのブロックを使用して、不足するデータを計算することができます。
- 要件:最低3台のストレージ・デバイス
- 主な利点:パリティ・ブロックを受け取るデバイスは、各デバイスにバランスのとれた量のパリティ情報があるように回転されます。 より多くの使用可能な容量を持つ冗長性
- 注意事項 パリティ情報が分散されている間、ディスク1台分の容量がパリティに使用されます。 RAID 5 は、劣化した状態では、パフォーマンスが非常に低下することがあります。
Identify the Component Devices
開始するには、使用する生ディスクの識別子を見つけます。 この例では、このセッションのために、これらのデバイスに /dev/sda
、/dev/sdb
、および /dev/sdc
という識別子が割り当てられています。
アレイの作成
これらのコンポーネントでRAID 5アレイを作成するには、それらを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 : md0 : active raid5 sdc sdb sda 209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 recovery = 15.6% (16362536/104792064) finish=7.3min speed=200808K/secunused devices: <none>
で確認できます。最初のハイライトされた行でわかるように、/dev/md0
デバイスは/dev/sda
、/dev/sdb
、デバイスを使ってRAID 5構成で作成されています。 2 番目の強調表示された行は、構築の進行状況を示しています。 このプロセスが完了する間、ガイドを続けることができます。
Create and Mount the Filesystem
Next, create a filesystem on the array:
- sudo mkfs.ext4 -F /dev/md0
Create a mount point to attach the new filesystem.ファイルシステムをマウントするために、マウントポイントを作成します。
- 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 20G 1.1G 18G 6% //dev/md0 197G 60M 187G 1% /mnt/md0
新しいファイルシステムがマウントされてアクセスできるようになりました。
Save the Array Layout
起動時にアレイが自動的に再組み立てされるようにするために、/etc/mdadm/mdadm.conf
ファイルを調整する必要があります。
構成を調整する前に、アレイが組み立てを終了しているかどうか再度確認します。
- cat /proc/mdstat
OutputPersonalities : md0 : active raid5 sdc sdb sda 209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 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 アレイはこれで自動的に組み立て、各ブートにマウントするはずです。
RAID 6 アレイの作成
RAID 6 アレイタイプは、利用可能なデバイス間でデータをストライピングすることにより実装されます。 各ストライプの2つのコンポーネントは、計算されたパリティブロックです。 1台または2台のデバイスに障害が発生した場合、パリティブロックと残りのブロックを使用して、不足するデータを計算することができます。 パリティブロックを受け取るデバイスは、各デバイスがバランスのとれた量のパリティ情報を持つように回転されます。 これは、RAID 5 アレイに似ていますが、2 つのドライブの障害を許容します。
- 要件: 最低 4 つのストレージ デバイス
- 主な利点: より多くの使用可能な容量を持つ二重冗長性
- 心に留めておくべきこと。 パリティ情報が分散されている間、ディスク 2 台分の容量がパリティに使用されます。 RAID 6 は、劣化した状態では、パフォーマンスが非常に低下することがあります。
Identify the Component Devices
開始するには、使用する生ディスクの識別子を見つけます。 この例では、このセッションのために、これらのデバイスに /dev/sda
、/dev/sdb
、/dev/sdc
、および /dev/sdd
という識別子が割り当てられています。
アレイの作成
これらのコンポーネントでRAID 6アレイを作成するには、それらを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 : md0 : active raid6 sdd sdc sdb sda 209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/secunused devices: <none>
で確認できます。最初のハイライトされた行でわかるように、/dev/md0
デバイスは/dev/sda
, /dev/sdb
, /dev/sdc
および /dev/sdd
デバイスを使って RAID 6構成で作成されています。 2 番目の強調表示された行は、構築の進行状況を示しています。 このプロセスが完了する間、ガイドを続けることができます。
Create and Mount the Filesystem
Next, create a filesystem on the array:
- sudo mkfs.ext4 -F /dev/md0
Create a mount point to attach the new filesystem.ファイルシステムをマウントするためのマウントポイントを作成します。
- 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 20G 1.1G 18G 6% //dev/md0 197G 60M 187G 1% /mnt/md0
新しいファイルシステムがマウントされてアクセスできるようになりました。
Save the Array Layout
起動時にアレイが自動的に再組み立てされるようにするには、/etc/mdadm/mdadm.conf
ファイルを調整する必要があります。
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
その後、初期ブートプロセス中にアレイが利用できるように、initramfs (初期RAMファイルシステム)を更新できます。
Creating Complex RAID 10 Array
RAID 10 アレイタイプは、伝統的に RAID 1 アレイのセットからなるストライプ RAID 0 アレイを作成することによって実装されます。 このネストされたアレイタイプは、大量のディスクスペースを犠牲にして、冗長性と高パフォーマンスの両方を提供します。 mdadm
ユーティリティは独自のRAID 10タイプを持っており、同じタイプの利点をより柔軟な形で提供します。 これは、アレイの入れ子によって作成されたものではありませんが、同じ特性と保証の多くを備えています。 ここでは、mdadm
RAID 10 を使用します。
- 要件: 最低 3 つのストレージ デバイス
- 主な利点: パフォーマンスと冗長性
- 覚えておくべきこと。 アレイの容量削減量は、保持することを選択したデータコピーの数によって定義されます。
mdadm
スタイル RAID 10 で保存されるコピー数は設定可能です。
デフォルトでは、各データブロックの 2 つのコピーが、「近接」レイアウトと呼ばれる方法で保存されます。 各データブロックがどのように保存されるかを決定する可能なレイアウトは次のとおりです:
- near: デフォルトの配置。 各チャンクのコピーはストライピング時に連続して書き込まれ、データブロックのコピーは複数のディスクの同じ部分の周りに書き込まれることを意味します。
- far。 最初のコピーとその後のコピーは、アレイ内のストレージデバイスの異なる部分に書き込まれます。 たとえば、最初のチャンクはディスクの先頭付近に書き込まれ、2 番目のチャンクは別のディスクの半分の位置に書き込まれるかもしれません。 これは、書き込みパフォーマンスを犠牲にして、従来の回転ディスクの読み取りパフォーマンスを向上させることができます。 各ストライプは、1 つのドライブでオフセットされてコピーされます。 これは、コピーが互いにオフセットされているが、ディスク上ではまだ近くにあることを意味します。
これらのレイアウトの詳細については、このman
ページの「RAID10」のセクションを参照してください:
- man 4 md
また、このman
ページはオンラインで見つけることもできます。
コンポーネント デバイスの識別
開始するには、使用する RAW ディスクの識別子を見つけます:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINTsda 100G disksdb 100G disksdc 100G disksdd 100G diskvda 20G disk ├─vda1 20G ext4 part /└─vda15 1M part
上に示すように、ファイルシステムなしのディスクが 4 つあり、それぞれ 100G のサイズになっています。 この例では、このセッションのために、これらのデバイスに /dev/sda
、/dev/sdb
、/dev/sdc
、および /dev/sdd
という識別子が割り当てられています。
アレイの作成
これらのコンポーネントでRAID 10アレイを作成するには、それらをmdadm --create
コマンドに渡します。 作成したいデバイス名(ここでは/dev/md0
)、RAIDレベル、およびデバイス数を指定する必要があります。
レイアウトとコピー番号を指定しないことにより、nearレイアウトを使用して2つのコピーを設定することができます:
- sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
別のレイアウトを使用したり、コピー数を変更したい場合は、レイアウトおよびコピー識別子を受け取る--layout=
オプションが必要になります。 レイアウトはnearがn、farがf、oがoffsetです。
例えば、オフセットレイアウトで3つのコピーを持つアレイを作成する場合、コマンドは次のようになります:
- sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
mdadm
ツールはアレイの構成を開始します(実際にはパフォーマンス上の理由から、アレイを構築するために回復プロセスを使用します)。 これは完了するまでに時間がかかることがありますが、この間アレイを使用することができます。 ミラーリングの進行状況は、/proc/mdstat
ファイル:
- cat /proc/mdstat
OutputPersonalities : md0 : active raid10 sdd sdc sdb sda 209584128 blocks super 1.2 512K chunks 2 near-copies resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/secunused devices: <none>
で確認することができます。最初のハイライト行にあるように、/dev/md0
デバイスは/dev/sda
, /dev/sdb
, /dev/sdc
および /dev/sdd
デバイスを使って RAID 10 構成で作成されていることが確認できます。 2 番目の強調表示された領域は、この例で使用されたレイアウトを示します(近接構成で 2 つのコピー)。 3番目のハイライトされた領域は、構築の進捗状況を示しています。 このプロセスが完了する間、ガイドを続けることができます。
Create and Mount the Filesystem
Next, create a filesystem on the array:
- sudo mkfs.ext4 -F /dev/md0
Create a mount point to attach the new filesystem.ファイルシステムをマウントするために、マウントポイントを作成します。
- 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 20G 1.1G 18G 6% //dev/md0 197G 60M 187G 1% /mnt/md0
新しいファイルシステムがマウントされてアクセスできるようになりました。
Save the Array Layout
起動時にアレイが自動的に再組み立てされるようにするには、/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 10アレイは自動的に構築されて各ブートにマウントされるはずです。
まとめ
このガイドでは、Linux の mdadm
ソフトウェア RAID ユーティリティを使用して、さまざまなタイプのアレイを作成する方法を紹介しました。
一旦、環境に必要なアレイのタイプを決定し、デバイスを作成したら、mdadm
を使用して日々の管理を実行する方法を学ぶ必要があります。 Ubuntu 16.04 で mdadm
を使用して RAID アレイを管理する方法に関するガイドが、その開始を支援することができます。