Interested Article - Unix File System

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, так что некоторая степень совместимости на разных платформах остается. Совместимость между реализациями неполная, в лучшем случае, и должна быть исследована перед использованием на нескольких платформах.

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

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

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

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

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

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

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

Примечания

  1. . Дата обращения: 15 марта 2009. 2 декабря 2008 года.
  2. . Дата обращения: 15 марта 2009. 14 февраля 2009 года.
  3. . Дата обращения: 1 мая 2016. 2 июня 2016 года.
  4. . Дата обращения: 11 января 2012. Архивировано из 29 октября 2010 года.

Ссылки

  • Jeroen C. van Gelderen. (англ.) . freebsd.org (23 апреля 2003). Дата обращения: 29 ноября 2010. 14 февраля 2012 года.
  • от 1 июня 2016 на Wayback Machine (рус.)
  • Martin Hinner. (англ.) . . Дата обращения: 29 ноября 2010. 14 февраля 2012 года.
  • (англ.) . — ufs2tools содержит утилиты для чтения файловых систем UFS1 и UFS2 из ОС Windows 2000/XP. Дата обращения: 29 ноября 2010. 14 февраля 2012 года.
  • (англ.) . The FreeBSD Project . Дата обращения: 29 ноября 2010. 14 февраля 2012 года.
  • от 2 июня 2016 на Wayback Machine
Источник —

Same as Unix File System