GPT パーティションによる mdadm RAID 実装

GPT パーティションによる mdadm RAID 実装

私の現在の考えは、 を使用して、4 つのメンバー ドライブを持つ 1 つのソフトウェア アレイ (クラス RAID-6) を作成することですmdadm

具体的には、ドライブは小型サーバー Dell T20 の SATA 上の 1 TB HDD になります。

オペレーティングシステムはGNU/Linux デビアン8.6(後にアップグレード:ジェシーストレッチバスター

私の場合、2 TB のディスク容量と 2 TB のパリティが作成されます。


また、GPT パーティション テーブルも使用したいのですが、これを完全にターミナル経由で実行したい場合、具体的にどのように進めればよいかわかりません。

RAID アレイを作成したことがないので、どのように進めればよいか教えていただけますか?


ノート:

  • このアレイはデータ専用です。ブートや OS は格納されません。

  • このアレイの目的から、RAID-6 を選択しました。アレイは 2 つのドライブ障害に耐えられる必要があります。ハードウェアによって 4 つのドライブに制限されているため、私が知る限り RAID-6 以外の選択肢はありません。(RAID-6 の速度低下がいかにひどいものであっても、このアレイでは問題になりません。)

答え1

この回答では、アレイ メンバー (ドライブ) のすべてのデータが破壊されるため、最初にバックアップする必要があることを明確にしておきます。


ターミナルを開いてrootsu); あなたが持っている場合sudo有効にすると、例えば次のようにすることもできますsudo -iman sudoすべてのオプションについて):

sudo -i

まず、ドライブを消去する必要があります。つまり、以前にデータやファイルシステムがあった場合です。4つのメンバーがあるとします: sdi、、、。このプロセスsdjを視覚的にフィードバックするために、sdksdlpvパイプビューアここで使用されました:

pv < /dev/zero > /dev/sdi
pv < /dev/zero > /dev/sdj
pv < /dev/zero > /dev/sdk
pv < /dev/zero > /dev/sdl

あるいは、何も残っていないかどうかを確認するには、すべてのドライブで GParted を使って覗き見し、ファイルシステムの有無にかかわらずパーティションがある場合は、それを消去するだけで十分かもしれませんが、私は上記のように関係するすべてのドライブをゼロにすることを好みます。これを行う前に、すべてのパーティションをアンマウントすることを忘れないでください。これは、次のワンライナーと同様に実行できます。

umount /dev/sdi?; wipefs --all --force /dev/sdi?; wipefs --all --force /dev/sdi
umount /dev/sdj?; wipefs --all --force /dev/sdj?; wipefs --all --force /dev/sdj
umount /dev/sdk?; wipefs --all --force /dev/sdk?; wipefs --all --force /dev/sdk
umount /dev/sdl?; wipefs --all --force /dev/sdl?; wipefs --all --force /dev/sdl

次に、すべてのドライブを GUID パーティション テーブル (GPT) で初期化し、すべてのドライブをパーティション分割する必要がありますが、GParted ではこの操作を実行しないでください。この操作では、不要なファイル システムがプロセス中に作成されるためです。gdisk代わりに、以下を使用します。

gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl

いずれの場合も、以下を使用します。

o Enter新しい空のGUIDパーティションテーブル(GPT)で新しいパーティションの
y Enter決定を確認します。最初のパーティションのデフォルト、最初のセクターのデフォルト、最後のセクターのデフォルト、Linux RAIDタイプで変更を書き込むことで決定を確認します。
n Enter
Enter
Enter
Enter
fd00 Enter
w Enter
y Enter


これでドライブを調べることができます:

mdadm --examine /dev/sdi /dev/sdj /dev/sdk /dev/sdl

次のように言うべきです:

(type ee)

そうであれば、パーティションを調べます。

mdadm --examine /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

次のように言うべきです:

No md superblock detected

そうであれば、RAID6 アレイを作成できます。

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

配列が完全に作成されるまで待つ必要があります。このプロセスは簡単に実行できますwatch

watch cat /proc/mdstat

