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