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




Скачать 338.5 Kb.
Дата 25.08.2016
Размер 338.5 Kb.

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




Фа́йловая систе́ма (англ. file system) — регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла, максимальный возможный размер файла, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.

Файловая система связывает носитель информации, с одной стороны, и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте или блоке флеш-памяти) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

С точки зрения операционной системы, весь диск представляет из себя набор кластеров размером от 512 байт и выше. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

Однако файловая система не обязательно напрямую связана с физическим носителем информации. Существуют виртуальные и сетевые файловые системы, которые являются лишь способом доступа к файлам, находящимся на удалённом компьютере.

В простейшем случае все файлы на данном диске хранятся в одном каталоге. Такая одноуровневая схема использовалась в CP/M и первых версиях MS-DOS. Иерархическая файловая система со вложенными друг в друга каталогами впервые появилась в UNIX.

Wiki.txt


Tornado.jpg

Notepad.exe

(Одноуровневая файловая система)

Каталоги на разных дисках могут образовывать несколько отдельных деревьев, как в DOS/Windows, или же объединяться в одно дерево, общее для всех дисков, как в UNIX-подобных системах.

C:

\Program files



\CDEx

\CDEx.exe

\CDEx.hlp

\mppenc.exe

\Мои документы

\Wiki.txt

\Tornado.jpg

D:

\Music



\ABBA

\1974 Waterloo

\1976 Arrival

\Money, Money, Money.ogg

\1977 The Album

(Иерархическая файловая система Windows/DOS)



На самом деле, в DOS/Windows системах также, как и в UNIX-подобных существует один корневой каталог со вложенными директориями, имеющими названия «c:», «d:» и т. д. В эти каталоги монтируются разделы жёсткого диска. То есть, c:\ — это всего лишь ссылка на file:///c:/. Однако, в отличие от UNIX-подобных файловых систем, в Windows запись в корневой каталог запрещена, как и просмотр его содержимого.

В UNIX существует только один корневой каталог, а все остальные файлы и каталоги вложены в него. Чтобы получить доступ к файлам и каталогам на каком-нибудь диске, необходимо примонтировать этот диск командой mount. Например, чтобы открыть файлы на CD, нужно, говоря простым языком, сказать операционной системе: «возьми файловую систему на этом компакт-диске и покажи её в каталоге /mnt/cdrom». Все файлы и каталоги, находящиеся на CD, появятся в этом каталоге /mnt/cdrom, который называется точкой монтирования (англ. mount point). В большинстве UNIX-подобных систем съёмные диски (дискеты и CD), флеш-накопители и другие внешние устройства хранения данных монтируют в каталог /mnt, /mount или /media. Unix и UNIX-подобные операционные системы также позволяет автоматически монтировать диски при загрузке операционной системы.

/usr

/bin


/arch

/ls


/raw

/lib


/libhistory.so.5.2

/libgpm.so.1

/home

/lost+found



/host.sh

/guest


/Pictures

/example.png

/Video

/matrix.avi



/news

/lost_ship.mpeg

(Иерархическая файловая система Unix и UNIX-подобных операционных системах)

Обратите внимание на использование слешей в файловых системах Windows, UNIX и UNIX-подобных операционных системах (В Windows используется обратный слеш «\», а в UNIX и UNIX-подобных операционных системах простой слеш «/»)

Ещё более сложная структура применяется в NTFS и HFS. В этих файловых системах каждый файл представляет собой набор атрибутов. Атрибутами считаются не только традиционные только для чтения, системный, но и имя файла, размер и даже содержимое. Таким образом, для NTFS и HFS то, что хранится в файле, — это всего лишь один из его атрибутов.



Если следовать этой логике, один файл может содержать несколько вариантов содержимого. Таким образом, в одном файле можно хранить несколько версий одного документа, а также дополнительные данные (значок файла, связанная с файлом программа). Такая организация типична для HFS на Macintosh.

Классификация файловых систем


По предназначению файловые системы можно классифицировать на следующие категории:

  • Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Поскольку доступ к дискам в разы медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах. Reiser4 не применяет журналирование, все операции в ней атомарны.

  • Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.

  • Для оптических носителей — CD и DVD: ISO9660, ISO9690, HFS, UDF и др.

  • Виртуальные файловые системы: AEFS и др.

  • Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.

  • Для флэш-памяти: YAFFS, ExtremeFFS.

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



Задачи файловой системы


Основные функции любой файловой системы нацелены на решение следующих задач:

  • именование файлов;

  • программный интерфейс работы с файлами для приложений;

  • отображения логической модели файловой системы на физическую организацию хранилища данных;

  • устойчивость файловой системы к сбоям питания, ошибкам аппаратных и программных средств;

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

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

Журналируемая файловая система


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

