20 Фев

Создание RAID в BTRFS

Конечно, речь идет о программной реализации дисковых RAID-массивов.
Для создания RAID-массивов обычно все используют mdadm. Это старая и давно отлично зарекомендовавшая себя утилита работает практически на отлично. Но в btrfs есть свои нативные средства для создания и работы с дисковыми массивами.
Скажу без преувеличения, что работать с RAID в btrfs просто сказка! Пока что я еще нигде не встречал ничего подобного, ничего более удобного и интуитивно понятного.

Расскажу коротко, как все это происходит и покажу на примерах.
Допустим, нам необходимо создать RAID1-массив для зеркалирования наших ужасно важных данных.
Для этого мы уже поставили в системник 2 диска (или они уже стояли) /dev/sdb и /dev/sdc. Все делается одной командой:

mkfs.btrfs -m raid1 /dev/sdb /dev/sdc

После этого, можно монтировать любое из этих устройств — результат будет одинаковый.
Что если нам надо создать RAID10? Для этого нам необходимо минимум 4 диска:

mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd /dev/sde

Можно таким же образом создать и RAID0, расщепляя метаданные без зеркалирования:

mkfs.btrfs -m raid0 /dev/sdb /dev/sdc

К смонтированной файловой системе btrfs можно добавлять новые устройства для банасировки нагрузки (рестриппинга) экстентов между всеми наличными устройствами. Это все тоже делается очень просто при помощи btrfs-vol. Допустим, мы создали ФС на единичном диске /dev/sdb и хотим добавить еще один диск:

mkfs.btrfs /dev/sdb
mount /dev/sdb /mnt
# Добавление устройства
btrfs-vol -a /dev/sdc /mnt

В /mnt у нас есть теперь файловая система на двух устройствах, но все метаданные и данные всё еще хранятся на /dev/sdb. Файловая система должна быть сбалансирована, чтобы раскидать (существующие) файлы на все устройства:

btrfs-vol -b /mnt

Команда btrfs-vol может также применяться для удаления устройств «на лету». Она перераспределяет все экстенты, используемые на подлежащем удалению устройстве, на другие устройства файловой системы. Например:

mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd /dev/sde
mount /dev/sdb /mnt
# Перераспределение данных по файловой системе
btrfs-vol -r /dev/sdc /mnt

Добавление устройств посредством mkfs со временем дает возможность использовать RAID разных уровней.

С помощью btrfs можно создавать массивы raid0, raid1, raid10, и дублировать их метаданные. По прочтении блоков, проверке их контрольных сумм и обнаружении ошибок btrfs попытается считать их с альтернативной копии.

Команда btrfsctl -a используется для просмотра всех блочных устройства в каталоге /dev и поиска томов Btrfs. Это требуется после загрузки модуля btrfs, если он запускается на файловой системе, состоящей из более чем одного устройства.

Команда btrfs-show выводит информацию обо всех файловых системах Btrfs на данной машине.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *