Btrfs Wiki
Перевод: Алексей Федорчук
2009-01-28
ОригиналФайловая система Btrfs может быть создана на нескольких устройствах, и дополнительные устройства могут быть добавлены после её создания. По умолчанию, метаданные её будут зеркалированы на два устройства, а данные будут расщепляться на все наличные устройства.
Если в наличии есть только одно устройство, то метаданные будут дублироваться на нём же.
При использовании Btrfs устройства можно добавлять и удалалять "на лету". Добавление устройств посредством mkfs со временем дает возможность использовать RAID разных уровней.
С помощью btrfs можно создавать массивы raid0, raid1, raid10, и дублировать их метаданные. По прочтении блоков, проверке их контрольных сумм и обнаружении ошибок btrfs попытается считать их с альтернативной копии.
Команда mkfs.btrfs может воспринимать более одного устройства как аргументы командной строки. Это даёт возможность конфигураций RAID-массива для данных и метаданных. Доступен выбор между raid0, raid1, raid10 и единичным устройством. Выбор единичного устройства означает, что никакое дублирование метаданных не выполняется, что предпочтительно при использовании аппаратного RAID.
Для создания raid10 требуется не меньше четырёх устройств.
# Создание файловой системы поверх четырёх дисков mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd /dev/sde # Расщепление метаданных без зеркалирования mkfs.btrfs -m raid0 /dev/sdb /dev/sdc # Использование raid10 как для данных, так и для метаданных mkfs.btrfs -m raid10 -d raid10 /dev/sdb /dev/sdc /dev/sdd /dev/sde # Без дублирования метаданных на единичном устройстве mkfs.btrfs -m single /dev/sdb
После создания многодисковой файловой системы, любое входящее в неё устройство может быть смонтировано отдельно:
mkfs.btrfs /dev/sdb /dev/sdc /dev/sde mount /dev/sde /mnt
После рестарта системы или перезагрузки модуля btrfs, нужно использовать команду
btrfsctl -a
для обнаружения всех многодисковых файловых систем на данной машине (см. ниже).
Команда btrfsctl -a используется для просмотра всех блочных устройства в каталоге /dev и поиска томов Btrfs. Это требуется после загрузки модуля btrfs, если он запускается на файловой системе, состоящей из более чем одного устройства.
# Просмотр всех устройств btrfsctl -a # Просмотр единичного устройства btrfsctl -A /dev/sdb
Команда btrfs-show выводит информацию обо всех файловых системах Btrfs на данной машине.
Команда btrfs-show даёт список всех файловых систем btrfs и устройств, которые они включают.
Команда btrfs-vol может использоваться для добавления новых устройств к смонтированной файловой системе и для банасировки нагрузки (рестриппинга) экстентов между всеми наличными устройствами. Например:
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
Команда btrfs-vol из приведённого выше примера может применяться для удаления сбойного устройства, если его суперблок ещё может быть считан. Если же устройство вышло из строя полностью или суперблок разрушен, то файловая система будет перемонтирована в деградировавшем режиме:
mkfs.btrfs -m raid1 /dev/sdb /dev/sdc /dev/sdd /dev/sde # # если устройство sdd разрушено или удалено, # используется -o degraded для # принудительного монтирования # с игнорирование отсутствующего устройства # mount -o degraded /dev/sdb /mnt # # 'missing' заменяет имя файла устройства # btrfs-vol -r missing /mnt
Команда btrfs-vol -r missing предписывает btrfs удалить первое устройство, указанное в метаданных файловой системы, но не первое в порядке монтирования её.