私は約8台のハードドライブを持っており、私のメインPC(openSUSE Tumbleweedを実行)にはすべて接続するのに十分なSATAポートがあります。一部のドライブは5年を超えており、サイズは384GBから2TBまで異なります。
保存空間をすべてアイドル状態にしておくのは残念に思えるので、マウントして使いたいのですが、当然別々のボリュームで使用しないようです。過去に古いディスクを使用してmdadm RAID 5およびRAID 6アレイを実行しましたが、この場合は退屈です(ディスクあたり384 GBの8ドライブアレイ、7ドライブアレイ、次のような大きな違い...)。そしてすぐに)。それで代替案を探しました。
私はまた、しばらく4つの同じドライブでBTRFS RAID5アレイを実行してきました。開発者でさえ、ユーザーが注意を払わずに安定して動作するようにすることができるという希望を持っていないようです。このような異機種配列にBTRFSが賢明な選択であるかどうか疑問に思います。
ZFSとRAIDZ機能、3つのパリティブロックでさまざまなサイズのドライブを収容する能力について良いニュースを聞きました。しかし、これまで私が見つけることができるほとんどのアドバイスは、同じドライブに固有のもの、または少なくとも同じRAIDパーティションに関するものです。サイズ。
私の優先順位は速度やアクセス時間ではありません。コンピュータは自分だけのもので、ハードドライブのスループットはほとんど問題ありません。私の意図は、時々起こるドライブエラーのためにデータが失われたり、かなりの時間がかかることを心配することなく、残りの人生の間に比較的快適にこのハードドライブのスペースを使用することです。いずれかのドライブに障害が発生した場合は、いずれかのドライブに障害が発生した場合は、それらを削除して続行できます(またはスペースが必要な場合は新しいドライブを追加できます)。
ドライブが損傷しない限り、個人的に注意を払う必要はなく、ドライブが損傷している場合は私に知らせることを確認できる限り、追加の事前設定を実行してもかまいません。 2〜3つのドライブエラーを処理することをお勧めしますが、容量の半分(RAID 10など)が利用可能な場合は、すべてのドライブとドライブのほとんどのスペースを使用できる限り、そうすることもできます。
- そんなことがありますか?
- オプションは何ですか?
- 設定方法を説明する方法はありますか?
ベストアンサー1
目的を達成するための鍵は、ドライブを総ストレージ量が同じまたはほぼ同じグループにグループ化し、各物理ドライブグループをストレージ合計を表す仮想ドライブに接続することです。このグループのドライブに使用できるストレージ容量。
私はFreeBSDでこれを行う予定ですが、Linuxにも同様のツールがあると思います。ここにある主なツールは次のとおりです。gconcat(8)
。
シナリオを考えてみましょう。
- 384Gドライブ5台(例
/dev/md0-md4
:) - 2Tドライブ4個(例
/dev/md5-md8
:) - 1Tドライブ2個(例
/dev/md9-md10
:)
これにより、gconcat
これらのドライブを5つのグループに接続できます。
- 4グループ2T+384G
- 1T+1T+384Gセット
その後、プールを構築するための5つの類似したサイズの仮想接続ディスクがあります。スペースを節約するために、実際にはサイズを2^10倍に減らしますが、概念は同じままです。そのため、384Mドライブ5個、2Gドライブ4個、1Gドライブ2個を使用します。
まず/dev/md*
、上記のデバイス(Linuxの物理ディスクに似ている可能性があります)を考慮して、これらの物理ディスクを5つの仮想ディスクに接続できます。/dev/sd*
名前は次のとおりです。vdisk0-vdisk4
# gconcat create -v vdisk0 md0 md5
# gconcat create -v vdisk1 md1 md6
# gconcat create -v vdisk2 md2 md7
# gconcat create -v vdisk3 md3 md8
# gconcat create -v vdisk4 md4 md9 md10
FreeBSDでは、接続されているディスクはデバイスとして表示されます/dev/concat/vdisk0-vdisk4
。ディスクデバイス操作を中心に構築された多くのFreeBSDコマンドと同様に、理解して使用すること/dev/
ができますgconcat status
。同様にGEOM
、項目を参照する --based コマンドは、便宜上/dev/
先行を省略できます/dev/
。
# gconcat status
Name Status Components
concat/vdisk0 UP md0
md5
concat/vdisk1 UP md1
md6
concat/vdisk2 UP md2
md7
concat/vdisk3 UP md3
md8
concat/vdisk4 UP md4
md9
md10
また、接続されている各ディスクのメディアサイズが類似している(またはこの場合は同じである)ことを確認できます。
# gconcat list | grep -A2 ^Prov
Providers:
1. Name: concat/vdisk0
Mediasize: 2550136832 (2.4G)
--
Providers:
1. Name: concat/vdisk1
Mediasize: 2550136832 (2.4G)
--
Providers:
1. Name: concat/vdisk2
Mediasize: 2550136832 (2.4G)
--
Providers:
1. Name: concat/vdisk3
Mediasize: 2550136832 (2.4G)
--
Providers:
1. Name: concat/vdisk4
Mediasize: 2550136832 (2.4G)
だから!これで、ZFSプールを作成できる5つの2.4Gデバイスが作成されました。デュアルパリティRAIDZ2プールを作成し、マウントポイントを次のように設定しますnone
。
# zpool create -m none tank raidz2 concat/vdisk{0..4}
# zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
concat/vdisk0 ONLINE 0 0 0
concat/vdisk1 ONLINE 0 0 0
concat/vdisk2 ONLINE 0 0 0
concat/vdisk3 ONLINE 0 0 0
concat/vdisk4 ONLINE 0 0 0
errors: No known data errors
# zfs list tank
NAME USED AVAIL REFER MOUNTPOINT
tank 179K 6.64G 39.3K none
クォンタムED。
要約すると、最小のドライブグループがプールのVDEVサイズを制限するため、重要な概念はドライブをできるだけ同じ総ストレージ容量に近いグループにグループ化することです。物理ドライブを最適にグループ化したら、各ドライブグループをグループの結合ストレージを表す仮想ディスクに接続します。最後に、仮想シリアルドライブにZPOOLを構築します。
ドライブに障害が発生した場合はどうなりますか?
ドライブ障害が発生した場合(/dev/concat/vdisk2
例として使用)、障害が発生した物理ドライブに関連付けられている仮想ディスクを削除し、障害が発生したドライブを交換して仮想ディスクを再作成し、プールを仮想ディスクに再同期します。接続ディスク。
# zpool status tank
pool: tank
state: DEGRADED
status: One or more devices has been removed by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using zpool online' or replace the device with
'zpool replace'.
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
concat/vdisk0 ONLINE 0 0 0
concat/vdisk1 ONLINE 0 0 0
concat/vdisk2 REMOVED 0 0 0
concat/vdisk3 ONLINE 0 0 0
concat/vdisk4 ONLINE 0 0 0
errors: No known data errors
vdisk2
失敗したので、私たちはそれを破壊します:
# gconcat destroy vdisk2
次に、付属の故障したドライブを交換しますconcat/vdisk2
。代替ドライブサイズを使用する必要がある場合は、新しいドライブがプールvdisk2
内の最小仮想ディスクよりも小さくないことを確認してください。それ以外の場合、ZFS はプールでディスクを使用できません。
故障したドライブを適切な交換用ドライブと交換し、物理ドライブを再接続して新しいドライブを作成しますvdisk2
。
# gconcat create vdisk2 md2 md7
# zpool online tank concat/vdisk2
# zpool status tank
pool: tank
state: ONLINE
scan: resilvered 7.50K in 00:00:01 with 0 errors on Wed Sep 22 11:26:55 2021
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
concat/vdisk0 ONLINE 0 0 0
concat/vdisk1 ONLINE 0 0 0
concat/vdisk2 ONLINE 0 0 0
concat/vdisk3 ONLINE 0 0 0
concat/vdisk4 ONLINE 0 0 0
errors: No known data errors