Файловая система f2fs и Ubuntu 13.10

Алексей Федорчук
Ubuntu’вы страсти, 12.06.2013

Файловая система f2fs (Flash-Friendly File System — “Дружественная к Флэшкам Файловая система”) разработана специально для размещения на SSD и тому подобных твердотельных носителях информации. Она штатно поддерживается ядром Linux, начиная с версии 3.8.0 — той самой, которая входит в состав Ubuntu 13.04.

В принципиальной поддержке f2fs легко убедиться командой

$ ls /lib/modules/3.8.0-23-generic/kernel/fs/f2fs

в выводе которой мы увидим модуль

f2fs.ko

Однако по умолчанию он не задействован. Поэтому можно попытаться загрузить его обычным образом:

$ sudo modprobe f2fs

Попытка будет успешной, о чём нам сообщит команда

$ lsmod | grep f2fs
f2fs                  109231  0

Интересно, что при этом вывод команды

dmesg | grep -i f2fs

будет по прежнему пуст. И после перезагрузки никакого намёка на этот модуль не обнаружится. Так что нужно обеспечить его загрузку на старте системы вручную. Для этого достаточно в файл /etc/modules добавить строку

f2fs

Что можно сделать от лица суперпользователя либо в текстовом редакторе, либо последовательностью команд типа

$ sudo -i
$ echo f2fs >> /etc/modules
$ exit

Как нетрудно догадаться, этим достигается обязательность загрузки соответствующего модуля на стадии инициализации системы.

Однако от самой по себе поддержки любой файловой системы мало радости, если нет соответствующих инструментов для работы с ней. А для работы с f2fs их у нас в Ubuntu пока нет.

Впрочем, и получение этого инструментария — труд не великий. И заключается он в проверке доступности репозитория universe с последующей командой

sudo apt-get install f2fs-tools

Впрочем, весь инструментарий для работы с f2fs в настоящее время сводится к единственной команде — /sbin/mkfs.f2fs и сопутствующей документации — man (8) mkfs.f2fs.

Создание f2fs на разделе или raw-устройстве выполняется обычным образом:

mkfs.f2fs /dev/sdf1

в ответ на что последует такой вывод:

F2FS-tools: Ver: 1.1.0 (29-Nov-2012)
Info: sector size = 512
Info: total sectors = 30308319 (in 512bytes)
Info: zone aligned segment0 blkaddr: 256
Info: This device doesn't support TRIM
Info: format successful

Приведённый пример относится к флэшке, почему и мы и видим сообщение об отсутствии поддержки TRIM — на любом современно SSD его, ясное дело, не будет.

Команда mkfs.f2fs имеет несколько опций. Одна из них -l задаёт метку для соответствующего раздела или устройства, что очень целесообразно при использовании f2fs на сменных носителях типа флэшек. Остальные же определяют политику распределения блоков (-a), размер области обеспечения (-o), число сегментов на секцию (-s) и секций на зону (-z). Однако оказываемый ими эффект нигде не документирован, а возможностей для экспериментов у меня не было. Так что остаётся положиться на умолчания, каковые, кроме как у тёти Мани можно посмотреть также, дав команду mkfs.f2fs без аргумента:

-a heap-based allocation [default:1]
-o overprovision ratio [default:5]
-s # of segments per section [default:1]
-z # of sections per zone [default:1]

А смысл их почерпнуть из статьи Нейла Брауна или её русского перевода.

После создания файловой системы f2fs возникает естественное желание опробовать её в деле. Для чего желательно её примонтировать куда-либо. Автоматически системой она не опознаётся, не смотря на обеспечение загрузки нужного модуля. То есть, в отличие от других файловых систем на внешних носителях, по умолчанию её не видно в файловых менеджерах типа Nautilus или Thunar.

Однако это не значит, что разделы или устройства с f2fs обязательно монтировать руками и тем более от root’а. Достаточно создать в домашнем каталоге пользователя точку монтирования (например, $HOME/test) и вписать в /etc/fstab строку

/dev/sdb1 $HOME/test f2fs user,noauto 0 0

Разумеется, не забыв подставить значение переменной $HOME и указать имя наличествующего устройства. После чего устройство с f2fs появляется среди точек входа Nautilus’а или Thunar’а при его подсоединении (в виде метки — если таковая была задана). Это относится к сменным носителям — например, флэшкам или SD-картам. Устройства внутренние (накопители SSD) целесообразно монтировать обычным образом «на постоянной основе».

К сожалению, разместить на f2fs корень файловой иерархии в настоящий момент нельзя. В инсталляторе Ubuntu такой возможности не предусмотрено. А «обходные пути», подобные тем, что применяются при установке с корнем на ZFS, упираются в то, что grub-probe не опознаёт f2fs, и никаких «корректировщиков», подобных GRUB for Native ZFS, пока (?) не существует.

Добавить комментарий