JBOD: 異なる容量のドライブを Raid1 するには? Btrfs、ZFS?

JBOD: 異なる容量のドライブを Raid1 するには? Btrfs、ZFS?

以下の容量のハードドライブを選択できます:

1 TB
500 GB
320 GB
250 GB

これらを Raid1 にしたいのですが、これは、すべてのデータのコピーが常に 4 つのドライブのうち 2 つのドライブにあるという意味です。問題は、すべてのドライブの容量が異なることです。これまで、mdadm から移行した後、通常の Raid1 mdadm 2x 2TB、Btrfs 2x 2TB を実行していました。mdadm を再び使用したり、Btrfs や ZFS を使用したりしても構いませんが、それらについては何も知りません。

次の基準に適合する、私にとって最適なファイルシステムまたはユーティリティは何でしょうか。

  1. 常にファイルのコピーを2つ持っておくことで、1つのディスクが壊れてもデータが失われないようにする
  2. 1の基準を満たしながら、可能な限り多くの空きスペースを確保する

何を使うべきでしょうか? Btrfs Raid1 がこれを処理し、4 つのハード ドライブすべてに各ファイルのコピーを 2 つずつ保存するのではないかと思いますが、確信はありません。AMD64 コンピューターに Linux をインストールし、カーネル 5.10 を使用しています。

アドバイスがあれば歓迎します。

編集 - 解決策!

皆さんの回答に心から感謝します。それで、Btrfs Raid1 構成を進めました。時間のかかるプロセスでしたが、Btrfs にはすでに慣れていて毎日使用していたので、非常に簡単でした。冗長性比率 2 を維持しながら、Raid1 で物理的なスペースを失うことはないと考えました。次の計算機を使用しました:https://carfax.org.uk/btrfs-usage/

デバイスのサイズ:

931.51 GiB
465.76 GiB
298.09 GiB
232.89 GiB

Total space for files in Raid1 mode: 963 GiB (all space used)
Total space for files in Raid5 mode: 995 GiB (466 GiB unusable on biggest drive)

Raid1 では、現在 719.5 GiB のデータが保存され、241.6 GiB が空き容量で、合計 961.1 GiB となり、計算機で計算された値と一致しています。また、後でドライブを自由に追加/削除できます。すばらしいです。

私は、Raid5 を選択したいと思っています。これは、Raid1 が 2 倍の読み取り速度向上であるのに対し、Raid5 では理論上 4 倍の読み取り速度向上が得られるからです。しかし、現時点では実験段階であり、日常的な使用には推奨されないと聞きましたが、それは正しいでしょうか? 5.10 カーネルでの状態はどうなっていますか? 使用していて、経験を共有できる方はいますか?

アレイを構築し、すべてのドライブを 1 つずつ追加してすべてのデータをアレイに移行した後 (バックアップがあります)、完全なスクラブを実行しましたが、すべて正常です。

$ sudo btrfs scrub start -Bd /home

Scrub device /dev/sda (id 1) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         2:38:51
Total to scrub:   724.03GiB
Rate:             77.53MiB/s
Error summary:    no errors found

Scrub device /dev/sdd (id 2) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         1:52:39
Total to scrub:   374.03GiB
Rate:             56.57MiB/s
Error summary:    no errors found

Scrub device /dev/sdc (id 3) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:48:06
Total to scrub:   207.00GiB
Rate:             73.09MiB/s
Error summary:    no errors found

Scrub device /dev/sdb (id 4) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:30:00
Total to scrub:   143.00GiB
Rate:             80.89MiB/s
Error summary:    no errors found

とても嬉しいです!

編集 - @Marcus Müller へのコメント:

「注意: 本当にこれが必要ですか? 320 GB と 250 GB は、おそらくそれほど新しいドライブではありません (...)」

おっしゃる通り、これらは非常に古いドライブです。過去数年間、Btrfs Raid1 で使用していた現在の 2x 2TB Seagate Barracuda Compute ドライブを取り外し、これらのランダムな 4x 古いドライブを配置しました。Barracuda は、完全な信頼性が必要なサーバーにインストールされます。/ 用に 2x SSD 250GB (Ext4 mdadm)、/home と /var 用に 2x HDD TB (Btrfs Raid1)、ECC RAM を備えています。さらに 2 台の Barracuda を最初の 2 台に統合し、Btrfs Raid1 モード、または Raid10 または Raid5 として使用します。

