В настоящее время одной из самых распространённых файловых систем, используемых в операционных системах семейств Unix/Linux и отечественных ОС на базе ядра дистрибутивов Linux, является файловая система Ext4. Она широко используется для организации хранения данных на традиционных жестких дисках и съемных носителях. В 2012 году компания Samsung представила альтернативу данной файловой системе под названием F2FS (Flash-Friendly File System). Главным отличием F2FS от Ext4 является ее ориентированность на накопители, основанные на технологии флеш-памяти. К ним относятся SSD-жесткие диски, SD карты памяти, USB-флэш-накопители и другие подобные запоминающие устройства. Флэш-память широко используется в носителях информации благодаря дешевизне, большому объему, скорости работы [1]. Известным недостатком флэш-памяти является ограниченный ресурс ее использования. Поэтому, алгоритмы чтения/записи для флэш-памяти в файловой системе F2FS анонсируются, как оптимизированные для продления срока ее эксплуатации. Насколько это повлияло на быстродействие новой файловой системы?
Такое исследование актуально в связи с переходом госпредприятий России на отечественные операционные системы на базе свободно распространяемых сборок дистрибутивов Linux [2]. Результаты исследования могут использоваться при разработке и эксплуатации ЭВМ на отечественной элементной базе «Эльбрус» с целью обеспечения эффективной защиты конфиденциальной информации.
Последние исследования быстродействия файловой системы F2FS проводились в работах С.Джеонга и М.Ларабеля. В статье С.Джеонга [3] сравнивалось время операций записи и монтирования в файловых системах Ext4, NILFS2 и F2FS. Результаты показывают, что скорость записи в файловой системе F2FS в некоторых ситуациях превышала аналогичную в Ext4 более чем в два раза: 511.8 против 1057.9 КБ/с для записи и 383.4 против 772.3 КБ/с при монтировании. В работе М.Ларабеля [4] тестировалась скорость запуска различных СУБД и результаты оказались обратными. Для СУБД SQLite файловая система Ext4 оказалась более чем в 4 раза быстрее, чем F2FS.
В связи с этими исследованиями возникает вопрос: действительно ли файловая система F2FS быстрее Ext4 при использовании определенных программ или её преимущество видно только «на бумаге» при замере скоростей чтения/записи? Проведем свое исследование для сравнительной оценки скорости операций шифрования на уровне каталогов, используя API-интерфейс файловых систем.
В работе поставлена задача: определить, насколько новая файловая система F2FS работает быстрее на флеш-памяти, чем классическая файловая система EXT4, и оценить существенность этой разницы. Новизна такой постановки задачи состоит в следующем. Планируется оценить не общую скорость операций чтения/записи, а конкретный функционал двух файловых систем — операции шифрования данных на уровне каталогов.
Для достижения данной цели ставим задачу измерить производительность шифрования и проанализировать полученные экспериментальные данные.
Тестирование производительности файловых систем в области шифрования на уровне каталогов проводилось на твердотельном накопителе Samsung SSD 860 EVO 500GB. С помощью средств виртуализации Oracle VM VirtualBox были созданы две виртуальные машины с операционными системами Arch Linux. Каждой виртуальной машине выделено 2 ядра процессора, 1 Гбайт ОЗУ и фиксированный виртуальный жёсткий диск .vhd размером 8 Гбайт. Обе виртуальные машины загружаются в режиме BIOS с жестких дисков разметки MBR.
В первой виртуальной машине корневой раздел при установке системы отформатирован в файловую систему Ext4 командой mkfs.ext4 /dev/sda2, во второй виртуальной машине корневой раздел отформатирован в файловую систему F2FS командой mkfs.f2fs /dev/sda2. В остальном установка операционных систем произведена одинаково на обе виртуальные машины в соответствии с официальным руководством [5].
На рис.1 видно, что на виртуальной машине с именем Ext4 (слева) корневой раздел отформатирован в файловой системе Ext4, а на виртуальной машине с именем F2FS (справа) — в файловой системе F2FS.
Включим API-функцию fscrypt для выполнения шифрования на уровне каталогов. Для файловой системы Ext4 выполним команду tune2fs -O encrypt /dev/sda2, а для F2FS команду fsck.f2fs -O encrypt /dev/sda2. На обеих виртуальных машинах командой mkdir Test создадим новый каталог Test и с помощью команды fscrypt encrypt Test/ создадим парольную фразу для каталога Test (рис. 2).
Подготовим данные, которые будут шифроваться и затем дешифрироваться. В качестве примера используем исходные тексты утилиты GNU Image Manipulation Program (GIMP), которые занимают 766 МБ дисковой памяти. Перейдём в каталог Test командой cd Test и скачаем туда исходные коды командой git clone https://github.com/GNOME/gimp.git.
Далее был разработан сценарий для тестирования производительности. Он предусматривает выполнение трех экспериментов: трех последовательных операций шифрования и дешифрирования указанного каталога Test с замерами времени при помощи утилиты time.
Текст сценария:
#!/bin/sh /usr/bin/time -p fscrypt lock Test /usr/bin/time -p fscrypt unlock Test /usr/bin/time -p fscrypt lock Test /usr/bin/time -p fscrypt unlock Test /usr/bin/time -p fscrypt lock Test /usr/bin/time -p fscrypt unlock Test
При анализе временных показателей операций шифрования и дешифрования не будем учитывать время, затраченное на ввод пароля. Будут складываться только показатели user и sys. В таблицу 1 сведена полученная из эксперимента временная информация (в секундах).
| ФС | Тип | Эксперимент | Среднее значение | ||
|---|---|---|---|---|---|
| 1 | 2 | 3 | |||
| Ext4 | user | 1,78 | 1,78 | 1,82 | 1,79333 с. |
| sys | 0,93 | 0,93 | 0,97 | 0,94333 с. | |
| user+sys | 2,71 | 2,71 | 2,79 | 2,73666 с. | |
| F2FS | user | 1,77 | 1,78 | 1,79 | 1,78 с. |
| sys | 0,92 | 0,93 | 0,91 | 0,92 с. | |
| user+sys | 2,69 | 2,71 | 2,7 | 2,7 с. | |
На основе полученных результатов построим графики, которые наглядно проиллюстрируют разницу в быстродействии шифрования на уровне каталогов между файловыми системами Ext4 и F2FS. Они показаны на рисунках 4, 5 и 6. Чем ниже график, тем быстрее была завершена программа шифрования fscrypt.
По результатам экспериментов можно сделать следующие выводы. В операциях шифрования данных на уровне каталогов файловая система F2FS для запоминающих устройств на флэш-памяти оказалась действительно несколько быстрее файловой системы Ext4. Однако, в целом эта разница очень незначительна. Она будет практически неощутима при использовании файловой системы на быстродействующих твердотельных накопителях.
Исходя из этого, при проектировании систем общего назначения на базе операционных систем семейства Unix/Linux все-таки стоит отдавать предпочтение классической файловой системе Ext4, поскольку она используется и совершенствуется значительно дольше, чем новая файловая система F2FS. С другой стороны, при проектировании систем с особыми требованиями к быстродействию (например, систем реального времени), следует отдать предпочтение файловой системе F2FS.