enospc エラーにより btrfs バランスが失敗する

enospc エラーにより btrfs バランスが失敗する

[おそらく間違った場所だと思ったので、stackoverflow から引き継ぎました]

現在、ZFS を実行している NAS の代替として btrfs をテストしています。それぞれ 20 GB のデバイスを 4 つ作成し、balance -dconvert=raid5オプションを使用して btrfs ファイルシステムを作成しました。次に、5 GB のファイルを使用して FS を埋め始めました (現在、9 個あります)。これらのファイルを作成した後 (ddから を使用してdev/zero)、 を開始しましたbalance btrfs balance start。しばらくすると、エラー がスローされますerror during balancing '.' - No space left on device。syslog に次のエラーが表示されます: btrfs: 4 enospc errors during balance

バランスを再度実行すると、-dusage=0正常に完了します (予想どおり) が、balance -dusage=90または単にbalanceフィルターなしでは機能しません。なぜ私はこれをそんなに気にしているのでしょうか。RAID5 BTRFS ボリュームからハードディスクを削除した場合に何が起こるかをテストし、データ破損が発生しないかどうかを確認しました。ハードディスクを削除した後、別のハードディスクを追加して、故障したハードディスクを削除したいと考えました。このプロセスも、enospc エラーが原因で失敗しました。

追加情報は以下をご覧ください:

(FSのマウントポイントは/mnt/raid/)

linux:/mnt/raid # btrfs filesystem show
Label: 'test_raid5'  uuid: 8b137115-974e-4f91-a243-ec6239c34761
    Total devices 4 FS bytes used 45.06GiB
    devid    4 size 20.00GiB used 16.03GiB path /dev/sde
    devid    3 size 20.00GiB used 17.00GiB path /dev/sdd
    devid    2 size 20.00GiB used 17.00GiB path /dev/sdc
    devid    1 size 20.00GiB used 16.04GiB path /dev/sdb

Label: none  uuid: 69c33622-1c80-4dc3-9c01-24c27def730c
    Total devices 1 FS bytes used 1.04GiB
    devid    1 size 18.92GiB used 3.04GiB path /dev/sda2

linux:/mnt/raid # btrfs filesystem df /mnt/raid/
Data, RAID5: total=48.00GiB, used=45.01GiB
System, RAID1: total=32.00MiB, used=12.00KiB
System: total=4.00MiB, used=0.00
Metadata, RAID1: total=1.00GiB, used=53.69MiB


linux:/mnt/raid # btrfs version
Btrfs v0.20-rc1+20130701


linux:/mnt/raid # uname -a
Linux linux 3.11.6-4-default #1 SMP Wed Oct 30 18:04:56 UTC 2013 (e6d4a27) x86_64 x86_64 x86_64 GNU/Linux


linux:/mnt/raid # cat /etc/os-release
NAME=openSUSE
VERSION="13.1 (Bottle)"
VERSION_ID="13.1"
PRETTY_NAME="openSUSE 13.1 (Bottle) (x86_64)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:13.1"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.org/"
ID_LIKE="suse"

btrfs ボリュームのバランスを再調整するためだけに、これにさらにスペースを追加する必要があるとは信じられません。これについて何かアイデアはありますか?

答え1

私は自分の「NAS」に zfs ではなく btrfs を採用することにしました。以前両方をテストしましたが、ZFS の方がはるかにドキュメントが充実しており、そのコマンド ライン インターフェイスに非常に魅了されたため、私にとっては ZFS が「より良い」選択でした。

しかし、致命的な問題がありました。RAID-5 の ZFS 用に 2TB HDD が 3 台あり、それを 4TB HDD に拡張したい場合、それは簡単ではありません。ZFS プールを 3HDD として作成し、新しい HDD を追加する場合は、さらに 3 台を追加する必要があります。合計で 6 台の 2TB になります。また、6 台の HDD があり、FS を拡張したい場合は、さらに 6 台を追加する必要があります。私の NAS エンクロージャは 4 台以上のディスクを保持できず、4 台の HDD を購入する余裕がないという問題がありました。この点では、Btrfs の方がはるかに柔軟です。

しかし、私が始めた頃は RAID-5/6 のサポートが本当に不十分でした。あなたと同じようにいくつかテストをしましたが、結局ファイルシステムが壊れてしまいました。同じテストを RAID-1 でも行いましたが、問題はありませんでした。そこで、RAID-1 で Btrfs を使用することにしました。Ubuntu LTS を使用する代わりに、常に最新の Ubuntu リリースを使用して、最新のカーネルと btrfs-tools パッケージを入手しています (Ubuntu 15.04 を使用しており、15.10 に切り替える準備をしています)。Ubuntu 16.04 がリリースされたら (テスト後) 最終的に RAID-5 に移行し、おそらくそれを使い続けるでしょう。最近のカーネル変更ログを見ると、RAID-5/6 のコード ベースの方がはるかに成熟していることがわかります。

それで、あなたの問題です。特にRAID-5または6でBtrfsを試したい場合は、最新のLinuxディストリビューションを使い続ける(例: Arch Linux、最新の Ubuntu、Fedora など)。他のディストリビューションほどの安定性はないかもしれませんが、Btrfs の場合はおそらくはるかに安定しています。

「使用例」について1つ注意点があります。Btrfsファイルシステムは、格納するファイルのサイズに比べてかなり小さいです。おそらく、実際のシナリオをあまり反映していないでしょう。大きなファイル(ビデオ)と小さなファイル(写真、ドキュメント)を作成し、ファイルシステムを80%まで埋めてみてください。これをテストする良い方法の1つは、ファイルシステムに多くのファイルを配置し、ファイルシステムベンチマークを実行することです。ベンチマーク自体のためではなく、それらがもたらすストレスのためです。phoronix テストスイートこのため(例phoronix-test-suite benchmark pts/disk)。

関連情報