Запуск проверки системы (например, fsck) на больших файловых системах может занять много времени, что очень плохо для сегодняшних высокоскоростных систем. Причиной отсутствия целостности в файловой системе может быть некорректное размонтирование, например, если в момент прекращения работы на диск велась запись. Приложения могли обновлять данные, содержащиеся в файлах, и система могла обновлять метаданные файловой системы, которые являются «данными о данных файловой системы», иными словами, информация о том, какие блоки связаны с какими файлами, какие файлы размещены в каких директориях и тому подобное. Ошибки (отсутствие целостности) в файлах данных — это плохо, но куда хуже ошибки в метаданных файловой системы, что может привести к потерям файлов и другим серьёзным проблемам.

Для минимизации проблем, связанных с целостностью, и минимизации времени перезапуска системы, журналируемая файловая система хранит список изменений, которые она будет проводить с файловой системой, перед фактической записью изменений. Эти записи хранятся в отдельной части файловой системы, называемой «журналом», или «логом». Как только изменения файловой системы безопасно внесены в журнал, журналируемая файловая система применяет эти изменения к файлам или метаданным, а затем удаляет эти записи из журнала. Записи журнала организованы в наборы связанных изменений файловой системы, что очень похоже на то, как изменения добавляемые в базу данных организованы в транзакции.

Наличие журнала повышает вероятность сохранения целостности файловой системы, потому что записи в лог-файл ведутся до проведения фактических изменений, и эти записи хранятся до тех пор, пока они не будут целиком и безопасно применены. При перезагрузке компьютера программа монтирования может гарантировать целостность журналируемой файловой системы простой проверкой лог-файла на наличие ожидаемых, но не произведённых изменений и последующей записью их в файловую систему. Т.о. при наличии журнала в большинстве случаев системе не нужно проводить проверку целостности файловой системы, а это означает, что компьютер будет доступен для работы практически сразу после перезагрузки. Соответственно, шансы потери данных в связи с проблемами в файловой системе значительно снижаются.

Существует несколько журналируемых файловых систем, доступных в Linux. Наиболее известные из них:


  • XFS, журналируемая файловая система разработанная Silicon Graphics, но сейчас выпущенная открытым кодом (open source);

  • ReiserFS, журналируемая файловая система разработанная специально для Linux;

  • JFS, журналируемая файловая система первоначально разработанная IBM, но сейчас выпущенная как открытый код;

  • ext3 — журналируемое расширение файловой системы ext2, используемой на большинстве версий GNU/Linux. Уникальная особенность системы ext3 — возможность перехода на неё с ext2 без переформатирования диска. Разработана доктором Стефаном Твиди (Stephan Tweedie).

  • ext4

В семействе ОС Microsoft Windows к журналируемым относится файловая система NTFS. В Mac OS X — HFS+. В FreeBSD журналирование файловой системы UFS2 осуществляется на уровне GEOM модулем gjournal.

FAT.

FAT (от англ. File Allocation Table — «таблица размещения файлов») — архитектура файловой системы, сейчас широко используемая в картах памяти фотоаппаратов и других устройств.

Разработана Биллом Гейтсом и Марком МакДональдом в 1977 году[1]. Использовалась в качестве основной файловой системы в операционных системах DOS и Microsoft Windows (до версии Windows ME).


Структура системы FAT


Раздел диска, отформатированный в системе FAT, имеет следующую структуру:




Загрузочный
сектор

Информация о ФС
(только в FAT32)

Дополнительные
секторы

Таблица
размещения
файлов #1

Таблица
размещения
файлов #2

Корневой
каталог
(только в FAT12/16)

Область данных (для файлов и каталогов)

Размер (в секторах)

(количество зарезервированных секторов)

(Количество FAT таблиц)*(количество секторов в FAT)

(Количество записей в корне*32)/(количество байт в секторе)

количество кластеров*секторов в кластере

  • загрузочный сектор;

  • таблица размещения файлов — собственно FAT (традиционно в двух экземплярах, но вообще-то количество копий указано в загрузочном секторе);

  • корневой каталог;

  • файлы.

Для хранения файлов всё доступное для них пространство разбивается на кластеры. Таблица размещения файлов содержит ячейки, каждая из которых соответствует определённому кластеру диска. Если кластер принадлежит файлу, то соответствующая ему ячейка содержит номер следующего кластера этого же файла. Если ячейка соответствует последнему кластеру файла, то она содержит значение «FFFF». Таким образом выстраивается цепочка кластеров файла. Неиспользуемые кластеры помечены «0000». «Плохие» кластеры помечены специальным кодом «FFF7».

При удалении файла фактически только делается запись в каталоге, а цепочка кластеров не разрушается и данные не затираются. Это позволяет восстанавливать удалённые файлы, если на их место ещё не было ничего записано.

Максимальный размер кластера, который поддерживается в FAT, составляет 64 Кб. Зная, что максимальное количество кластеров, которое можно адресовать шестнадцатиразрядным указателем равно 65536, можно вычислить какой величины раздел можно отформатировать, применяя тот или иной размер кластера. Если взять размер кластера равным размеру физического кластера (сектора), то получим: 65536 * 512 = 32 Мб. Если взять кластер в 2 раза больше, то можно отформатировать раздел уже до 64 Мб. Ввиду того, что разрядность ФС - величина постоянная, для форматирования дисков различных размеров будут применяться разные размеры кластеров. Например, чтобы отформатировать диск более 1 Гб, нужно применять кластер 16 КБ. Поскольку размер кластера, являющийся максимально допустимым в этой ФС, равен 64 Кб, то можно определить, что максимальный размер раздела, форматируемый под FAT, равен 4 Гб.

