Unix File System

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск
UFS
Создатель

CSRG

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

UNIX file system

Дата представления

{{{introduction_date}}} (4.2BSD)

Метка тома

{{{partition_id}}}

Структура
Содержимое папок

таблица

Размещение файлов

{{{file_struct}}}

Сбойные сектора

{{{bad_blocks_struct}}}

Ограничения
Максимальный размер файла

2^73 байт
(8 ZiB)

Максимум файлов

{{{max_files_no}}}

Максимальная длина имени файла

255 байт

Максимальный размер тома

2^73 байт
(8 ZiB)

Допустимые символы в названиях

{{{filename_character_set}}}

Возможности
Свойства

{{{dates_recorded}}}

Диапазон дат

{{{date_range}}}

Точность хранения даты

{{{date_resolution}}}

Многопоточность

{{{forks_streams}}}

Атрибуты

{{{attributes}}}

Права доступа

{{{file_system_permissions}}}

Фоновая компрессия

{{{compression}}}

Фоновое шифрование

{{{encryption}}}

Поддерживается ОС

FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, A/UX и другие

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

Поддержка данной файловой системы имеется также в ядре Linux и операционной системе Solaris.

Содержание

[править] Геометрия

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

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

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

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

[править] История и развитие

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

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

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

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

С увеличением размера блока, диски с большим количеством маленьких файлов будут занимать много места, поэтому BSD добавил уровень фрагментации.

[править] Применение

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

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

После 4.4BSD и BSD Unix системы разделились. Появились такие системы, как FreeBSD, NetBSD, OpenBSD и DragonFlyBSD. Возникают UFS1 и UFS2, которые представляют собой два слоя - верхний слой, который обеспечивает структуру каталогов и поддерживает метаданные (разрешения, права доступа и т.д.) в индексном дескрипторе структуры, и нижних слоев, которые позволяет представлять контейнерные данные как индексные дескрипторы. Это было сделано для поддержки как традиционныой FFS, так и LFS. Верхний слой называется "UFS", и нижние слои называются "FFS" и "LFS".

Kirk McKusick построил FreeBSD на FFS и UFS, чтобы поддержать новый вариант, называемый UFS2, который добавляет 64-битный блок указателей (позволяя увеличить объем до 8 Зеттабайт), с переменным размером блока (по аналогии с 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 провайдера.

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

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

[править] Ссылки