Jump to content

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

(Перенаправлено из Superblock (файловая система) )
УФС
Разработчик(и) CSRG
Полное имя Файловая система UNIX
Представлено с 4.2BSD
Структуры
Содержимое каталога столы
Пределы
Максимальный размер тома 2 73 байт (8 ЗиБ )
Максимальный размер файла 2 73 байт (8 ЗиБ )
Максимальная длина имени файла 255 байт
Функции
Даты записи UFS1 и UFS2: время последнего доступа (atime), время последнего изменения (mtime), время последней смены индексного дескриптора (ctime), UFS2: время создания индексного дескриптора (время рождения). [1]
Диапазон дат UFS1: 14 декабря 1901 г. – 18 января 2038 г., UFS2: 64-битное целое число со знаком, смещение от эпохи. [1]
Разрешение даты UFS1 и UFS2: наносекунда [1]
Другой
Поддерживается
операционные системы
A/UX , DragonFly BSD , FreeBSD , FreeNAS , NAS4Free , HP-UX , NetBSD , NeXTSTEP , Linux , OpenBSD , illumos , Solaris , SunOS , Tru64 UNIX , UNIX System V , Orbis OS и другие.

( Файловая система Unix UFS ) — это семейство файловых систем, поддерживаемых многими Unix и Unix-подобными операционными системами. Это дальний потомок исходной файловой системы, используемой в Unix версии 7 .

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

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

Индексные дескрипторы нумеруются последовательно, начиная с 0. Индексный дескриптор 0 зарезервирован для нераспределенных записей каталога, индексный дескриптор 1 был индексным дескриптором файла сбойного блока в исторических версиях UNIX, за которым следует индексный дескриптор корневого каталога , который всегда является индексным дескриптором 2, и индексный дескриптор для каталога loss+found, который имеет индексный дескриптор 3.

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

История и эволюция

[ редактировать ]

Ранние файловые системы Unix назывались просто FS . FS включала только загрузочный блок, суперблок, группу индексных дескрипторов и блоки данных. Это хорошо работало для небольших дисков, для которых были разработаны ранние Unix-системы, но по мере развития технологий и увеличения размеров дисков перемещение головки взад и вперед между скоплением индексных дескрипторов и блоками данных, на которые они ссылались, приводило к сбоям . Маршалл Кирк МакКьюсик , тогда аспирант Беркли , оптимизировал структуру V7 FS для создания FFS (быстрой файловой системы) BSD 4.2 , придумав группы цилиндров, которые разбивают диск на более мелкие фрагменты, причем каждая группа имеет свои собственные индексные дескрипторы и данные. блоки. [2] [3]

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

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

По мере того, как диски становились все больше и больше, оптимизация на уровне секторов устарела (особенно для дисков, которые использовали линейную нумерацию секторов и переменные сектора на дорожку). При использовании дисков большего размера и файлов фрагментированное чтение становилось все более серьезной проблемой. Чтобы бороться с этим, BSD изначально увеличила размер блока файловой системы с одного сектора до 1 КБ в версии 4.0 BSD; а в FFS размер блока файловой системы увеличен с 1 КБ до 8 КБ. Это имеет несколько последствий. Вероятность того, что сектора файла будут смежными, намного выше. Объем служебных данных для перечисления блоков файла уменьшается, а количество байтов, представленных любым заданным количеством блоков, увеличивается.

Также возможны диски большего размера, поскольку максимальное количество блоков ограничено номером блока с фиксированной разрядностью. Однако при больших размерах блоков диски с множеством мелких файлов будут тратить пространство впустую, поскольку каждый файл должен занимать хотя бы один блок. Из-за этого в BSD добавлена ​​фрагментация на уровне блоков , также называемая субраспределением блоков, слиянием хвостов или упаковкой хвостов , при которой последний частичный блок данных из нескольких файлов может храниться в одном «фрагментном» блоке вместо нескольких в основном пустых блоков. [4]

Работа над Berkeley FFS была широко принята другими поставщиками Unix, а семейство файловых систем, производных от нее, известно под общим названием UFS.

Реализации

[ редактировать ]

Поставщики некоторых проприетарных систем Unix, таких как SunOS / Solaris , System V Release 4 , HP-UX и Tru64 UNIX , а также открытых производных систем Unix, таких как illumos , приняли UFS. Большинство из них адаптировали UFS для своих нужд, добавив собственные расширения, которые могут не распознаваться версиями Unix других производителей. Много [ который? ] продолжают использовать исходный размер блока и ширину полей данных, как и исходный UFS, поэтому некоторая степень совместимости чтения сохраняется на разных платформах. [ который? ] [ нужна ссылка ] [ по мнению кого? ] Совместимость между реализациями в целом в лучшем случае неоднородна. [ по мнению кого? ]

Начиная с Solaris 7 , Sun Microsystems включила функцию ведения журнала UFS, которая привнесла журналирование файловой системы в UFS, которое все еще доступно в текущих версиях Solaris и Illumos. [5] Solaris UFS также имеет расширения для больших файлов и больших дисков, а также другие функции.

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

Кирк МакКьюсик реализовал перераспределение блоков — метод, который меняет порядок блоков в файловой системе непосредственно перед завершением записи, чтобы уменьшить фрагментацию и контролировать старение файловой системы. Он также реализовал мягкие обновления — механизм, который поддерживает согласованность файловой системы без ограничения производительности, как это делал традиционный режим синхронизации. Побочным эффектом этого является уменьшение необходимости проверки файловой системы после сбоя или сбоя питания. Чтобы преодолеть оставшиеся проблемы после сбоя, была введена фоновая утилита fsck.