Отказоустойчивость системы


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

Версии системы FAT


Существует четыре версии FAT — FAT12, FAT16, FAT32 и exFAT. Они отличаются количеством бит, отведённых для хранения номера кластера. FAT12 применяется в основном для дискет, FAT16 — для дисков малого объёма, а новая exFAT преимущественно для флэш-накопителей.

Изначально FAT не поддерживала иерархическую систему каталогов. Все файлы располагались в корневом каталоге. Это оказалось неудобно. И к тому же малый размер корневого каталога ограничивал количество файлов на диске файлов. Каталоги были введены с выходом MS-DOS 2.0.

В различных операционных системах также были внедрены различные расширения FAT. Например, в DR-DOS имеются дополнительные атрибуты доступа к файлам; в Windows 95, Linux и Proolix — поддержка длинных имён файлов (LFN) в формате Unicode (VFAT); в OS/2 — расширенные атрибуты всех файлов.

FAT32


FAT32 (от англ. File Allocation Table — «таблица размещения файлов») — это файловая система, разработанная компанией Майкрософт, разновидность FAT.

FAT32 — последняя версия файловой системы FAT и улучшение предыдущей версии, известной как FAT16. Она была создана, чтобы преодолеть ограничения на размер тома в FAT16, позволяя при этом использовать старый код программ MS-DOS и сохранив формат. FAT32 использует 32-разрядную адресацию кластеров. FAT32 появилась вместе с Windows 95 OSR2.

Максимально возможное число кластеров в FAT32 равно 268 435 445 кластеров, что позволяет использовать жёсткие диски объёмом до 8 ТБ. Средство ScanDisk, входящее в состав Microsoft Windows 95 и Microsoft Windows 98, это 16-разрядная программа. Для таких программ максимальный размер кластера отдельного фрагмента памяти составляет 16 МБ минус 64 КБ. Следовательно, средство ScanDisk в Windows 95 или Windows 98 не может работать с томами FAT32, у которых размер таблицы FAT превышает 16 МБ минус 64 КБ. Запись в таблице FAT на томе с файловой системой FAT32 имеет размер 4 байта, поэтому средство ScanDisk не может работать с таблицей FAT на диске FAT32, описывающей более 4 177 920 кластеров (включая два резервных). С учётом самих таблиц FAT и при максимальном размере кластера 32 КБ размер тома может быть до 127,53 ГБ.

NTFS


NTFS (от англ. New Technology File System — «файловая система новой технологии») — стандартная файловая система для семейства операционных систем Microsoft Windows NT.

NTFS заменила использовавшуюся в MS-DOS и Microsoft Windows файловую систему FAT. NTFS поддерживает систему метаданных и использует специализированные структуры данных для хранения информации о файлах для улучшения производительности, надёжности и эффективности использования дискового пространства. NTFS хранит информацию о файлах в Master File Table (MFT). NTFS имеет встроенные возможности разграничивать доступ к данным для различных пользователей и групп пользователей (списки контроля доступа — ACL), а также назначать квоты (ограничения на максимальный объём дискового пространства, занимаемый теми или иными пользователями). NTFS использует систему журналирования для повышения надёжности файловой системы.

NTFS разработана на основе файловой системы HPFS (от англ. High Performance File System — высокопроизводительная файловая система), создававшейся Microsoft совместно с IBM для операционной системы OS/2. Но, получив такие несомненно полезные новшества как квотирование, журналируемость, разграничение доступа и аудит, в значительной степени утратила присущую прародительнице (HPFS) весьма высокую производительность файловых операций.

Различают несколько версий NTFS: v1.2 используется в Windows NT 3.51 и Windows NT 4.0, v3.0 поставляется с Windows 2000, v3.1 — с Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008.



Спецификации файловой системы являются закрытыми. Это создаёт определённые трудности при реализации её поддержки в сторонних продуктах, не принадлежащих Microsoft — в частности, разработчикам драйверов для свободных операционных систем приходится заниматься реверс-инжинирингом системы.

Поддержка операционными системами


В данный момент полноценная поддержка NTFS присутствует только в ОС Microsoft семейства Windows NT. Для других систем в данный момент существуют следующие средства доступа к NTFS-разделам:

MS-DOS


  • Драйвер NTFSDOS Марка Руссиновича (Mark Russinovich) — поддержка чтения, а в версии Professional и записи на NTFS-разделы (с июля 2006 права на утилиты Марка Руссиновича принадлежат Microsoft; на сайте компании информации об этом продукте нет, но его без труда можно найти в Сети).

