Translation(s): English - Русский

FileSystem > Btrfs


Btrfs (иногда произносится butter fs) — новая свободная файловая система, разрабатываемая при поддержке компании Oracle. Распространяется по лицензии GPL. Несмотря на то, что её разработка ещё далека от завершения, 9 января 2009 года файловая система была интегрирована в ядро Linux, и доступна в Debian Squueze.

Хотя Btrfs была включена в ядро 2.6.29, разработчики утверждают, что "начиная от ядра 2.6.31, мы только планируем сделать впредь совместимый формат изменений диска". Разработчики по-прежнему хотят улучшить пользовательские/управленческие средства, чтобы сделать их более удобными в использовании. Для получения дополнительной информации о Btrfs, по ссылке вСмотреть также section.

Ext2/3/4 могут быть превращены в Btrfs (но не наоборот).

Cтатус

Debian Squeeze и новые версии поддержывают Btrfs.

FAQ

Какой пакет содержит утилиты для btrfs?

btrfs-tools (in DebianSqueeze and above)

Смотреть также: Btrfs wiki FAQ

Примеры команд по работе с btrfs

Создание файловой системы:

   mkfs.btrfs

Управление томами, подтомами, снимками; проверка целостности файловой системы:

   btrfsctl

Сканирование в поисках файловых систем btrfs:

   btrfsctl -a
   btrfsctl -A /dev/sda2 

Создание снимков и подтомов:

   mount -t btrfs -o subvol=. /dev/sda2 /mnt
   btrfsctl -s new_subvol_name /mnt
   btrfsctl -s snapshot_of_default /mnt/default
   btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name
   btrfsctl -s snapshot_of_a_snapshot /mnt/snapshot_of_new_subvol
       ls /mnt

Проверка extent-деревьев файловой системы:

   btrfsck

Вывести метаданные в текстовой форме:

   debug-tree
       debug-tree /dev/sda2 >& big_output_file 

Показать файловые системы btrfs на жестком диске:

   btrfs-show /dev/sda*

Дефрагментация (по умолчанию не требуется):

# btrfs filesystem defragment /mnt
или
# btrfs filesystem defragment /mnt/file.iso

Превращение файловой системы ext3 в btrfs

Файловую систему ext3 можно превратить в btrfs, и работать с ней дальше уже как с новой файловой системой. Причём состояние исходной файловой системы ext3, будет доступно и потом.

# Always run fsck first
%# fsck.ext3 -f /dev/xxx

# Convert from Ext3->Btrfs
%# btrfs-convert /dev/xxx

# Mount the resulting Btrfs filesystem
%# mount -t btrfs /dev/xxx /btrfs

# Mount the ext3 snapshot
%# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved

# Loopback mount the image file
%# mount -t ext3 -o loop,ro /ext2_saved/image /ext3

Теперь в каталоге /ext3 видно состояние исходной файловой системы.

Размонтирование происходит в обратном порядке:

%# umount /ext3
%# umount /ext2_saved
%# umount /btrfs

Можно вернуться на файловую систему ext3 и потерять сделанные изменения:

%# btrfs-convert -r /dev/xxx

Или можно остаться на btrfs и удалить сохранённый образ файловой системы ext3:

%# rm /ext2_saved/image

Примечание: у новой файловой системы после конвертирования иногда бывает очень большой размер метаданных.

Посмотреть размер метаданных:

# btrfs filesystem df /mnt/data1tb/

Нормализировать их размер:

btrfs fi balance /mnt/btrfs

Подробнее: Conversion from ext3 (англ.) и Преобразование ext3fs в btrfs (рус.)

Изменение размера файловой системы и разделов

Для btrfs доступно онлайн (на лету) изменение размера файловой системы. Для начала нужно примонтировать нужный раздел:

# mount -t btrfs /dev/xxx /mnt

Добавление 2Гб:

# btrfs filesystem resize +2G /mnt
или
# btrfsctl -r +2g /mnt

Уменьшение на 4Гб:

# btrfs filesystem resize -4g /mnt
или
# btrfsctl -r -4g /mnt

Задать размер в 20Гб файловой системе:

# btrfsctl -r 20g /mnt
или
# btrfs filesystem resize 20g /mnt

Использование всего свободного места:

# btrfs filesystem resize max /mnt
или
# btrfsctl -r max /mnt

Вышеперечисленные команды справедливы только для файловой системы. Чтобы изменить размер раздела, надо воспользоваеться еще другими утилитами, например fdisk. Рассмотрим пример для уменьшения раздела на 4Гб. Монтируем и уменьшаем раздел:

# mount -t btrfs /dev/xxx /mnt
# btrfsctl -r -4g /mnt

Теперь отмонтируем раздел и используем fdisk:

# umount /mnt
fdisk /dev/xxx   
# где dev/xxx - жесткий диск с нужным нам разделом

p  #выводит список разделов, узнаем номер нужного нам (N)

d  #удалить раздел, не пугайтесь

Номер раздела (1-4): N # вводим число - номер нужного нам раздела

n  # создать новый раздел на месте старого:

p  # основной раздел

Номер раздела (1-4): N # вводим конечно тоже самое число

Первый цилиндр, ставим тот, который программа предлагает по умолчанию

Последний цилиндр ставим как разницу старого размера раздела и 4Гб: например, если размер был 100Гб, ставим: +96G

p # посмотреть в списке разделов, все ли сделано правильно

w  # записать изменения

После надо перемонтировать раздел или перезагрузиться. Проверяем на ошибки новый раздел(нужно отмонтировать):

# btrfsck /dev/xxx

Документация

Смотреть также

Notes

#612809