Про Salix. Поддержка f2fs и nilfs2

Алексей Федорчук

На этой странице речь пойдёт о поддержке в Salix’е двух файловых систем, специально предназначенных для твердотельных накопителей — nilfs2 и f2fs. Хотя обе они официально включены в ядро Linux достаточно давно (первая — с 2009 года, вторая — с 2012), ни та, ни другая пока не получили широкого распространения. И, насколько мне известно, штатно не поддерживаются инсталлятором ни одного из современных дистрибутивов, в том числе и инсталлятором Salix. И скоро станет понятно, почему. Однако, как будет видно из дальнейшего, включить их поддержку в нём можно.

Для начала легко убедиться в том, что ядро текущей версии Salix’а собрано с модульной поддержкой обеих интересующих нас файловых систем:

$ ls /lib/modules/3.10.17/kernel/fs/{nilfs2,f2fs}
/lib/modules/3.10.17/kernel/fs/f2fs:
f2fs.ko

/lib/modules/3.10.17/kernel/fs/nilfs2:
nilfs2.ko

После этого соответствующие модули следует загрузить:

$ sudo modprobe nilfs2
$ sudo modprobe f2fs

И удостовериться в успехе этой операции:

$ lsmod | grep nilfs2
nilfs2                147232  0
$ lsmod | grep f2fs
f2fs                  141479  0

Для работы с любой файловой системой (создания, монтирования etc.) необходим соответствующий инструментарий, и героини моего сегодняшнего рассказа — не исключение. Для f2fs он в виде пакета легко находится в штатном репозитории:

$ slapt-get --search f2fs                              [alv]
f2fs_tools-1.2.0-x86_64-1_SBo [inst=нет]: f2fs_tools (Userland tools for the f2fs filesystem)

И столь же непринуждённо устанавливается:

$ slapt-get --install f2fs_tools

А вот за инструментами для nilfs2 придётся лезть в слакбилды:

$ slapt-src --search nilfs
nilfs-utils:2.1.5 - nilfs-utils (Utilities for NILFS)

Впрочем, и этот пакет собирается без всяких проблем:

$ sudo slapt-src -i nilfs-utils

Теперь с обеими файловыми системами можно работать — например, я отвёл под каждую из них по флешке объёмом 4 ГБ (больше свободных не было) на предмет последующего сравнения их быстродействия:

$ sudo /mkfs.nilfs2 -f -K /dev/sdf1
$ sudo /mkfs.f2fs -t 0 /dev/sdf1

В первой команде опция -f означает принудительное форматирование — иначе на флешке с существующей файловой системой оно не пойдёт. А опция -K отключает поддержку TRIM, каковая на флешках бесполезна. Аналогичный смысл опции -t 0 во второй команде. У обоих команд есть ещё несколько опций, с которыми можно ознакомиться на соответствующих man-страницах, но мне они показались (пока) не актуальными.

К слову — после включения поддержки наших героинь и установки надлежащего инструментария они появляются и в списке доступных для создания через GParted:

salix-nilfs-f2fs-01Всё это прекрасно, но работает до первой перезагрузки — при старте машины модули поддержки обеих файловых систем сами собой не подгружаются. И обычно практиковавшийся мной в таком случае метод — создание в каталоге /etc/modprobe.d/ соответствующих конфигов, nilfs2.conf и f2fs.conf — не прокатил.

Однако задача, тем не менее, решилась. Ибо в Slackwate для обеспечения загрузки модулей существует специальный файл, /etc/rc.d/rc.modules — симлинк на соответствующий конфиг для текущей версии ядра, в данном случае — /etc/rc.d/rc.modules-3.10.17. В его секцию

### Filesystem support ###

достаточно вписать такие строки:

/sbin/modprobe f2fs
/sbin/modprobe nilfs2

чтобы всё стало замечательно.

Теперь, после рестарта машины, при подключении флешки с nilfs2 соответствующее ей устройство появляется в списке устройств файлового менеджера Thunar. То есть, казалось бы, может быть смонтировано обычным пользователем, верно?

А не тут-то было. При выборе из контекстного меню пункта Подключить том устройство действительно делает вид, что подключается. Но для записи обычным пользователем оно недоступно, пока не переопределишь (от root’а) атрибуты принадлежности и доступа к точке монтирования.

Впрочем, такое поведение nilfs2 можно считать прогрессом. Когда я впервые попытался иметь дело с этой файловой системой, она вообще не поддерживала монтирование non-root’ом.

А с f2fs получается другая история: она вообще не желает монтироваться от лица обычного пользователя, если не вписать в файл /etc/fstab строку воде такой:

/dev/sdf1 /mount_point f2fs noauto,users,rw 0 0

Где /dev/sdf1 — первое устройство после подключённых постоянно. А точке монтирования нужно задать атрибуты принадлежности нужного пользователя. Причём сделать это обязательно после первого подключения устройства — в этот момент оно самопроизвольно становится принадлежащим root’у. Хотя установленная потом принадлежность пользователю в дальнейшем сохраняется. Об этом глюке я некогда писал. Судя по тому, что с тех пор прошёл год, бага приобрела статус фичи.

Тем не менее, после всего проделанного с устройством, несущим f2fs, можно работать почти нормально. Почти — потому что нет никакой гарантии, что оно будет найдено системой после отключения и повторного включения в том же сеансе. Это относится, кстати, и к nilfs2.

И ещё: при совместном использовании устройств с f2fs и nilfs нужно следить, чтобы первое было включено раньше второго, иначе, ясное дело, «буковки» не совпадут.

Резюмирую базар: в настоящее время и nilfs2, и f2fs представляют чисто академический интерес. Использование каждой из них по отдельности достаточно неудобно, а обе-две вместе вообще уживаются с напрягом. В чём, надо полагать, и заключается причина слабой, мягко говоря, их распространённости.

Поэтому всё сказанное выше — ни в малейшей степени не руководство к действию, а просто узелок на память: кто знает, может, триумфальное шествие SSD-накопителей по пользовательским десктопам побудит довести до ума не одну, так другую. И они будут поддерживаться дистрибутивами уже не для «галочки», а для реальной работы.

Оглавление