Windows 9x


  • Драйвер NTFS for Windows 98 того же Марка Руссиновича. Поддерживает чтение с разделов, но для записи можно использовать DOS’овский драйвер. На сайте Microsoft также отсутствует информация об этом драйвере, но его легко можно отыскать на сторонних сайтах.

  • Драйвер Paragon Software Group NTFS for Windows 98. В настоящий момент поддерживающая как чтение, так и запись версия бесплатна для некоммерческого использования.

GNU/Linux


  • Проект Linux-NTFS. Включает модуль ядра, а также набор утилит для различных операций с файловыми системами NTFS (проверка целостности, восстановление удалённых файлов, изменение размера и др.). Именно этот драйвер включается в ядро Linux ещё с версии 2.2 (с тех пор он был практически полностью переписан). Модулем ядра поддерживается практически только чтение (запись — лишь в существующие файлы без изменения их размера), но недавно в рамках проекта появилась утилита ntfsmount, использующая FUSE и позволяющая монтировать NTFS-разделы на запись с некоторыми ограничениями. Это первый полностью свободный продукт, имеющий такую возможность.

  • Проект NTFS-3G. Возник как ответвление от предыдущего проекта, отличается более полной поддержкой записи на NTFS-разделы. Объявлен стабильным (выпущена версия 1.0) 21 февраля 2007 года. Обеспечивает высокий уровень надежности и производительности. В настоящее время проект активно развивается.

  • Проект Captive NTFS. Создавался как «обёртка» для использования оригинального драйвера Windows NT в ОС GNU/Linux. Имеется возможность записи, однако драйвер работает крайне медленно и имеет некоторые технические ограничения. На официальном сайте проекта помещено объявление, что он более не развивается.

  • Драйвер Paragon NTFS for Linux. Поддерживается чтение и запись, также имеется ряд утилит для создания и некоторых операций с NTFS-разделами. Доступен бесплатно для домашних пользователей.

Mac OS X


С форматом NTFS Mac OS X работает в режиме чтения. Запись поддерживается с использованием драйверов:

  • Paragon NTFS для Mac OS X

  • NTFS-3G для Mac OS X

  • MacFUSE 2.0

Сравнительная таблица файловых систем FAT и NTFS


Ограничения

NTFS

FAT16 и FAT 32

Размеры тома

Минимальный размер тома составляет 1,44МБ

FAT поддерживает различные размеры томов — от объема дискет и до 2 ГБ.




На практике рекомендуется создавать тома, размеры которых не превышают 2 ТБ.

FAT32 поддерживает тома объемом от 2 ГБ до 2 ТБ. Работая под управлением Windows XP для FAT32 можно отформатировать тома, размер которых не превышает 32 ГБ.




Windows не позволяет форматировать дискеты в NTFS (ntfsflp от Mark Russinovich позволяет).

В FAT32 не поддерживаются диски, размеры которых меньше 512 МБ.




NTFS поддерживает жёсткие(Hardlinks) и символьные ссылки, Junctions, Volume Mount Point.

FAT не поддерживает ссылки.

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

Теоретически — 264 байт минус 1 килобайт
Практически — 244 байт минус 64 килобайт

FAT16 поддерживает файлы размером не более 2 ГБ.
FAT32 поддерживает файлы размером не более 4 ГБ.


ext2

ext2 или 2я расширенная файловая система файловая система для ядра Linux. Она была разработана Rémy Card'ом в качестве замены для extended file system. Она достаточно быстра для того, чтобы служить эталоном в тестах производительности файловых систем. Она не является журналируемой файловой системой и это её главный недостаток. Развитием ext2 стала журналируемая файловая система ext3, полностью совместимая с ext2.

История


На заре развития Linux использовала файловую систему ОС Minix. Эта файловая система была довольно стабильна, но была 16-разрядной и как следствие имела жёсткое ограничение в 64 Мегабайта на раздел. Также присутствовало ограничение имени файла: оно составляло 14 символов. Эти и не только ограничения повлекли появление в апреле 1992 года «расширенной файловой системы» (extended file system), решавшей 2 главные проблемы Minix. Новая файловая система расширила ограничения на размер файла до 2 терабайт и установила предельную длину имени файла в 255 символов. Но она всё равно имела проблемы: не было поддержки раздельного доступа, временных меток модификации данных.

Решением всех проблем стала новая файловая система, разработанная в январе 1993 года. В ext2 были сразу реализованы соответствующие стандарту POSIX списки контроля доступа ACL и расширенные атрибуты файлов.


*** POSIX® (англ. Portable Operating System Interface for Unix — Переносимый интерфейс операционных систем Unix) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой. Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем

Логическая организация файловой системы ext2


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



Сетевая иерархия каталогов файловой системы ext2

Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен — файлов: простые, составные и относительные. Не является исключением и «вторая расширенная файловая система». Ограничения на простое имя состоят в том что, его длина не должна превышать 255 символов, а также в имени не должны присутствовать символ NUL и ‘/’. Ограничения на символ NUL связаны с представлением строк на языке Си, а на символ ‘/’ с тем, что он используются как разделительный символ между каталогами. Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла. В файловой системе ext2 файл может входить в несколько каталогов, а значит, иметь несколько полных имен; здесь справедливо соответствие «один файл — много полных имен». В любом случае полное имя однозначно определяет файл.



