Алексей Федорчук
Чтобы использовать btrfs, нужно для начала обеспечить её поддержку — на сегодняшний день ни один дистрибутив «искаропки» этого не предоставляет. Но, как можно догадаться из предыдущей заметки, этого можно достигнуть двумя путями. Первый — скачать и установить последний патч к ядру (на момент сочинения — за номером 0.17). Он, безусловно, прост, описан в документации, по сообщениям как на официальном сайте, так и в сети, работает с ядром версии 2.6.28, однако на счет более ранних версий информации у меня нет. Конечно, можно поэкспериментировать с ними самому — но гарантии успеха не даст даже страховой полис.
Второй путь — скачать исходники ядра linux-2.6.29-rc1, должным образом сконфигурировать его, собрать, установить и обеспечить загрузку. Для начала, разумеется, в параллели с ядром старым — во избежание, как говаривали «азиатские мудрые люди».
Кроме того, необходимо обеспечить возможность манипулировать с файловой системой btrfs. для чего потребуется скачать, собрать и установить комплект соответствующих утилит — в настоящий момент они существуют только в виде исходников.
В дистрибутиве, который я намечал для экспериментов (Zenwalk 5.4-beta1), штатно присутствует ядро linux-2.6.27.10. Тем более что собрано оно без поддержки PAE, то есть может использовать только 3 Гбайт с копейками суммарной памяти. А у меня было глубокое подозрение, что если btrfs хоть чем-то похожа на ZFS, то и память она любит не меньше. Да и банальная жадность не позволяла отдавать за просто так 700 Мбайт оной. Иными словами, пересборка ядра так и так стояла на очереди — и почему бы не двинуться в этом направлении вперёд, а не топраться на месте?
Короче говоря, я скачал архив, распаковал его, сконфигурировал в соответствии со своими же рекомендациями по части включения PAE и освобождения от архитектурных излишеств . После чего озаботился уже непосредственно обеспечением поддержки btrfs
.
Собственно говоря, тут все действия сводятся к тому, чтобы отправиться в пункт File Systems главного меню (рис. 1), отыскать там пункт Btrfs filesystem и включить его — встроив в ядро (как показано на рис. 2) или модулем. В документации по btrfs указан только второй вариант; однако я эксперименту ради решил опробовать жёсткое включение — вроде, вреда ни малейшего.
В результате этих действий в конфиге ядра (файле /usr/src/linux-2.6.29-rc1/.config
) появится строка
CONFIG_BTRFS_FS=y
или
CONFIG_BTRFS_FS=m
соответственно. Во втором случае следует выполнить ещё одно действие: перейти в пункт Library routines главного меню (рис. 3) и включить в нём подпункт CRC32c (рис. 4), также в виде модуля, что создаст в конфиге ядра пункт
CONFIG_CRYPTO_CRC32C=m
Если поддержка btrfs встроена в ядро жестко, то и жесткое встраивание CRC32c произойдёт автоматически:
CONFIG_CRYPTO_CRC32C=y
Что, собственно, и показано на рис. 4.
Теперь собираю ядро и модули, устанавливаю то и другое, как было описано ранее, обеспечиваю загрузку нового ядра. В Zemwalk’е по умолчанию принят загрузчик Lilo. Так что в файл /etc/lilo.conf
дописываю строки:
image = /boot/vmlinuz-2.6.29-rc1 root = /dev/sda1 label = Zen-2.6.29 read-only
переустанавливаю загрузчик:
# /sbin/lilo
и перезагружаюсь, выбирая в меню загрузчика новый пункт.
Всё — подготовительные мероприятия выполнены, остаётся посмотреть в первом приближении, что же получилось.
Чтобы сварить суп из курицы, надо как минимум иметь курицу. То есть для и опробования btrfs
, кроме её поддержки ядром, необходимо иметь соответствующий инструментарий — средства создания соответствующей файловой системы и манипуляции ею. Получить его в виде пакета исходников (btrfs-progs
) можно из git-хранилища с kernel.org, из каталога, принадлежащего Мейсону.
Да, если поддержка btrfs
задействована через модуль, следует загрузить его, вместе с модулем CRC32c:
modprobe libcrc32c insmod btrfs.ko
Поскольку я и то, и другое встроил в ядро жёстко, но необходимости в этой операции не возникло.
Зато в Zemwslk’е мне для начала потребовалось установить пакет git
(в инсталляционном наборе он отсутствует) из любого официального репозитория:
# netpkg git
Хотя можно воспользоваться и графической утилитой Netpkg. Далее — так (можно от лица обычного пользователя):
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs-unstable.git
После этого перехожу в новообразовавшися каталог:
$ cd path2/btrfs-progs-unstable
собираю пакет (без предварительного конфигурирования):
$ make
и, получив права суперпользователя, устанавливаю:
# make install
Инсталляция происходит в каталог /usr/local
, в результате чего в нём можно будет увидеть следующие утилиты:
$ ls -1 /usr/local/bin | grep btrfs-debug-tree* btrfs-image* btrfs-show* btrfs-vol* btrfsck* btrfsctl* btrfstune* mkfs.btrfs*
Обращаю внимание, что на сегодняшний день пакет btrfs-progs
не содержит man-страниц, так что о назначении утилит следует догадываться по смыслу.
Однако со всеми этими утилитами я намерен разбираться позднее — пока мне достаточно создать файловую систему и проверить её в работе. Для этого при инсталляции был заботливо припасён пустой первичный раздел без файловой системы. Насколько я понимаю, никто не запрещает создавать btrfs
и на логическом разделе, однако это теряет смысл: ведь она берёт на себя функции не только собственно файловой системы, но и менеджера томов, что делает ненужным использование extended partition вообще.
Итак, создаю файловую систему btrfs
:
# mkfs.btrfs /dev/sda4
Этой команде можно задать несколько важных опций, но пока всё они не существенны, ими мы займёмся позднее.
Монтирую её в заранее заготовленный подкаталог домашнего каталога пользователя:
# mount -t btrfs /dev/sda4 /home/alv/btrfs/
Возвращаюсь в режим обычного пользователя и копирую на btrfs произвольный файл:
$ cp /mnt/sdb3/diff/нечто.avi /home/alv/btrfs/
Ура! Всё работает. Можно разбираться дальше.
Познавательно.Спасибо.