
私の現在の考えは、 を使用して、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
この回答では、アレイ メンバー (ドライブ) のすべてのデータが破壊されるため、最初にバックアップする必要があることを明確にしておきます。
ターミナルを開いてroot
(su
); あなたが持っている場合sudo
有効にすると、例えば次のようにすることもできますsudo -i
。man sudo
すべてのオプションについて):
sudo -i
まず、ドライブを消去する必要があります。つまり、以前にデータやファイルシステムがあった場合です。4つのメンバーがあるとします: sdi
、、、。このプロセスsdj
を視覚的にフィードバックするために、sdk
sdl
pv
(パイプビューア)ここで使用されました:
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
使用して、完了するまで監視することができます。iotop
nmon
どちらの方法でファイル システムを初期化する場合でも、初期化が完了したらマウントする必要があります。
ここで、この 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 のドキュメントに記載されていないプロセスの詳細については何も説明されていません。