Алексей Федорчук
На этой странице речь пойдёт о поддержке в 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:
Всё это прекрасно, но работает до первой перезагрузки — при старте машины модули поддержки обеих файловых систем сами собой не подгружаются. И обычно практиковавшийся мной в таком случае метод — создание в каталоге /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-накопителей по пользовательским десктопам побудит довести до ума не одну, так другую. И они будут поддерживаться дистрибутивами уже не для «галочки», а для реальной работы.