Атрибутами файловой системы ext2 являются:

  • Тип и права доступа к файлу;

  • Владелец, группа;

  • Информация о разрешённых операциях доступа к файлу;

  • Времена создания, последнего доступа, последнего изменения и время последнего удаления;

  • текущий размер файла;

  • тип файла;

    • обычный файл;

    • каталог;

    • файл байт-ориентированного устройства;

    • файл блочно-ориентированного устройства;

    • Сокет;

    • именованный канал;

    • символическая ссылка;

  • число блоков, занимаемых файлом;

  • ACL

  • другие

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

Структура дискового раздела


Как и в любой файловой системе UNIX, в составе ext2 можно выделить следующие составляющие:

  • блоки и группы блоков;

  • индексный дескриптор;

  • суперблок;

Всё пространство раздела диска разбивается на блоки фиксированного размера, кратные размеру сектора — 1024, 2048 и 4096 байт. Размер блока указывается при создании файловой системы на разделе диска. Меньший размер блока позволяет экономить место на жёстком диске, но также ограничивает максимальный размер файловой системы. Все блоки имеют порядковые номера. С целью уменьшения фрагментации и количества перемещений головок жёсткого диска при чтении больших массивов данных блоки объединяются в группы блоков.

Базовым понятием файловой системы является индексный дескриптор (информационный узел), information node, или inode. Это специальная структура, которая содержит информацию об атрибутах и физическом расположении файла.




Обобщенная структурная схема ФС ext2

Каждая группа блоков имеет одинаковое строение. Суперблок — основной элемент файловой системы ext2. Он содержит общую информацию о файловой системе:



  • общее число блоков и индексных дескрипторов в файловой системе;

  • число свободных блоков и индексных дескрипторов в файловой системе;

  • размер блока файловой системы;

  • количество блоков и индексных дескрипторов в группе;

  • размер индексного дескриптора;

  • идентификатор файловой системы.

От целостности суперблока напрямую зависит работоспособность файловой системы. Операционная система создаёт несколько резервных копий суперблока для возможности его восстановления в случае повреждения. Описание группы блоков, представляет собой массив, содержащий общую информацию обо всех блоках раздела. Битовая карта блоков — это структура, каждый бит которой показывает, отведён ли соответствующий ему блок какому-либо файлу. Если бит равен 1, то блок занят. Аналогичную функцию выполняет битовая карта индексных дескрипторов, показывая какие именно индексные дескрипторы заняты, а какие нет.

Все оставшееся место, обозначенное в таблице, как данные, отводится для хранения файлов.


Система адресации данных





Система адресации ФС ext2

Система адресации данных — это одна из самых существенных составных частей файловой системы. Именно система адресации позволяет находить нужный файл среди множества как пустых, так и занятых блоков на диске. Файловая система ext2 использует следующую схему адресации блоков файла. Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт. Если размер файла меньше или равен 12 блоков, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса. Если размер файла превышает 12 блоков, то следующее 13-е поле содержит адрес кластера, в котором могут быть расположены номера следующих блоков файла. Таким образом, 13-й элемент адреса используется для косвенной адресации. При максимальном размере блока равном 4096 байт, 13-й элемент, может содержать до 1024 номеров следующих кластеров данных файла. Если размер файла превышает 12+1024 блоков, то используется 14-е поле, в котором находится номер блока, содержащего 1024 номеров блоков, каждый из которых хранят 1024 номеров блоков данных файла. Здесь применяется уже двойная косвенная адресация. И наконец, если файл включает более 12+1024+1048576 = 1049612 блоков, то используется последнее 15-е поле для тройной косвенной адресации.

Таким образом, описанная выше система адресации, позволяет при максимальном размере блока 4 Кб иметь файлы размера до 2 терабайт. или больше

ext3


ext3 или 3-я расширенная файловая системажурналируемая файловая система, используемая в операционных системах на ядре Linux, является файловой системой по умолчанию во многих дистрибутивах. Основана на ФС ext2.

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

Стандартом предусмотрено три режима журналирования:


  • writeback: в журнал записываются только метаданные файловой системы, то есть информация о её изменении. Не может гарантировать целостности данных, но уже заметно сокращает время проверки по сравнению с ext2;

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

  • journal: полное журналирование как метаданных ФС, так и пользовательских данных. Самый медленный, но и самый безопасный режим; может гарантировать целостность данных при хранении журнала на отдельном разделе (а лучше — на отдельном жёстком диске).

более низкая скорость работы по сравнению с ext2

ext4


ext4, или четвёртая версия расширенной файловой системы — журналируемая файловая система, используемая в ОС с ядром Linux. Основана на файловой системе ext3, которая является файловой системой по умолчанию во многих дистрибутивах.