私のデスクトップには現在、4 台の古いドライブが置いてあり、内容は次のとおりです。

Western Digital Blue Mobile, WDC WD10JPVX-60JC3T0
[1.00 TB, 4K sectors, SATA 3.0, 6.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2496

Toshiba 2.5" HDD MK..65GSX, TOSHIBA MK5065GSX
[500 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2519

Seagate Momentus Thin, ST320LT007-9ZV142
[320 GB, 4K sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 2.5"]
Power_On_Hours 5152

Seagate Barracuda 7200.12,ST3250318AS
[250 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 3.5"]
Power_On_Hours 6591

信頼性は実際には問題ではありません。バックアップはありますが、あまり早く痛い目に遭いたくはありません。そのため、2.0 の基本的な冗長性があれば、1 年かそこらでドライブの 1 つが故障しても、もう 1 台か 2 台を追加するだけで済みます。

答え1

これらのドライブごとに 1 つの LVM 物理ボリュームを作成します。

pvcreate /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

次に、これらからボリューム グループを作成します。

vgcreate myvolumegroup /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

最後に、各ブロックに 1 つのミラーがあるというプロパティを持つ論理ボリュームを作成します。

lvcreate --mirrors 1 -l100%FREE  -n myvolume myvolumegroup

おめでとうございます!これで、使用できるブロックデバイスができました。どれでも必要なファイルシステム(例:btrfs または XFS):

mkfs.xfs /dev/myvolumegroup/myvolume
mount /dev/myvolumegroup/myvolume /mnt

動作するはずです。


備考: あなたはもちろんこれが欲しいですか? 320 GB と 250 GB はおそらくそれほど新しいドライブではなく、これらの非常に古い可能性のあるドライブをここに含めることで得られる追加のストレージは (160+125) GB = 285 GB だけです。

古いドライブを使用することは、RAID1 がそもそも必要な理由であるデータの可用性に反することになります。また、代わりに RAID5 の使用を検討してください (man lvmraid役立つかもしれません)。

答え2

ZFS とは異なり、異なるサイズのドライブを効率的に処理できるため、これを使用しますbtrfs。最終的には、すべてのドライブの合計容量を 2 で割った値 (冗長性のために 2 つのコピーを使用) になります。約 1 TB。透過的な圧縮は考慮しません。

ZFSは、容量のvdevを作成するだけです最小デバイス - ただし、ドライブが 4 つある場合は、ミラー vdev を 2 つ作成します。たとえば、1 TB と 500 GB のミラー 1 vdev と、320 GB と 250 GB のミラー 2 vdev です。無駄なスペースを最小限に抑えるには、1 TB と 320 GB のドライブを、ミラー ドライブに合わせて 500 GB のパーティションと 250 GB のパーティションに分割します。これにより、圧縮前のプールの容量は合計 750 GB (RAID1+0 のような構成) になります。これらのドライブの残りのスペース (500 GB と 70 GB) は、インターネットからダウンロードして「インターネット上にバックアップ」されているので、気にしないようなものなど、他の用途に使用できます。

予算に余裕があれば、250 GB ドライブを別の 1 TB ドライブに交換することをお勧めします。これは、透過的な圧縮を行う前に、どちらの場合も容量が約 1.3 TB に増加するため、zfs には最適で、btrfs には非常に良い方法です。無駄なスペースが大幅に減ります。

RAID-1/ミラーリングを行うために LVM または mdadm を使用しないでください。btrfs はそれ自身でそれを実行できますが、そうすると btrfs のようなエラー訂正ファイルシステムを使用する目的のほとんどが失われます。

スナップショットや透過的な圧縮などの機能は引き続き動作しますが、実質的には単一のドライブしか提供されないため、どちらのファイルシステムでもエラーを修正する機能が失われます。

あなたできる必要に応じて、ZFS または btrfs の下でソフトウェアまたはハードウェア RAID を使用しますが、a) 必要ありません。また、b) 良いアイデアではなく、実際、ひどいアイデアです。セットアップに手間と複雑さがかかり、重要な機能が削除され、それを補うメリットはありません。

LVM または mdadm を使用する場合は、それらの上でext4(または、さらに良い方法として) を使用します。xfs

ちなみに、私はまだ RAID-5/6 に btrfs を信頼できないと思いますが、ミラーのような RAID-1 または RAID-10 にはまったく問題ありません。

関連情報