В UFS2 Кирк МакКьюсик и Пол-Хеннинг Камп расширили уровни FreeBSD FFS и UFS, добавив 64-битные указатели блоков (позволяющие томам расти до 8 зебибайт ), блоки переменного размера (аналогично экстентам ), расширенные поля флагов, дополнительные Штампы «времени рождения», расширенная поддержка атрибутов и списки управления доступом POSIX1.e. UFS2 стала поддерживаемой версией UFS, начиная с FreeBSD 5.0. FreeBSD также представила программные обновления и возможность создавать снимки файловой системы как для UFS1, так и для UFS2. С тех пор они были перенесены в NetBSD, но в конечном итоге мягкие обновления (называемые мягкими зависимостями в NetBSD) были удалены из NetBSD 6.0 в пользу менее сложного механизма журналирования файловой системы, называемого WAPBL (также называемого журналированием), который был добавлен в FFS в NetBSD. 5.0. OpenBSD поддерживает программные обновления начиная с версии 2.9. [6] и имеет поддержку UFS2 (FFS2) (без ACL) начиная с версии 4.2. [7] OpenBSD теперь сделала UFS2 версией UFS по умолчанию и будет включена в выпуск 6.7. [8] Начиная с FreeBSD 7.0, UFS также поддерживает ведение журнала файловой системы с помощью поставщика gjournal GEOM . Во FreeBSD 9.0 добавлена ​​поддержка облегченного журналирования поверх программных обновлений (SU+J), что значительно снижает потребность в фоновом fsck и списках управления доступом NFSv4.

FreeBSD, NetBSD, OpenBSD и DragonFly BSD также включают систему Dirhash , разработанную Яном Доузом. Эта система поддерживает хеш-таблицу в памяти для ускорения поиска в каталогах. Dirhash устраняет ряд проблем с производительностью, связанных с большими каталогами в UFS.

Linux включает реализацию UFS для двоичной совместимости на уровне чтения с другими Unix, но поскольку не существует стандартной реализации расширений UFS, Linux не имеет полной поддержки записи в UFS. Собственная файловая система Linux ext2 была создана на основе UFS1, но не поддерживает фрагменты, и реализация мягких обновлений не планируется. [ нужна ссылка ] (В некоторых системах, производных от 4.4BSD, уровень UFS может использовать уровень ext2 в качестве уровня контейнера, так же, как он может использовать FFS и LFS.)

NeXTStep , основанный на BSD, также использовал версию UFS. В Apple от Mac OS X она была доступна как альтернатива HFS+ , их собственной файловой системе. Однако, начиная с Mac OS X Leopard , больше невозможно было установить Mac OS X на том в формате UFS. Кроме того, невозможно обновить более старые версии Mac OS X, установленные на томах в формате UFS, до Leopard; обновление требует переформатирования загрузочного тома. [9] Для дисков, отформатированных как UFS, в Mac OS X существовало ограничение на размер файлов в 4 ГБ. Начиная с Mac OS X Lion , поддержка UFS была полностью прекращена. [10]

См. также

[ редактировать ]
  1. ^ Jump up to: а б с «[база] Содержимое /Head/Sys/Ufs/Ufs/Dinode.h» .
  2. ^ «Открытые исходные коды: голоса революции открытого исходного кода» . 29 марта 1999 г.
  3. ^ МакКьюсик, КМ; Джой, Вт; Леффлер, С; Фабри, Р. (август 1984 г.). «Быстрая файловая система для UNIX» (PDF) . Транзакции ACM в компьютерных системах . 2 (3): 181–197. дои : 10.1145/989.990 . S2CID   222285164 . Проверено 08 апреля 2013 г.
  4. ^ Аллен, Херви (20 июня 2005 г.). «UFS2 и программные обновления представляют собой мощную комбинацию» (PDF) . Введение во FreeBSD, Семинар PacNOG I, Дополнительные темы . Ресурсный центр сетевого запуска. п. 23 . Проверено 08 апреля 2013 г.
  5. ^ «Журналирование UFS» . Документация Oracle . Проверено 27 сентября 2022 г.
  6. ^ «Выпуск OpenBSD 2.9» . OpenBSD . 01.06.2001 . Проверено 08 апреля 2013 г.
  7. ^ «Выпуск OpenBSD 4.2» . OpenBSD. 01.11.2007 . Проверено 08 апреля 2013 г.
  8. ^ «Сделать FFS2 файловой системой по умолчанию» . OpenBSD. 05.04.2020 . Проверено 7 апреля 2020 г.
  9. ^ «В архиве — Mac OS X 10.5 Leopard: установка на том в формате UFS» . Apple, Inc. 12 июня 2012 г. Проверено 08 апреля 2013 г.
  10. ^ «Lion не будет монтировать образы дисков с помощью встроенной или Дисковой утилиты» . Сообщества поддержки Apple . Apple, Inc. 05.08.2011 . Проверено 24 декабря 2013 г.

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 94136fec92ad4414bb1c831b6d727040__1700428260
URL1:https://arc.ask3.ru/arc/aa/94/40/94136fec92ad4414bb1c831b6d727040.html
Заголовок, (Title) документа по адресу, URL1:
Unix File System - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)