Создание и обслуживание разделов с файловой системой Btrfs Для примера создадим Btrfs-раздел размером 1 Тб, включающий в себя два диска по 500 Гб (/dev/sdb и /dev/sdc): Code: # mkfs.btrfs /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 Для проверки, что файловая система охватывает два диска выполним: Code: # btrfs filesystem show /dev/sdb Label: none uuid: b4f5c9a8-d8ec-4a5b-84f0-2b8c8d18b257 Total devices 2 FS bytes used 28.00KB devid 1 size 5.00GB used 1.53GB path /dev/sdb devid 2 size 5.00GB used 1.51GB path /dev/sdc Смонтируем созданную ФС: Code: # mount /dev/sdb /mnt монтировать следует первое устройство /dev/sdb, при попытке дополнительно смонтировать /dev/sdc будет выдано предупреждение: Code: # mount /dev/sdc /mnt mount: /dev/sdc already mounted or /mnt busy mount: according to mtab, /dev/sdb is already mounted on /mnt Просмотрим информацию о смонтированном разделе: Code: # df -h /mnt Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 56K 8.0G 1% /mnt # btrfs filesystem df /mnt Data, RAID0: total=1.00GB, used=0.00 Data: total=8.00MB, used=0.00 System, RAID1: total=8.00MB, used=4.00KB System: total=4.00MB, used=0.00 Metadata, RAID1: total=1.00GB, used=24.00KB Metadata: total=8.00MB, used=0.00 Создадим подраздел с именем subbasefoo для хранения файлов и директорий: Code: # btrfs subvolume create subbasefoo Create subvolume './subbasefoo' Поместим в данный подраздел три пустых файла foobar1, foobar2 и foobar3: Code: # touch foobar1 foobar2 foobar3 Создадим снапшот с именем subbasefoo-20120501 созданного ранее подраздела и проверим, что файлы в нём находятся в неизменном виде: Code: # btrfs subvolume snapshot subbasefoo/ subbasefoo-20120501 Create a snapshot of 'subbasefoo/' in './subbasefoo-20120501' # ls -R subbasefoo subbasefoo-20120501 ./subbasefoo: foobar1 foobar2 foobar3 ./subbasefoo-20120501: foobar1 foobar2 foobar3 Удалим файлы в основном подразделе и убедимся, что они сохранились в снапшоте (занимаемое файлами дисковое пространство освободится только после удаления снапшота). По сути снапшот является тем же подразделом, поэтому к нему применимы все команды для подразделов, в том числе создание новых снапшотов. Для использования возможности восстановления состояния подраздела рекомендуется создавать новые снапшоты при проведении в них экспериментов - если рузультат оказался удачен, старый снапшот можно удалить, а если нет - удалить экспериментальный снапшот. Интересной особенностью является возможность клонирования файлов без расходования дополнительного дискового пространства на каждую копию (хранится только один экземпляр данных). Для подобного клонирования в процессе копирования утилитой cp следует использовать опцию reflink. Например клонируем файл rantest.tst, размером 200 Мб: Code: # df -h . Filesystem Size Used Avail Use% Mounted on - 10G 201M 7.8G 3% /mnt/btrfs/subbasefoo # cp --reflink rantest.tst clonetest.tst # df -h . Filesystem Size Used Avail Use% Mounted on - 10G 201M 7.8G 3% /mnt/btrfs/subbasefoo 25.07.2012 http://www.opennet.ru/tips/2702_btrfs_mount_snapshot_linux.shtml