Впервые экспериментальная поддержка ext4 была выпущена в виде патча для Linux версий 2.6.19-rc1-mm1 и 2.6.19-rc1-git8 10 октября 2006 года программистом Эндрю Мортоном (Andrew Morton)[1]. Основной особенностью стало увеличение максимального объема одного раздела диска до 1 эксабайта (260 байт) при размере блока 4Kb. Кроме того, в ext4 представлен механизм пространственной (extent) записи файлов (новая информация добавляется в конец заранее выделенной по соседству области файла), уменьшающий фрагментацию и повышающий производительность.

Поддержка ext4 включена в релиз Fedora 9 (в Fedora 11 — основная), в версию 3.5 (начиная с Loop 3) Sabayon Linux, ArchLinux, Slackware, а также в Ubuntu 9.04Ubuntu, начиная с версии 9.10, ext4 стала файловой системой по умолчанию).

ReiserFS


ReiserFS — журналируемая файловая система, разработанная специально для Linux компанией Namesys под руководством Ганса Рейзера (Hans Reiser). Обычно под словом ReiserFS понимают третью версию (последняя — 3.6.21), а четвёртую называют Reiser4.

В настоящее время ReiserFS поддерживается только под GNU/Linux, но может быть в будущем перенесена на другие платформы. Появившись в Linux версии 2.4.1, она стала первой журналируемой ФС, включённой в ядро.

ReiserFS — стандартная ФС для дистрибутивов Archlinux, Slackware, SuSE, Xandros, Yoper, Linspire и Kurumin Linux.

В настоящий момент разработка Reiser3 прекращена.


Особенности


  • Возможность упаковки нескольких небольших файлов в один блок (т. н. англ. tail packing — «упаковка хвостов») во избежание фрагментации и потери дискового пространства. Из-за сильной потери производительности Namesys рекомендует отключить эту возможность на чувствительных к ресурсам машинах.

  • Журналирование только метаданных.

  • Возможность изменения размера файловой системы «на лету».

Недостатки


  • Reiser3 может быть повреждена в результате перестройки дерева во время проверки. Перестройка дерева нужна при условии, если метаданные очень сильно повреждены.

  • Версии ReiserFS, включённые в ядро Linux младше версии 2.4.10, признаны нестабильными компанией Namesys и не рекомендованы для промышленного использования, особенно в связке с NFS.

  • Неизвестен способ дефрагментации, помимо полного дампа ФС и последующего восстановления.

Однако имеется переупаковщик для ReiserFS v4, который заботится о фрагментации файлов.

Reiser4


Reiser4журналируемая файловая система ReiserFS (4-я версия), разработанная специально для Linux (хотя может использоваться и в других OS) компанией Namesys под руководством Ганса Рейзера (Hans Reiser).

Reiser4 Имеет следующие преимущества:



  • одна из самых быстрых ФС для Linux (с включённым плагином-архиватором - самая быстрая);

  • атомарная структура ФС (atomic filesystem) — позволяет производить операции файловой системы или полностью, или никак, но не наполовину; это повышает надёжность хранения данных;

  • использует «танцующие деревья» (dancing trees) — алгоритм, пришедший на смену алгоритмам «сбалансированного дерева», используемым в базах данных; Это позволяет Reiser4 более эффективно использовать пространство, благодаря тому, что маленькие файлы хранятся вместе;

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

Несмотря на арест Ганса Рейзера и прекращения активности компании Namesys разработка Reiser4 продолжается русским программистом Эдуардом Шишкиным, а также небольшой группой энтузиастов.

Unix File System


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

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


Раздел диска


Раздел (англ. partition) — часть долговременной памяти жёсткого диска, выделенная для удобства работы, и состоящая из смежных блоков.

На других носителях информации выделение разделов или не предусмотрено, или (за редкими исключениями) не практикуется. Однако, существуют флеш-драйвы, память которых можно разбить на два раздела, причём один раздел можно защитить паролем, при этом система «увидит» составное устройство из двух флеш-карт (на самом деле любую флеш карту можно разбить на два и боле разделов, однако драйвер в Windows отображает только первый из них; работа с ними возможна при подмене драйвера или при работе с другими ОС).


Преимущества использования разделов


Выделение на одном жёстком диске нескольких разделов даёт следующие преимущества:

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

  • можно отделить информацию пользователя от файлов операционной системы;

  • на одном жёстком диске можно установить несколько операционных систем;

  • манипуляции с одной файловой системой не сказываются на других файловых системах.

Структура диска, разбитого на разделы


Информация о размещении разделов на жёстком диске хранится в таблице разделов (англ. partition table), которая является частью главной загрузочной записи (MBR). MBR располагается в первом физическом секторе жёсткого диска.

Раздел может быть либо логическим диском, либо дополнительным разделом.

В первом секторе каждого логического диска находится загрузочный сектор (Boot Record), отвечающий за загрузку операционной системы с этого раздела. Информация о том, какой логический диск будет использован для загрузки операционной системы, тоже записана в главной загрузочной записи.

В MBR под таблицу разделов выделено 64 байта. Каждая запись занимает 16 байт. Таким образом, всего на жестком диске может быть создано не более 4 разделов. Когда разрабатывалась структура MBR, это считалось достаточным. Однако, позднее был введён дополнительный раздел. Он не является логическим диском, а также содержит таблицу разделов, в которой можно прописать ещё до 4 разделов.

