• FS_DIRSYNC_FL (с версии Linux 2.6) — сделать синхронным обновление каталогов (то есть open(pathname, O_CREAT), link(), unlink() и mkdir()). Эта функция аналогична механизму синхронного обновления файлов, описанному в разделе 13.3. Синхронное обновление каталогов точно так же отражается на производительности. Данный параметр можно применять только для каталогов. (Флаг монтирования MS_DIRSYNC, описанный в подразделе 14.8.1, обеспечивает подобную возможность, но по отношению к монтированию.)

• FS_IMMUTABLE_FL — сделать файл неизменяемым. Данные файла нельзя обновить (write() и truncate()), а изменения метаданных не допускаются (то есть chmod(), chown(), unlink(), link(), rename(), rmdir(), utime(), setxattr() и removexattr()). Установить данный флаг для файла могут только привилегированные процессы (CAP_LINUX_IMMUTABLE). Когда он установлен, даже привилегированный процесс не может изменить содержимое файла или его метаданные.

• FS_JOURNAL_DATA_FL — задействовать журналирование данных. Этот флаг поддерживается только в файловых системах ext3 и ext4. Они обеспечивают три уровня журналирования: журнальное, упорядоченное и с обратной записью. Все режимы заносят в журнал обновления метаданных файла, однако в журнальном дополнительно фиксируются обновления данных файла. В файловой системе, использующей журналирование в упорядоченном режиме или с обратной записью, привилегированный (CAP_SYS_RESOURCE) процесс может задействовать пофайловое журналирование обновлений данных с помощью установки этого флага. (Страница mount(8) руководства описывает различие между упорядоченным режимом и обратной записью.)

• FS_NOATIME_FL — не обновлять время последнего доступа к файлу при доступе к нему. Это позволяет избежать обновления индексного дескриптора файла при каждом доступе к файлу и таким образом повышает эффективность ввода-вывода (см. описание флага MS_NOATIME в подразделе 14.8.1).

• FS_NODUMP_FL — не включать данный файл в резервные копии, создаваемые с помощью команды dump(8). Действие этого флага зависит от параметра — h, описанного на странице dump(8) руководства.

• FS_NOTAIL_FL — отключить упаковку хвостов. Этот флаг поддерживается только в файловой системе Reiserfs. Он отключает функцию, которая пытается упаковать небольшие файлы (и завершающие фрагменты больших файлов) в тот же дисковый блок, что и метаданные файла. Упаковку хвостов можно отключить и для файловой системы Reiserfs в целом, смонтировав ее с параметром mount — notail.

• FS_SECRM_FL — удалить файл «бесследно». Назначение данной нереализованной функции заключается в надежном удалении файла при его стирании; то есть сначала файл затирается другими данными, чтобы не позволить программе сканирования диска считать его или восстановить. (Задача по-настоящему надежного удаления файлов является довольно сложной: фактически может потребоваться многократная запись на магнитный носитель для надежного стирания записанных ранее данных; см. работу [Gutmann, 1996].)

• FS_SYNC_FL — сделать обновления файла синхронными. Применительно к файлам данный флаг обеспечивает синхронность операций записи в файл (как если бы был указан флаг O_SYNC для всех открытий данного файла). Применительно к каталогу обладает тем же действием, что и описанный выше флаг синхронных обновлений каталога.

• FS_TOPDIR_FL (с версии Linux 2.6) — помечает каталог для специальной обработки согласно стратегии Орлова для выделения блоков. Данная стратегия была создана под влиянием системы BSD. Она является видоизменением стратегии выделения блоков в файловой системе ext2, которая старается повысить шансы на то, чтобы взаимосвязанные файлы (например, расположенные внутри какого-либо каталога) были размещены на диске рядом друг с другом, что может уменьшить время поиска на диске. Подробности см. в работах [Corbet, 2002] и [Kumar et al., 2008]. Флаг FS_TOPDIR_FL работает только в файловой системе ext2 и ее потомках, ext3 и ext4.

• FS_UNRM_FL — допустить восстановление данного файла после его удаления. Эта функция не реализована, поскольку есть возможность реализовать механизмы восстановления файлов вне ядра.

В целом, если флаги индексного дескриптора установлены для каталога, их автоматически наследуют новые файлы и подкаталоги, создаваемые внутри данного каталога. Из этого правила есть исключения:

• флаг FS_DIRSYNC_FL (chattr +D), который можно применять только для каталога, наследуется только подкаталогами, создаваемыми в данном каталоге;

• когда флаг FS_IMMUTABLE_FL (chattr +i) устанавливается для каталога, он не наследуется файлами и каталогами, созданными внутри этого каталога, поскольку данный флаг не допускает добавления новых записей в каталоге.

Перейти на страницу:

Похожие книги