Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по настройке программного RAID-массива средствами файловой системы Btrfs (в основном для собственного пользования) с пояснениями и все возможными мыслями. Действия будут происходить на виртуальной машине с Arch Linux (KVM/QEMU) для наглядности.
Btrfs имеет встроенную поддержку управления несколькими устройствами, что
позволяет использовать ее в качестве программного RAID-массива. Это упрощает администрирование, так как функции RAID встроены непосредственно в файловую систему, позволяя легко добавлять и удалять
диски, а так же выполнять балансировку данных. Чуть позже посмотрим на практике.
Btrfs поддерживает несколько стандартных уровней RAID. Обратите внимание, что Btrfs может применять разные уровни RAID для данных (-d) и метаданных (-m).
Уровень RAID на Btrfs
RAID 0 Чередование (Stripe). Увеличивает производительность и общий объем, но не имеет избыточности (отказ одного диска приводит к потере всех данных). Стабильный. Хорошо подходит для временных данных или кэша.
RAID 1 Зеркалирование (Mirror). Обеспечивает избыточность (отказ до половины дисков, но минимум одного, в зависимости от конфигурации), но уменьшает доступный объем вдвое. Работает с 2 и более дисками, в том числе разного размера. Стабильный и рекомендуемый. Широко используется для надежного хранения данных.
RAID 10 Комбинация зеркалирования и чередования. Высокая производительность и избыточность. Требует минимум 4 диска. Стабильный и рекомендуемый. Хороший выбор для баланса между производительностью и надежностью.
RAID 5 Чередование с распределенной четностью. Экономичное использование пространства (N-1 дисков), но сложная реализация. Экспериментальный/Не рекомендованный. В реализации Btrfs RAID 5/6 были обнаружены ошибки, которые могут привести к повреждению данных при определенных сценариях (например, при выходе из строя диска во время
"скраббинга"). Избегайте его использования для критически важных данных.
RAID 6 Чередование с двойной четностью. Позволяет пережить отказ двух дисков. Экспериментальный/Не рекомендованный. Имеет те же проблемы, что и RAID 5.
Преимущества RAID массива средствами Btrfs
- Гибкость: Устройства можно добавлять или удалять из массива "на лету" без перемонтирования.
- Управление пространством: Возможно использование дисков разного размера (Btrfs максимально эффективно использует доступное пространство, создавая внутренние RAID-сегменты).
- Простота: Создание файловой системы на нескольких устройствах проще, чем с помощью классического mdadm, и не требует длительной инициализации массива.
- Целостность данных: Btrfs включает контрольные суммы (checksums) для данных и метаданных, что позволяет обнаруживать и (в случае использования RAID 1/10) автоматически исправлять поврежденные данные (Bit Rot).
Рекомендации по использованию
На данном этапе повествования делаем выводы, что для надежного хранения данных в производственной среде рекомендуется использовать RAID 1 или RAID 10. Реализации RAID 5/6 в Btrfs все еще считаются экспериментальными и не рекомендуются для критически важных данных из-за известных проблем со стабильностью и производительностью при операциях восстановления.
Создание RAID-массива средствами Btrfs
Для создания RAID-массива на Btrfs используется команда mkfs.btrfs. Управление массивом (добавление дисков, балансировка) осуществляется через команду btrfs.
Команда mkfs.btrfs форматирует указанные диски и объединяет их в массив. Вам нужно указать, какой уровень RAID использовать для данных (-d, от "data") и для метаданных (-m, от "metadata").
Важно: Помните, при форматировании все данные на указанных дисках будут удалены.
- Создание RAID 1 (Зеркалирование)
Рекомендуется для надежного хранения данных, требует минимум 2 диска (можно разного размера). Пример: создание RAID 1 на четырех дисках /dev/vdb, /dev/vdc, /dev/vdd, /dev/vde
sudo mkfs.btrfs -d raid1 -m raid1 /dev/vd{b,c,d,e}
- Создание RAID 0 (Чередование)
Увеличивает скорость и общий объем, но не имеет отказоустойчивости. Требует минимум 2 диска. Пример: создание RAID 0 на четырех дисках /dev/vdb, /dev/vdc, /dev/vdd, /dev/vde
sudo mkfs.btrfs -d raid0 -m raid0 /dev/vd{b,c,d,e}
- Создание RAID 10 (Зеркалирование+Чередование)
Баланс между производительностью и надежностью, требует минимум 4 диска. Пример: создание RAID 10 на четырех дисках
sudo mkfs.btrfs -d raid10 -m raid10 /dev/vd{b,c,d,e}
- Создание RAID 5 (Чередование с распределенной четностью). Помним из выше сказанного крайне не надежна, экспериментальная. Пример: создание RAID 5 на четырех дисках
sudo mkfs.btrfs -d raid5 -m raid5 /dev/vd{b,c,d,e}
- Создание RAID 6 (Чередование с двойной четностью) Помним из выше сказанного крайне не надежна, экспериментальная. Пример: создание RAID 6 на четырех дисках
sudo mkfs.btrfs -d raid6 -m raid6 /dev/vd{b,c,d,e}
Монтирование массива
После создания массива его необходимо смонтировать. Используйте UUID файловой системы или один из дисков (Btrfs автоматически определит остальные диски, входящие в массив):
Создаем точку монтирования
sudo mkdir /mnt/myraid
Монтируем массив по имени устройства (достаточно указать одно) Используйте опцию "compress" для сжатия данных (рекомендуется)
sudo mount -o compress=zstd:6 /dev/vdb /mnt/myraid
Чтобы монтирование происходило автоматически при загрузке, добавьте запись в файл /etc/fstab. Лучше всего использовать UUID файловой системы:
Получите UUID вашего нового массива
sudo blkid /dev/vdb
Добавьте строку в /etc/fstab (замените UUID_ВАШЕГО_МАССИВА на реальный)
...
UUID=UUID_ВАШЕГО_МАССИВА /mnt/myraid btrfs defaults,compress=zstd:6 0 0
...
Управление массивом (после монтирования)
Просмотр статуса RAID. Убедитесь, что массив работает правильно и какие диски используются:
sudo btrfs filesystem show /mnt/myraid
sudo btrfs device stats /mnt/myraid
Добавление нового диска в массив. Вы можете добавить диск в уже работающий массив "на лету". Например, вы хотите добавить /dev/vdf
sudo btrfs device add /dev/vdf /mnt/myraid
Важно: После добавления диска данные автоматически не распределяются на новый диск. Необходимо выполнить балансировку.
Балансировка массива (обязательно после добавления диска) Балансировка перераспределяет существующие данные и метаданные по всем доступным дискам, используя выбранный уровень RAID: Запуск процесса балансировки
sudo btrfs balance start /mnt/myraid
Просмотр статуса балансировки в другом терминале
sudo btrfs balance status /mnt/myraid
Удаление диска из массива. Сначала переместите данные с диска, который хотите удалить
sudo btrfs replace start /dev/vdf /dev/vdg /mnt/myraid
где /dev/vdg - это новый диск, который заменит /dev/vdf (если замена)
Если просто удаляете диск из массива
sudo btrfs device delete /dev/vdg /mnt/myraid
Обслуживание
Скраббинг (Scrubbing) рекомендуется запускать проверку целостности данных (аналог fsck для Btrfs) регулярно, например, раз в месяц. Это обнаруживает и исправляет ошибки чтения с помощью избыточных копий (если у вас RAID 1/10). Запустить скраббинг в фоне
sudo btrfs scrub start /mnt/myraid
# Проверить статус
sudo btrfs scrub status /mnt/myraid
Подведем итоги данного повествования, достаточно интересная реализация RAID-массивов средствами файловой системы Btrfs, думаю для домашнего хранилища вполне актуальное решение в виде RAID1/RAID10 с учетом всех возможностей самой файловой системы как например сжатие, снепшоты, контрольные суммы данных и другие достоинства.
За основу взята документация по btrfs, а так же информация с форумов по
данной тематике, информация других пользователей размещенная на
просторах всемирной паутины и собственные наработки.
За сим откланиваюсь...