Отчётливо помню своё первое знакомство с btrfs. Это было почти 8 лет назад. Чтобы на собственной шкуре пробовать новшества Ubuntu и помогать на форуме ubuntu.ru, сижу на разрабатываемом релизе и перевожу разделы рабочего ПК с ext на btrfs. В те далёкие годы мне мало что могла дать btrfs против ext4 кроме геморроя. С тех пор наши дорожки пересекались несколько раз и вот речь пойдёт о последней нашей встрече.
По работе встала задача создать файловое хранилище. Серьёзные люди покупают серьёзные решения, но что-то последнее время меня выручает только бесплатный opensource и далеко не брендовое железо. На руках было несколько жёстких дисков и хотелось бы их объединить, чтобы для остального мира был единый и огромный массив. Так как всегда приходится чем-то жертвовать, а по поставленной задаче не нужна возможность переживать поломки дисков, то закрыли глаза на надёжность хранения. Что есть из вменяемого в мире linux для этих целей? Можно заюзать mdadm или LVM, а затем сверху накатить родную ext4.
Серьёзная ZFS затрагивает несколько уровней: уровень томов как LVM и, собственно, файловый слой как ext3/4 и своими средствами может реализовать многие ваши задумки. Но вопрос чистоты лицензирования ZFS в linux системах "искаропки" остаётся открытым. Не то чтобы меня это сильно тревожило или волновало, но всё же ...
У меня на руках диски разного объёма, завтра может будут ещё диски, а может нет. Мне хотелось посмотреть как btrfs поможет в данном вопросе. Ещё раз напомню, вопрос надёжности хранения не стоит и следовательно не нужны аналоги RAID 5,6 и тем более RAID 1,10.
У btrfs есть из ненадёжных уровней: raid0 и single. Но, как правильно говорят, дьявол прячется в мелочах. Когда у вас на руках много дисков одного размера, то проблем нет никаких. Собирайте нужный вам RAID, если количество дисков удовлетворяет выбранный вариант массива. Но что если диски разного объёма? RAID0 у btrfs реализуется через деление информации на блоки (страйп, stripe), НО заполняться все диски будут по правилу самого маленького диска. Размер самого маленького диска будет верхней планкой у остальных - это печально.
Вот тут нас выручит реализация single, которая реализуется без деления на страйпы (non-striped) и позволяет эффективно задействовать весь объём дисков. Вам остаётся создать файловую систему btrfs на ваших дисках - mkfs.btrfs -d single /dev/sdb /dev/sdc
В дальнейшем вам помогут команды, которые более точно отобразят текущую заполняемость массива и конкретных дисков.
btrfs filesystem show
btrfs filesystem df /mnt/your-mountpoint
btrfs filesystem usage /mnt/your-mountpoint
Если появятся ещё диски, то их легко можно добавить в существующий массив - btrfs device add /dev/sdd /mnt/your-mountpoint
Итоговый вывод: если вам нужно собрать большой массив из дисков разного размера без надёжности хранения, то не забывайте про single у btrfs. С каждой новой версией ядра linux, хорошеет и btrfs, которая вполне себе годная ФС.
Btrfs в Linux 4.
Btrfs в Ubuntu. Сотрудника Canonical Алана Поупа (Alan Pope) его друган подбил на использование btrfs.
LXC 1.0: Хранилище контейнеров. Btrfs, благодаря своей природе Copy-On-Write (CoW), идеальна для всего где нужны снимки ФС.
Главный разработчик Крис Мэйсон (Chris Mason), который работает в Facebook и оттачивает с помощью серьёзных нагрузок работу btrfs, выступил с рассказом о текущем положении дел и о планах.