Балансировка btrfs не удалась из-за ошибки enospc

Балансировка btrfs не удалась из-за ошибки enospc

[взято со stackoverflow, так как я решил, что это, вероятно, не то место]

В настоящее время я тестирую btrfs как возможную замену для моего NAS с ZFS. Я создал 4 устройства по 20 ГБ каждое и создал файловую систему btrfs с помощью опции balance -dconvert=raid5. Затем я начал заполнять FS файлами по 5 ГБ (сейчас у меня их 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

Я решил пойти по пути btrfs вместо zfs для своего "NAS". Я тестировал обе версии раньше, и должен признать, что ZFS показался мне гораздо более документированным, меня действительно соблазнил его интерфейс командной строки, поэтому для меня ZFS был "лучшим" выбором.

Но был один момент: если у вас есть 3x 2 ТБ HDD для ZFS в RAID-5 и вы хотите расширить их до 4x ТБ HDD, это нелегко. Если вы используете пул ZFS как 3HDD и хотите добавить новый HDD, то вам нужно добавить еще 3: в общей сложности 6x 2 ТБ. А если у вас 6HDD и вы хотите расширить свою FS, вам нужно добавить еще 6 и т. д. У меня была проблема, что мой корпус NAS не может вместить больше 4 дисков, и я пока не могу позволить себе купить 4 HDD. В этом отношении Btrfs гораздо более гибкая.

Однако, когда я начинал, RAID-5/6 поддерживался очень плохо. Я провел несколько тестов, как и вы, и в итоге повредил файловую систему. Я провел те же тесты в RAID-1, и никаких проблем! Поэтому я решил использовать Btrfs в RAID-1, и вместо использования Ubuntu LTS я всегда использую последний релиз Ubuntu, чтобы получить последнее ядро ​​и пакет btrfs-tools (я использую Ubuntu 15.04 и готовлюсь перейти на 15.10). Я, вероятно (после тестирования), наконец, перейду на RAID-5, как только выйдет Ubuntu 16.04, и, вероятно, буду придерживаться его. Я видел в последних журналах изменений ядра, что кодовая база для RAID-5/6 гораздо более зрелая.

Итак, к вашей проблеме. Если вы хотите попробовать Btrfs, особенно в RAID-5 или 6,используйте самые последние дистрибутивы Linux(например, Arch Linux, последняя версия Ubuntu, Fedora и т. д.). Им может не хватать стабильности других дистрибутивов, но для Btrfs они, вероятно, гораздо более стабильны.

Одно замечание о вашем "варианте использования": ваша файловая система Btrfs довольно мала по сравнению с размером файлов, которые вы в нее помещаете. Вероятно, она не очень хорошо отражает реальный сценарий. Вам следует создать большие (видео) и маленькие файлы (фотографии, документы) и попытаться заполнить вашу файловую систему до 80%. Один хороший способ проверить это — поместить много файлов в вашу файловую систему, а затем запустить тесты файловой системы, не для самого тестирования, а для нагрузки, которую они создают. Вы можете использоватьphoronix-test-suiteдля этого (например phoronix-test-suite benchmark pts/disk).

Связанный контент