По правилам дополнительный раздел может быть только один, и не может содержать другой дополнительный раздел. Таким образом, в максимальной конфигурации на жёстком диске может быть сформировано 3 основных логических диска и 1 дополнительный раздел, содержащий 4 логических диска. Всего 7 логических дисков. И только первичный диск может быть загрузочным. Однако, различные менеджеры разделов позволяют обходить эти ограничения.

Виды логических разделов

Первичный (основной) раздел


Первичный раздел (англ. primary partition) обязательно должен быть на физическом диске. Этот раздел всегда содержит либо одну файловую систему, либо другие логические разделы. На физическом диске может быть до четырёх первичных разделов. Некоторые старые операционные системы — например, MS-DOS и Microsoft Windows — могли быть установлены только на первичный раздел.

Расширенный (дополнительный) раздел


Основная таблица разделов может содержать не более 4 первичных разделов, поэтому был изобретён Расширенный раздел (англ. extended partition). Это первичный раздел, который не содержит собственной файловой системы, а содержит другие логические разделы.

Пример разбиения жёсткого диска на разделы


Физический диск

Первичный раздел 1 (Логический раздел 1): ФС

Расширенный раздел (Первичный раздел 2, Логический раздел 2)




Логический раздел 4: ФС

Логический раздел 5: ФС

Первичный раздел 3 (Логический раздел 3): ФС



Главная загрузочная запись


Главная загрузочная запись (англ. master boot record, MBR) — это первый физический сектор на жёстком диске или другом устройстве хранения информации, разбиваемом на логические диски (разделы). MBR содержит таблицу разделов (partition table) и небольшой фрагмент исполняемого кода.

Цель MBR — ещё не загрузка ОС, а всего лишь выбор «с какого раздела жёсткого диска следует загружать ОС». На стадии MBR происходит выбор раздела диска и ничего более. Загрузка самой ОС происходит на более поздних этапах.

В процессе запуска компьютера при загрузке с жёсткого диска MBR загружается в память базовой системой ввода-вывода (BIOS) после окончания теста POST (в компьютерах архитектуры IBM PC обычно с адреса 0000:7c00), ему передаётся управление командой long jump.

В процессе загрузки компьютера x86 вначале всегда отрабатывается BIOS. На этой стадии кроме тестирования и активации «железа», происходит также и выбор устройства, с которого будет происходить дальнейшая загрузка. Это может быть дискета, жёсткий диск, сетевой ресурс, встроенное ПЗУ или любое иное устройство. (Алгоритм выбора загрузочного устройства может быть различным и зависит от реализации BIOS.) После выбора загрузочного устройства, управление всей дальнейшей загрузкой BIOS полностью передаёт этому устройству.

В случае, если устройство имеет только один раздел (как, например, дискета или сетевая загрузка), то выбор однозначен, и загрузка продолжается сразу с этого устройства. Однако, если устройство содержит несколько разделов, каждый из которых потенциально может быть загрузочным (как, например, в случае жестких дисков), то возникает неопределённость: с какого именно раздела производить загрузку?

Для разрешения неоднозначности по выбору раздела, было предложено вынести этот вопрос из ведения BIOS и передать этот выбор самому устройству. Так появилась идея использовать небольшую программу, записанную на самом носителе, которая и осуществляла бы данный выбор. Так появилась концепция MBR.

Таким образом, потенциальное наличие нескольких загрузочных разделов, среди которых необходимо осуществить выбор — это ключевой момент в необходимости появления и отработки MBR. Для устройств с единственным (или однозначно заданным) загрузочным разделом концепция MBR лишена смысла и не используется.

Структура MBR


Структура Главной загрузочной записи (MBR)

Смещение

Длина

Описание

000h

446

Код загрузчика

1BEh

64

Таблица разделов




16

Раздел 1

1CEh

16

Раздел 2

1DEh

16

Раздел 3

1EEh

16

Раздел 4

1FEh

2

Сигнатура (55h AAh)

Структура MBR от Microsoft занимает один сектор (512 байт):

  • область кода и служебных данных (446 байт)

  • область partition table (4 записи по 16 байт)

  • Сигнатура 55AAh (2 байта)

Содержание «Области кода и служебных данных» зависит от версии DOS / Windows, но функции остаются те же — поиск, загрузка и запуск нужного загрузочного сектора

После завершения процедуры POST в ОЗУ по адресу 0x0000:0x7c00 записывается код загрузчика после чего ему передается управление. Задача загрузчика проанализировать таблицу разделов жёсткого диска, а затем либо передать управление загрузочному коду активного раздела, либо загрузить в память ядро операционной системы и передать ему управление.

В таблице разделов хранится информация о типе раздела и его расположении на жёстком диске.

Последние два байта MBR называются сигнатурой. Значение этих байтов должно быть 55h AAh. В случае, если это не так, запись считается некорректной.


