Для примера создадим Btrfs-раздел размером 10 Гб, включающий в себя два диска по
5 Гб (/dev/sdb и /dev/sdc):
# 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
Для проверки, что файловая система охватывает два диска выполним:
# 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
Смонтируем созданную ФС:
# mount /dev/sdb /mnt
монтировать следует первое устройство /dev/sdb, при попытке дополнительно
смонтировать /dev/sdc будет выдано предупреждение:
# mount /dev/sdc /mnt
mount: /dev/sdc already mounted or /mnt busy
mount: according to mtab, /dev/sdb is already mounted on /mnt
Просмотрим информацию о смонтированном разделе:
# 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 для хранения файлов и директорий:
# btrfs subvolume create subbasefoo
Create subvolume './subbasefoo'
Поместим в данный подраздел три пустых файла foobar1, foobar2 и foobar3:
# touch foobar1 foobar2 foobar3
Создадим снапшот с именем subbasefoo-20120501 созданного ранее подраздела и
проверим, что файлы в нём находятся в неизменном виде:
# 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 Мб:
# 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
|