Unix File System

Материал из Википедии — свободной энциклопедии
UFS
Разработчик CSRG
Файловая система UNIX file system
Дата представления (4.2BSD)
Структура
Содержимое папок таблица
Ограничения
Максимальный размер файла 273 байт
(8
Збайт
)
Максимальная длина имени файла 255 байт
Максимальный размер тома 273 байт
(8
Збайт
)
Возможности
Поддерживается ОС
DragonFlyBSD, A/UX
и другие

Unix File System (UFS)файловая система, созданная для операционных систем семейства BSD и используемая в переработанном и дополненном виде на данный момент как основная в операционных системах-потомках (FreeBSD, OpenBSD, NetBSD).

Поддержка данной файловой системы имеется также в

ядре Linux и операционной системе Solaris
.

Дизайн

Физически UFS состоит из следующих частей:

  • несколько блоков в начале раздела отводится под загрузочную область (которая должна инициализироваться отдельно от файловой системы)
  • суперблок, включающий магическое число, идентифицирующее файловую систему, и некоторые другие важные числа, описывающие геометрию и настройку некоторых параметров файловой системы
  • описание групп цилиндров. Каждая группа включает следующие компоненты:
    • Резервную копию суперблока
    • Заголовок группы цилиндров, статистические данные и т. д., информацию, аналогичную содержащейся в суперблоке, но для конкретной группы
    • Некоторое количество
      индексных дескрипторов
      , каждый из которых содержит атрибуты файлов
    • Некоторое количество блоков данных

Индексные дескрипторы нумеруются последовательно. Несколько первых индексных дескрипторов сохранено по историческим причинам, далее следуют индексные дескрипторы

корневого каталога
.

Каталог файлов содержит только список файлов и индексный дескриптор, связанный с каждым файлом. Все метаданные файла хранятся в индексном дескрипторе.

История и развитие

Ранние версии Unix использовали файловую систему, называвшуюся просто «FS». FS включала в себя только загрузочные блоки, суперблок, множество индексных дескрипторов и блоки данных. Это хорошо работало на дисках небольшого размера, которые производились во времена ранних Unix. Но технологии развивались, диски становились больше, индексных дескрипторов и блоков данных становилось слишком много. Тогда FS был оптимизирован и перерос в FFS (Fast File System), в котором появились группы цилиндров, каждая из которых обладала собственным индексным дескриптором и позволяла избегать получающейся «свалки».

Цель FFS заключается в том, чтобы попытаться локализовать связь блоков данных и метаданных в одной и той же группе цилиндров, а в идеале, всё содержимое каталога (как данных, так и метаданных для всех файлов), в той же группе, таким образом, уменьшив фрагментацию, вызванную рассеянием содержимого каталогов диска.

Некоторые из этих характеристик в суперблоке включали количество дорожек и секторов, скорость вращения диска, скорость головки. В полностью оптимизированной системе головка может быть перемещена между соседними дорожками для чтения разбросанных секторов из чередующихся слоях дорожек.

С увеличением размеров дисков уровень оптимизации стал не столь эффективен (в частности, с дисками, которые используют линейные сектора нумерации и переменных секторов на дорожке). С увеличением дисков и файлов чтение фрагментированых кусков стало сложнее. Чтобы бороться с этим, BSD первоначально увеличил размер блока файловой системы от одного сектора до 1 КБ в 4.0BSD, и, в FFS до 8 КБ. Число блоков, представимых с фиксированной (битной) шириной блока, увеличили (разрешение для больших дисков). С увеличением размера блока диски с большим количеством маленьких файлов будут занимать много места. Для решения проблемы неэффективного использования свободного пространства в слой FFS файловой системы UFS2 был добавлен уровень фрагментов, представляющих собой способ адресации отдельных частей блока данных — фрагментов.

В связи с постоянно увеличивающимися объёмами дисковых накопителей и переводу адресации дискового пространства на Advanced Format во FreeBSD размер блока файловой системы, принятый по умолчанию, увеличен с 16 КБ до 32 КБ, а размер фрагмента — с 2 КБ до 4 КБ. Эта оптимизация повысила производительность дисковых операций ввода-вывода на дисковых накопителях с ёмкостью порядка 1 ТБ с размером сектора 4 КБ. Максимально возможный размер блока на файловой системе UFS2/FFS составляет 64 КБ.