配列を作成したら、その詳細を確認する必要があります。

mdadm --detail /dev/md0

次のように言うべきです:

          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

ext4ここでアレイ上にファイルシステムを作成します。隠れたコマンドは、大きな配列の場合にかなりの時間がかかるため、避けた方がよいでしょうext4lazyinit。これが名前の由来です。怠け者"なので、これを避けることをお勧めします:

mkfs.ext4 /dev/md0

代わりに、完全なインスタント初期化を強制する必要があります (rootデータ配列であるため、0% が予約されています)。

mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

これらのオプションを指定すると、作成時に inode とジャーナルがすぐに初期化されるため、大規模な配列に役立ちます。

ショートカットを選択して、ext4「避けた方が良いコマンド」を使用してファイルシステムを作成した場合、すべての inode を初期化するのにかなりの時間がかかることに注意してください。たとえば、または をext4lazyinit使用して、完了するまで監視することができます。iotopnmon

どちらの方法でファイル システムを初期化する場合でも、初期化が完了したらマウントする必要があります。


ここで、この RAID6 アレイ用のディレクトリを作成します。

mkdir -p /mnt/raid6

そして、それをマウントするだけです:

mount /dev/md0 /mnt/raid6

基本的にはこれで完了なので、GParted を再度使用して、すべてのドライブのフラグlinux-raidとともにファイルシステムが表示されるかどうかをすばやく確認できます。raid

そうなれば、GPT パーティションを使用して RAID6 アレイを適切に作成し、その上にファイルをコピーできるようになります。

ファイルシステムのUUID を確認しますmd

blkid /dev/md0

UUID をクリップボードにコピーします。

fstabここで、お気に入りのテキストエディタで編集する必要があります。nano、 けれどsudoedit次のように使用した方がよいでしょう:

nano /etc/fstab

それにエントリを追加します:

UUID=<the UUID you have in the clipboard>    /mnt/raid6    ext4    defaults    0 0

私自身はdefaultsフラグのセットの使用はお勧めしません。単に行が複雑になりすぎないようにしたかっただけです。

UPS バックアップ データ RAID で使用するマウント フラグは次のとおりです ( の代わりにdefaults): nofail、nosuid、nodev、noexec、nouser、noatime、auto、async、rw、data=journal、errors=remount-ro


変更を保存した後、正しいかどうかを確認できます。

mount -av | grep raid6

次のように言うべきです:

already mounted

作成されている場合は、アレイ構成を保存します。mdデバイスがまだ作成されていない場合は、次のように実行します。

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

配列がすでに存在する場合は、設定ファイルにリダイレクトせずに前のコマンドを実行します。

mdadm --detail --scan

新しい配列を手動で設定ファイルに追加します。

最後に、 を更新することを忘れないでくださいinitramfs。そうしないと、新しい配列は、おそらく次のように、または同様に、自動的に読み取り専用でアセンブルされるだけです/dev/md127

update-initramfs -u -k all

すべてが計画どおりに実行されたかどうかを確認し、実行された場合は再起動できます。

reboot

答え2

2 x 4 パーティションではなく 4 つの raw ブロック デバイス上に RAID アレイを作成すると、すべての RAID リカバリ操作が必然的にデバイス全体で実行される可能性があり、その逆も同様です。

たとえば、ディスクの後半で最終的に I/O エラーが発生し始めると予想される場合、パーティション上のアレイでは、少なくとも損傷がその半分に広がるまでは、アレイの 1 つだけがそれに気づき、もう 1 つのアレイはそのままの状態になります。これにより、一時的な柔軟性が得られたり、I/O の速度低下がなくなったりする可能性があります。

一方、介入を開始するとすぐに、交換のために物理ディスク全体を取り外す必要があるため、ある時点で両方のアレイを必ず劣化させる必要があります。また、SSD ではディスク全体が故障することが一般的になっているため、いずれにしても両方のアレイがそのようなイベントの影響を受ける可能性があります。

一般的なパーティション分割および mdadm のドキュメントに記載されていないプロセスの詳細については何も説明されていません。

関連情報