由於 enospc 錯誤,btrfs 平衡失敗

由於 enospc 錯誤,btrfs 平衡失敗

[從 stackoverflow 接管,因為我認為那可能是錯誤的地方]

我目前正在測試 btrfs 作為運行 ZFS 的 NAS 的可能替代品。我創建了 4 個設備,每個設備 20GB,並使用該balance -dconvert=raid5選項創建了一個 btrfs 檔案系統。然後我開始使用 5GB 檔案填充 FS(現在我有 9 個)。創建這些文件(使用ddfrom dev/zero)後,我開始了balance btrfs balance start.一段時間後它會拋出錯誤error during balancing '.' - No space left on device。系統日誌顯示此錯誤: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”走btrfs的道路,而不是zfs。我之前測試過兩者,我必須承認我發現 ZFS 的文檔要好得多,我真的被它的命令列介面所吸引,所以對我來說 ZFS 是「更好」的選擇。

但有一個令人震驚的問題:如果您在 RAID-5 中有 3 個用於 ZFS 的 2TB HDD,並且您想將它們增加到 4x TB HDD,那並不容易。如果您將 ZFS 池設定為 3HDD 並且想要新增 HDD,則需要再新增 3 個 HDD:總共 6x 2TB。如果您有 6 個 HDD 並且想要增加 FS,則需要再增加 6 個,等等。在這方面,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 的程式碼庫更加成熟。

所以對於你的問題。如果您想嘗試 Btrfs,特別是在 RAID-5 或 6 中,堅持使用最新的 Linux 發行版(例如Arch Linux、最新的Ubuntu、Fedora 等)。它們可能缺乏其他發行版的穩定性,但對於 Btrfs 來說它們可能要穩定得多。

關於您的「用例」的一個註釋:與您放入的檔案的大小相比,您的 Btrfs 檔案系統相當小。您應該建立大檔案(影片)和小檔案(照片、文件),並嘗試將檔案系統填滿 80%。測試它的一個好方法是將許多檔案放在檔案系統上,然後執行檔案系統基準測試,不是為了基準測試本身,而是為了它們帶來的壓力。您可以使用phoronix 測試套件為此(例如phoronix-test-suite benchmark pts/disk)。

相關內容