как создания отказоустойчивых конфигураций, опции для обеспечения целостности данных, хранение данных в сжатом виде, снапшоты. Создадим тестовый раздел Btrfs на диске /dev/sdb: Code: # mkfs.btrfs /dev/sdb adding device /dev/sdb id 2 fs created label (null) on /dev/sdb nodesize 4096 leafsize 4096 sectorsize 4096 size 10.00GB Btrfs Btrfs v0.19 Примонтируем созданный раздел: Code: # mount /dev/sdb /mnt Создадим подраздел и скопируем на него тестовые файлы: Code: # cd /mnt # btrfs subvolume create MYFILES # cp myfile* /mnt/MYFILES # ls /mnt/MYFILES myfile1 myfile2 myfile3 Удалим один из файлов: Code: # rm /mnt/MYFILES/myfile2 # ls /mnt/MYFILES myfile1 myfile3 Если файлов очень много, то удалять их командой "rm -rf" достаточно долгий и ресурсоёмкий процесс. В этом случае проще воспользоваться командой удаления подраздела: Code: # btrfs subvolume delete MYFILES При этом важно понимать, что удалить можно только отдельно созданные подразделы. Подраздел, создаваемый по умолчанию при форматировании ФС, удалению не подлежит. Настройка отказоустойчивой конфигурации с зеркалированием на несколько дисков. Btrfs предоставляет достаточно гибкие средства по зерклированию данных и расширению доступного пространства раздела. Дополнительные диски можно подключить в любое время, расширив таким образом размер ФС или обеспечив отказоустойчивость. По умолчанию при размещении радела на нескольких дисках осуществляется зеркалирование метаданных на двух дисках, но сами данные распределяются по данным дискам без резервирования (размер ФС получается равным суммарному размеру дисков). Если диск один, то две копии метаданных размещаются на нём. Добавим в уже созданный раздел дополнительный диск /dev/sdc, все данные уже сохранённые на первом диске останутся на месте, если не выполнить операцию ребалансировки: Code: # btrfs device add /dev/sdc /mnt/btrfs # btrfs filesystem show Label: none uuid: b4f5c9a8-d8ec-4a5b-84f0-2b8c8d18b257 Total devices 2 FS bytes used 200.33MB devid 1 size 5.00GB used 5.00GB path /dev/sdb devid 2 size 5.00GB used 4.98GB path /dev/sdc Использование RAID Btrfs имеет встроенную поддержку нескольких уровней RAID (RAID1, RAID5). В отличии от обычных программных и аппаратных RAID, Btrfs оперирует не формированием RAID на уровне дисков, а использует для создания логических RAID разделов распределение chunk-ов, определяющих дисковую область заданного размера (от 256 Мб). Каждый chunk может быть отзеркалирован на несколько дисков или склеен из частей разных дисков. При создании RAID для данных и метаданных могут применяться разные методы хранения, например, для метаданных и служебных структур всегда применяется зеркалирование. Создать RAID заданного уровня для данных и метаданных можно на этапе создания ФС. Например, создадим RAID1 (зеркало) из двух дисков: Code: # mkfs.btrfs -m raid1 -d raid1 /dev/sdb /dev/sdc mkfs.btrfs -m raid1 -d raid1 /dev/sdb /dev/sdc adding device /dev/sdc id 2 fs created label (null) on /dev/sdb nodesize 4096 leafsize 4096 sectorsize 4096 size 10.00GB Btrfs Btrfs v0.19 После чего подключим ещё два диска и создадим RAID10 (зеркало на двух склеенных дисках): Code: # mkfs.btrfs -m raid10 -d raid10 /dev/sdd /dev/sde adding device /dev/sde id 2 fs created label (null) on /dev/sdd nodesize 4096 leafsize 4096 sectorsize 4096 size 10.00GB Btrfs Btrfs v0.19 Опция "-m" задаёт уровень RAID для метаданных, а "-d" для данных. Например, можно использовать смешанные схемы: Code: # mkfs.btrfs -m raid1 -d raid10 /dev/sdf /dev/sdg /dev/sdh /dev/sdi Обеспечение целостности данных. Btrfs поддерживает несколько встроенных механизмов обеспечения целостности: * Хранение контрольных сумм для проверки блоков данных и метаданных; * Изоляция сбоев (отдельное сохранение данных и метаданных с CRC-верификацией); * Средства выявления повреждений и их автоматической корректировки (проверка по контрольным суммам осуществляется при каждом чтении блока, если выявлено расхождение осуществляется попытка прочитать повреждённый блок с другого диска, после чего осуществляется корректировка повреждённого блока); * Поддержка операции фоновой перепроверки всего содержимого ФС (вычисляются и сверяются контрольные суммы для всех блоков). Для запуска проверки следует выполнить: Code: # btrfs scrub start /mnt/MYFILES * Перестроение RAID при замене или добавлении новых дисков. Отличительной чертой Btrfs является то, что в перестроении участвуют только занятые блоки, что существенно сокращает время выполнения операции. * В настоящее время в Btrfs нет встроенной возможности хранения информации в зашифрованном виде, но обеспечить шифрование можно путем создания ФС поверх шифрованных разделов, созданным при помощи подсистем dm_crypt и LUKS. Использование сжатия данных. Для оптимизации расходования дискового пространства при хранении хорошо сжимаемых данных можно использовать встроенные в Btrfs механизмы сжатия. Поддерживается сжатие методами Lempel-Ziv-Oberhumer (LZO) или zlib (в разработке поддержка Snappy и LZ4). Включить сжатие можно после создания ФС, на этапе монтирования, при этом сжиматься будут только новые данные. Монтируем раздел с включением сжатия: Code: # mount -o compress=lzo /dev/sdb /mnt/MYFILES Сжатие можно включить и для отдельного подраздела: Code: # btrfs subvolume create /mnt/MYFILES/mysubvol # mount -o compress=lzo,subvol=mysubvol /dev/sdb /mnt/MYSUBVOL Снапшоты и клонирование. В рамках снапшота может быть сделан активный срез состояния ФС в заданный момент времени. В дальнейшем, используя средства миграции данный, сохранённый снапшот можно восстановить на другой машине. Кроме задействования дополнительных метаданных снапшон не приводит к дополнительному расходованию дискового пространства - физически хранится одна копия данных. Создадим снапшот для ранее созданных данных: Code: # ls /mnt/MYFILES myfile1 myfile2 # btrfs subvolume snapshot /mnt/MYFILES /mnt/SNAPSHOT # ls /mnt/SNAPSHOT myfile1 myfile2 Для отдельных фалов можно создавать клоны, которые в отличие от копирования используют один набор блоков на диске: Code: # cp --reflink /mnt/MYFILES/myfile1 /mnt/MYFILES/myfile3 # ls /mnt/MYFILES myfile1 myfile2 myfile3 Средства дефрагментации. Btrfs поддерживает режим автоматической фоновой дефрагментации, активируемый при помощи опции монтирования "-o autodefrag". Кроме того, дефрагментацию можно запустить вручную: Code: # btrfs filesystem defrag /mnt 21.08.2012 http://opennet.ru/tips/2710_btrfs_snapshot_clone_raid_mirror_defrag.shtml