Применение

Пользователи некоторых коммерческих Unix систем, таких как Solaris, HP-UX и Tru64 UNIX, приняли UFS. Большинство из них перевело системы на UFS, добавило проприетарные дополнения, из-за которых пользователи других версий UNIX могли не распознать UFS. Удивительно, но многие из них продолжают использовать оригинальный размер блока данных и ширину блока, как и в оригинальной UFS, так что некоторая степень совместимости на разных платформах остается. Совместимость между реализациями неполная, в лучшем случае, и должна быть исследована перед использованием на нескольких платформах.

В Solaris 7 Sun Microsystems включили UFS Logging, которое принесло журналируемость файловой системы в UFS. Solaris UFS также включало дополнения для файлов и дисков больших размеров. Начиная с Solaris 10 пользователю предоставляется выбрать при установке UFS или ZFS (усовершенствованную файловую систему от Sun). В OpenSolaris UFS полностью заменена на ZFS.

После 4.4BSD и

DragonFlyBSD. Возникают UFS1 и UFS2, которые представляют собой три слоя — верхний слой, который обеспечивает структуру каталогов и поддерживает метаданные (разрешения, права доступа и т. д.) в индексном дескрипторе структуры, и 2 нижних слоя, которые позволяют представлять контейнерные данные, такие, как индексные дескрипторы. Это было сделано для поддержки как традиционной FFS, так и LFS
. Верхний слой называется «UFS», а нижние слои называются «FFS» и «LFS».

EFS), расширенные поля флага, расширенный атрибут поддержки и POSIX1.e ACLм. UFS2 стал по умолчанию зваться UFS начиная с FreeBSD 5.0. FreeBSD также внес некоторые дополнения (Soft Updates) и возможность создать файловую систему из UFS1 и UFS2. Soft updates были перенесены на NetBSD, но будут удалены из NetBSD 6.0 в пользу менее сложной файловой системы журнального механизма (WAPBL), которая была добавлена для FFS в NetBSD 5.0. OpenBSD поддержала Soft updates в версии 2.9[1] и UFS2 начиная с версии 4.2[2]. Начиная с FreeBSD 7.0 UFS также поддерживает журналируемую файловую систему, используя gjournal GEOM провайдера. В FreeBSD 9.0 добавлена поддержка журналирования поверх softupdates(SU+J)[3]
, которая в значительной степени снижает потребность в фоновых проверках файловой системы и использует по умолчанию ACL в NFS-стиле.

Linux поддерживает UFS на уровне чтения, но не имеет полной поддержки для записи UFS. Родной Linux ext2 создан по подобию UFS (в некоторых 4.4BSD-системах UFS-слой может использовать ext2-слой как контейнер, так же, как он может использовать FFS и LFS).

Mac OS X UFS доступна как альтернатива HFS+. Однако, как и в Mac OS X v10.5
, нельзя установить Mac OS X «Leopard» на UFS-форматированный раздел. Кроме того, нельзя обновить старые версии Mac OS X, установленые на UFS, на Leopard; модернизация требует переформатирования раздела.

Игровая консоль PlayStation 3 использует UFS2 на своём HDD. В PlayStation 2 используется UFS.[4]

Для доступа к файловой системе UFS из семейства операционных систем Windows можно использовать программу R.saver.

Примечания

  1. OpenBSD 2.9 Release. Дата обращения: 15 марта 2009. Архивировано 2 декабря 2008 года.
  2. OpenBSD 4.2 Release. Дата обращения: 15 марта 2009. Архивировано 14 февраля 2009 года.
  3. Патчи для поддержки журналирования в UFS добавлены во FreeBSD-CURRENT. Дата обращения: 1 мая 2016. Архивировано 2 июня 2016 года.
  4. Netkas starts playing with JB PS3s. Дата обращения: 11 января 2012. Архивировано из оригинала 29 октября 2010 года.

Ссылки