Структура описания раздела


Структура описания раздела

Смещение

Длина

Описание

00h

1

Признак активности раздела

01h

1

Начало раздела — головка

02h

1

Начало раздела — сектор (биты 0-5), дорожка (биты 6,7)

03h

1

Начало раздела — дорожка (старшие биты 8,9 хранятся в байте номера сектора)

04h

1

Код типа раздела

05h

1

Конец раздела — головка

06h

1

Конец раздела — сектор (биты 0-5), дорожка (биты 6,7)

07h

1

Конец раздела — дорожка (старшие биты 8,9 хранятся в байте номера сектора)

08h

4

Смещение первого сектора

0Ch

4

Количество секторов раздела

Признак активности разделов


Признак активности раздела — признак обозначающий возможность загрузки операционной системы с данного раздела. Для стандартных загрузчиков может принимать следующие значения:

  • 80h — раздел является активным

  • 00h — раздел является неактивным

  • Другие значения являются ошибочными и игнорируются.

Начало раздела / Конец раздела


Координаты начала и конца раздела в CHS (Цилиндр, головка, сектор) формате. Следует учитывать, что CHS не позволяет выполнять адресацию более чем к 7,8 Гб данных. Для адресации к разделам находящимся за пределами 7,8 Гб используется LBA адресация.

Код типа раздела


Код файловой системы используемой на данном разделе. В случае расширенного раздела принимает значение 05h. В случае если используется расширенный раздел, то координаты начала раздела указывают на EBR.

Структура EBR

Смещение

Длина

Описание




16

Указатель на раздел

1CEh

16

Указатель на следующий EBR

1FEh

2

Сигнатура (55h AAh)

Формат указателей аналогичен MBR.

Смещение первого сектора


Координаты начала раздела в LBA координатах. Позволяет выполнять адресацию до 2 Тб данных.

Восстановление MBR


Если каким-либо образом была потеряна MBR, то её можно восстановить специальными утилитами (например TestDisk), которая просмотрит весь носитель информации и создаст таблицу разделов.

Загрузчик ОС


Загрузчик операционной системы — системное программное обеспечение, обеспечивающее загрузку операционной системы непосредственно после включения компьютера.

Загрузчик операционной системы:

  • обеспечивает необходимые средства для диалога с пользователем компьютера (например, загрузчик позволяет выбрать ядро операционной системы для загрузки);

  • приводит аппаратуру компьютера в состояние, необходимое для старта ядра операционной системы (например, на не-x86 архитектурах перед запуском ядра загрузчик должен правильно настроить виртуальную память);

  • загружает ядро операционной системы в ОЗУ. Загрузка ядра операционной системы не обязательно происходит с MBR. Загрузчик может получать ядро по сети. Ядро может храниться в ПЗУ или загружаться через последовательные интерфейсы (это может пригодиться на ранней стадии отладки создаваемой компьютерной системы);

  • формирует параметры, передаваемые ядру операционной системы (например, ядру Linux передаются параметры, указывающие способ подключения корневой файловой системы);

  • передаёт управление ядру операционной системы.

На компьютерах архитектуры IBM PC запуск загрузчика осуществляется программным обеспечением BIOS, записанной в ПЗУ компьютера, после успешного окончания процедуры POST. Опишем процедуру, с помощью которой происходит загрузка с MBR IBM PC: BIOS производит чтение 512 байт первого сектора (MBR) в ОЗУ по адресу 0x00007C00 (0x07C0:0x0000 в формате реального режима), затем прочитанному коду передаётся управление. Этот код читает и анализирует таблицу разделов жёсткого диска, а затем, в зависимости от вида загрузчика, либо передаёт управление загрузочному коду активного раздела жёсткого диска, либо самостоятельно загружает ядро с диска в оперативную память и передаёт ему управление. Первоначально загрузчик работает в режиме реальной адресации при отключенной адресной линии A20, что создает определенные трудности при написании загрузчиков.

Распространённые загрузчики


  • NTLDR — загрузчик ядра Windows NT

  • Windows Boot Manager (bootmgr.exe, winload.exe) — загрузчик ядра Windows Vista

  • LILO (LInux LOader) — загрузчик, в основном применяемый для загрузки ядра Linux

  • GRUB (Grand Unified Bootloader) — применяется для загрузки ядра Linux и Hurd (StartUp Manager)

  • OS/2 BootManager — загрузчик ядра OS/2

  • RedBoot — загрузчик для встраиваемых систем

  • SILO (SPARC Improved bootLOader) — загрузчик Linux и Solaris для машин с архитектурой SPARC. Домашняя страница SILO

  • Loadlin — загружает Linux из под DOS или Windows Домашняя страница Loadlin

  • Syslinux — загружает Linux из под DOS или Windows

  • BOOTP — применяется для загрузки по сети

  • Yaboot — загрузчик Linux на PowerPC

  • BootX — загрузчик Mac OS X

  • Das U-Boot

  • SyMon — универсальный загрузчик, независим от типа операционной системы Домашняя страница SyMon








База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница