Параллельная файловая система что это

Обновлено: 07.07.2024

JFS (Journaled File System) - это 64-х битная журналируемая файловая система, созданная компанией IBM. Существуют версии для следующих операционных систем: AIX, eConStation, OS/2 и Linux. В операционных системах Linux доступна под лицензией GNU GPL.

JFS - это полностью 64-разрядная файловая система. Все соответствующие файловой системе поля также 64-разрядные. Это позволяет JFS поддерживать как большие файлы, так и разделы. Минимальный размер файловой системы составляет 16 Мб. Максимальный размер зависит от размера блока файловой системы и максимального числа блоков, поддерживаемых структурами метаданных файловой системы. JFS будет поддерживать максимальный размер файла от 512 Тб (блоками по 512 байт) до 4 Пб (блоками по 4 Кб).

Максимальный размер файла является максимальным размером файла, который поддерживается фреймворком виртуальной файловой системы. Например, если фреймворк поддерживает только 32-бита, то этого и есть ограничение для размера файла.

Содержание

Журналируемая файловая система, исходный код которой открыт IBM в 1999 году и включен в исходных код ядра Linux начиная с 2002 года. С начала разработки в 1990 году и до настоящего времени, когда JFS всё пщё поддерживается IBM, файловая система прошла следующие этапы:

  • В 1990, JFS была выпущена для линейки AIX Unix-серверов версии 3.1. и была заточена под это оборудование.
  • В 1995, началась разработка по совершенствованию JFS, которая была направлена на расширение возможностей и масштабируемость файловой системы для многопроцессорных компьютеров.
  • В 1997, параллельная разработка начала смещаться обратно в AIX.
  • В 1999, усовершенствованная архитектура JFS была выпущена для OS/2.
  • В 2001 улучшенная файловая система была выпущена для AIX 5L.
  • Текущая Linux версия портирована на основе JFS для OS/2.

JFS была спроектирована для поддержки быстрого восстановления после падений файловой системы, файлов больших размеров и большого числа директорий и файлов. Для выполнения этих требований, JFS обеспечивает восстановление файловой подсистемы с помощью журналирования исключительно метаданнных. JFS также обеспечивает 64-разрядную масштабируемость с диапазоном петабайт для файлов и разделов. Кроме того, индексы B+ деревьев используются на всех структурах файловой системы. Для повышения производительности, B+ деревья широко используются вместо традиционных линейных файловых структур.

Логические тома

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

  • 32 Кб неиспользуемого дискового пространства в начале.
  • Первичный и вторичный суперблоки, содержащие глобальную информацию о данном томе. Вторичный суперблок - точная копия первичного.
  • Два экземпляра таблицы inodes тома, содержащей inodes, глобальные управляющие структуры тома.
  • Две копии карты размещения inodes, описывающей таблицы inodes тома.
  • Карта размещения блоков, описывает структуры, управляющие выделением и освобождением блоков тома.
  • Рабочее пространство fsck, необходимое для отслеживания выделения блоков тома. Всегда расположено в конце тома.
  • Встроенный журнал, обеспечивающий место для журналирования изменений метаданных тома.

Агрегаты и наборы файлов

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

Файлы, директории, inodes и структуры адресации

Набор файлов содержит файлы и каталоги. Файлы и каталоги представлены inodes; каждый inode описывает атрибуты файла или каталога и служит отправной точкой для поиска данных файла или каталога на диске. JFS также использует дескрипторы для представления других объектов файловой системы, такие как карта, описывающая состояние размещения и расположения на диске каждого индексного дескриптора в наборе файлов. Файлы содержат пользовательские данные, и не существует каких-либо ограничений или форматов, подразумеваемых в данных. То есть, пользовательские данные обрабатываются JFS как необработанный поток байтов. Вместе, суперблок и карта размещения диска, файловый дескриптор и карта inode, сами inodes, директории и структуры адресации представляют JFS управляющие структуры или мета-данные.

Журналы

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

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

Журналирование

JFS обеспечивает улучшенную структурную согласованность и восстанавливаемость и более быстрый перезапуск чем нежурналируемые файловые системы, такие как HPFS, ext2 и традиционные файловые системы UNIX. Эти файловые системы подвержены повреждению в случае отказа системы, так как логической операции записи файла часто занимает несколько операций ввода и вывода данных и не могут быть полностью отражены в данных в любое время. Эти файловые системы полагаются на утилиты перезапуска (то есть fsck), которые исследуют все метаданные файловой системы на предмет обнаружения и ликвидации проблем структурной целостности. Этот процесс отнимает много времени и подвержен ошибкам, в худшем случае результатом его может быть потеря данных или неверное восстановление. В противовес этому, JFS использует методы, первоначально разработанные для баз данных с целью регистрации информации об операциях, выполняемых в метаданных файловой системы в качестве атомарных транзакций. В случае выхода из строя, файловая система восстанавливается в согласованное состояние посредством воспроизведения журнала и применения записей журнала для соответствующей транзакции. Время восстановления, связанное с журналом, значительно ниже, поскольку утилите требуется только обнаружить запись в журнале о недавней активности файловой системы, а не изучать все метаданные файловой системы. Некоторые другие аспекты восстановления на основе журнала также представляют интерес. Во-первых, JFS ведёт журнал лишь для метаданных, поэтому восстанавливается только последовательность структурных связей и ресурсов состояния выделения в файловой системе. Она не регистрирует данные файла и не восстанавливает их в согласованное состояние. Следовательно, некоторые данные могут быть потеряны или неудачно восстановлены, а клиентам с критической необходимостью обеспечения согласованности данных следует использовать синхронный ввод-вывод. Протоколирование не особенно эффективно в условиях некачественного носителя. В частности, ошибка ввода-вывода во время записи на диск журнала или метаданных означает, что полная проверка целостности требуемая после сбоя системы для восстановления файловой системы в согласованное состояние отнимает много времени и является потенциально навязчивой. Из этого следует, что перемещение плохого блока является ключевым элементом любого менеджера хранения или устройства, находящегося под JFS. Журналирование JFS таково, что когда производится операция файловой системы с изменением метаданных завершается успешно, последствия операции будут видны, даже если система выйдет из строя. Например, если файл был успешно удалён, он останется удалённым и не появится после выхода системы из строя и её перезапуска. Стиль ведения журнала представляет собой синхронную запись в журнал диска в каждый inode или операция виртуальной файловой системы, которая изменяет метаданные. С точки зрения производительности, это хорошо соотносится со многими нежурналируемыми файловыми системами. Тем не менее, это является недостатком производительности по сравнению с другими журналируемыми файловыми системами, такими как Veritas VxFS и Transarc Episode, которые используют другие стили ведения журналов и более ленивую записи данных в журнал диска. В серверной среде, где выполняются несколько одновременных операций, эта стоимость уменьшается посредством групповой записи, которая сочетает различные синхронные операции записи в одну операцию записи. Стиль ведения журнала JFS был улучшен с течением времени и теперь обеспечивает асинхронное протоколирование, что повышает производительность файловой системы.

Непрерывные адресные структуры

JFS использует экстенты на основе структуры адресации наряду с агрессивной политикой распределения блоков, чтобы производить компактные, эффективные и масштабируемые структуры для отображения логических сдвигов в файлах к физическому адресу на диске. Экстент представляет собой последовательность смежных блоков, выделенных файлу как единое целое и описываемое как тройка, состоящая из <логического сдвига, длины, физического>. Адресная структура представляет собой B+ дерево, заполняемое дескрипторами экстентов, находящегося в inode и снабженное ключом логического сдвига внутри файла.

Переменный размер блока

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

Динамическое распределение диска под inode

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

Организация директорий

Предусмотрены две различные организации директории. Первая организация используется для малых каталогов и сохраняет содержимое каталога в пределах inode каталога. Это устраняет необходимость в отдельном блоке ввода-вывода, а также необходимость выделения отдельного хранилища. В inode может храниться до 8 записей в линию, исключая записи собственного и родительских каталогов, которые хранятся в отдельных областях inode. Вторая организация используется для больших каталогов и представляет каждый каталог как B+ дерево. Это обеспечивает более быстрый поиск, вставку, удаление в каталоге по сравнению с традиционными несортированными организациями каталогов.

Разреженные и плотные файлы

JFS поддерживает как разреженные, так и плотные файлы. Эти файлы позволяют записывать данные в случайных местах внутри файла без инстанцировании ранее неописанных промежуточных блоков файлов. Размер файла сообщает старший байт, но фактическое распределение любого заданного блока в файле не происходит до тех пор, пока операция записи не завершится на этом блоке. Например, предположим, что создаётся новый файл в файловой система, предназначенный для разреженного файла. Приложение записывает блок данных в блок 100 в файл. JFS сообщит размер этого файла как 100 блоков, хотя только один блок дискового пространство был выделен под него. Если приложение дальше прочитает следующие 50 блоков из файла, JFS будет возвращать блок, заполненный нулями. Предположим, что приложение затем записывает блок данных в блок 50 данных. JFS будет по-прежнему сообщать размер этого файла как 100 блоков, но теперь 2 блока дискового пространства выделяются под него. Эти файлы представляют интерес для приложения, которые требуют большого логического пространства, но используют только подмножество этого пространства. Для плотных файлов дисковые ресурсы выделяются для покрытия размера файла. В приведенном выше примере первая запись (блок данных в блок 100 в файле) приведет к выделения 100 блоков дискового пространства. Операция чтения на любом блоке, который был неявно записан, будет возвращать блок, заполненный нулями, так же, как и в случае разреженного файла.

Всем привет! Мы продолжаем запуски новых потоков по уже полюбившимся вам курсам и сейчас спешим сообщить о том, что у нас стартует новый набор по курсу «Администратор Linux», который запустится в конце апреля. К этому событию и будет приурочена новая публикация. С оригиналом материала можно ознакомиться тут.

Виртуальные файловые системы выполняют роль некой волшебной абстракции, которая позволяет философии Linux говорить, что «всё является файлом».


Что такое файловая система? Опираясь на слова одного из первых контрибьюторов и авторов Linux Робера Лава, «Файловая система – это иерархическое хранилище данных, собранное в соответствии с определенной структурой». Как бы то ни было, это определение в равной мере хорошо подходит для VFAT (Virtual File Allocation Table), Git и Cassandra (база данных NoSQL). Так что именно определяет такое понятие, как «файловая система»?

Основы файловой системы

Ядро Linux имеет определенные требования к сущности, которая может считаться файловой системой. Она должна реализовывать методы open() , read() и write() для постоянных объектов, которые имеют имена. С точки зрения объектно-ориентированного программирования, ядро определяет обобщенную файловую систему (generic filesystem) в качестве абстрактного интерфейса, а эти три большие функции считаются «виртуальными» и не имеют конкретного определения. Соответственно, реализация файловой системы по умолчанию называется виртуальной файловой системой (VFS).


Если мы можем открывать, читать и записывать в сущность, то эта сущность считается файлом, как мы видим из примера в консоли сверху.
Феномен VFS лишь подчеркивает наблюдение, характерное для Unix-подобных систем, которое гласит, что «всё является файлом». Подумайте, насколько странно, что тот маленький пример сверху с /dev/console показывает, как на самом деле работает консоль. На картинке изображена интерактивная Bash сессия. Отправка строки в консоль (virtual console device) отображает ее на виртуальном экране. VFS имеет другие, еще более странные свойства. Например, она дает возможность осуществлять поиск по ним.

Знакомые нам системы, такие как ext4, NFS и /proc имеют три важные функции в структуре данных С, которая называется file_operations. Кроме того, определенные файловые системы расширяют и переопределяют функции VFS привычным объектно-ориентированным способом. Как отмечает Роберт Лав, абстракция VFS позволяет пользователям Linux беспечно копировать файлы в или из сторонних операционных систем или абстрактных сущностей, таких как pipes, не беспокоясь об их внутреннем формате данных. Со стороны пользователя (userspace) с помощью системного вызова процесс может копировать из файла в структуры данных ядра с помощью метода read() одной файловой системы, а затем использовать метод write() другой файловой системы для вывода данных.

Определения функций, которые принадлежат к базовым типам VFS, находятся в файлах fs/*.c исходного кода ядра, в то время как подкаталоги fs/ содержат определенные файловые системы. В ядре также содержатся сущности, такие как cgroups , /dev и tmpfs , которые требуются в процессе загрузки и поэтому определяются в подкаталоге ядра init/ . Заметьте, что cgroups , /dev и tmpfs не вызывают «большую тройку» функций file_operations , а напрямую читают и пишут в память.
На приведенной ниже диаграмме показано, как userspace обращается к различным типам файловых систем, обычно монтируемых в системах Linux. Не показаны такие конструкции как pipes , dmesg и POSIX clocks , которые также реализуют структуру file_operations , доступ к которым проходит через слой VFS.


VFS — это «слой оболочки» между системными вызовами и реализациями определенных file_operations , таких как ext4 и procfs . Функции file_operations могут взаимодействовать либо с драйверами устройств, либо с устройствами доступа к памяти. tmpfs , devtmpfs и cgroups не используют file_operations , а напрямую обращаются к памяти.
Существование VFS обеспечивает возможность переиспользовать код, так как основные методы, связанные с файловыми системами, не должны быть повторно реализованы каждым типом файловой системы. Переиспользование кода – широкоприменяемая практика программных инженеров! Однако, если повторно используемый код содержит серьезные ошибки, от них страдают все реализации, которые наследуют общие методы.

/tmp: Простая подсказка

Простой способ обнаружить, что VFS присутствуют в системе – это ввести mount | grep -v sd | grep -v :/ , что покажет все смонтированные ( mounted ) файловые системы, которые не являются резидентами на диске и не NFS, что справедливо на большинстве компьютеров. Одним из перечисленных маунтов ( mounts ) VFS, несомненно, будет /tmp , верно?


Все знают, что хранение /tmp на физическом носителе – безумие! Источник.

Почему нежелательно хранить /tmp на физическом носителе? Потому что файлы в /tmp являются временными, а устройства хранения медленнее, чем память, где создается tmpfs. Более того, физические носители более подвержены износу при перезаписи, чем память. Наконец, файлы в /tmp могут содержать конфиденциальную информацию, поэтому их исчезновение при каждой перезагрузке является неотъемлемой функцией.

Помимо /tmp , VFS (виртуальные файловые системы), которые наиболее знакомы пользователям Linux – это /proc и /sys . ( /dev располагается в общей памяти и не имеет file_operations ). Почему именно эти два компонента? Давайте разберемся в этом вопросе.

procfs создает снимок мгновенного состояния ядра и процессов, которые он контролирует для userspace . В /proc ядро выводит информацию о том, какими средствами оно располагает, например, прерывания, виртуальная память и планировщик. Кроме того, /proc/sys – это место, где параметры, настраиваемые с помощью команды sysctl , доступны для userspace . Статус и статистика отдельных процессов выводится в каталогах /proc/ .


Здесь /proc/meminfo — это пустой файл, который тем не менее содержит ценную информацию.

Поведение /proc файлов показывает, какими непохожими могут быть дисковые файловые системы VFS. С одной стороны, /proc/meminfo содержат информацию, которую можно посмотреть командой free . С другой же, там пусто! Как так получается? Ситуация напоминает знаменитую статью под названием «Существует ли луна, когда на нее никто не смотрит? Реальность и квантовая теория», написанную профессором физики Корнельского университета Дэвидом Мермином в 1985 году. Дело в том, что ядро собирает статистику памяти, когда происходит запрос к /proc , и на самом деле в файлах /proc ничего нет, когда никто туда не смотрит. Как сказал Мермин, «Фундаментальная квантовая доктрина гласит, что измерение, как правило, не выявляет ранее существовавшего значения измеряемого свойства.» (А над вопросом про луну подумайте в качестве домашнего задания!)
Кажущаяся пустота procfs имеет смысл, поскольку располагающаяся там информация динамична. Немного другая ситуация с sysfs . Давайте сравним, сколько файлов размером не менее одного байта есть в /proc и в /sys .


Procfs имеет один файл, а именно экспортированную конфигурацию ядра, которая является исключением, поскольку ее нужно генерировать только один раз за загрузку. С другой стороны, в /sys лежит множество более объемных файлов, многие из которых занимают целую страницу памяти. Обычно файлы sysfs содержат ровно одно число или строку, в отличие от таблиц информации, получаемой при чтении таких файлов, как /proc/meminfo .

Цель sysfs – предоставить свойства доступные для чтения и записи того, что ядро называет «kobjects» в userspace. Единственная цель kobjects – это подсчет ссылок: когда удаляется последняя ссылка на kobject, система восстановит ресурсы, связанные с ним. Тем не менее, /sys составляет большую часть знаменитого «stable ABI для userspace» ядра, которое никто никогда, ни при каких обстоятельствах не может «сломать». Это не означает, что файлы в sysfs статичны, что противоречило бы подсчету ссылок на нестабильные объекты.
Стабильный двоичный интерфейс приложений ядра (kernel's stable ABI) ограничивает то, что может появиться в /sys , а не то, что на самом деле присутствует в данный конкретный момент. Листинг разрешений на файлы в sysfs обеспечивает понимание того, как конфигурируемые параметры устройств, модулей, файловых систем и т.д. могут быть настроены или прочитаны. Делаем логический вывод, что procfs также является частью stable ABI ядра, хотя это не указано явно в документации.


Файлы в sysfs описывают одно конкретное свойство для каждой сущности и могут быть читаемыми, перезаписываемыми или и то и другое сразу. «0» в файле говорит о том, что SSD не может быть удален.

Вторую часть перевода начнем с того, как наблюдать за VFS с помощью инструментов eBPF и bcc, а сейчас ждем ваши комментарии и традиционно приглашаем на открытый вебинар, который уже 9 апреля проведет наш преподаватель — Владимир Дроздецкий.

Содержание

История появления

GPFS изначально разрабатывалась как Tiger Shark file system в 1993 году в исследовательском центре IBM Almaden Research Center. Первый коммерческий релиз GPFS состоялся в 1998 году. GPFS изначально проектировалась для поддержки мультимедиа-приложений, требовательных к полосе пропускания. Такой дизайн хорошо подходит для научных вычислений. Сегодня GPFS используется на многих суперкомпьютерах из списка «500 Самых Мощных». С самого начала GPFS была успешно использована для множества коммерческих приложений.

Причины появления

Технология и принцип работы

Функционально узлы в файловой системе GPFS делятся:

  • узлы, которым необходим доступ к данным – обычные GPFS узлы.
  • узлы «доступа» Network Shared disk (NSD).

Сегодня наиболее распространенная конфигурация данной системы представляет из себя: Два или более Узла Доступа, соединенных по IP со всеми вычислительными узлами с одной стороны и по «Fibre-channel» с несколькими системами хранения - с другой. Причем каждый Узел Доступа может задействовать два или более порта «Fibre-channel» и два и более порта IP для увеличения пропускной способности каналов. При использовании нескольких Узлов Доступа отказ одного из них не приведёт к потере доступа к данным файловой системы, доступ будет обеспечиваться через оставшиеся Узлы. IP каналы могут быть как и по Ethernet, так и поверх Infiniband и Myrinet сетей. Начиная с версии 3.2, GPFS поддерживает родной протокол Infiniband – RDMA, то есть IP пакеты больше не нужно инкапсулировать в пакеты Infiniband. Сеть доступа к данным может быть как совмещенной с сетью интерконнекта всех вычислительных узлов ( используемой для счета), так и раздельной ( для максимальной производительности).

Большее количество операций ввода/вывода в GPFS обеспечивается за счет разбиение данных файлов блоки ( stripes), которые варьируется в диапазоне от 16 Кбайт до 1 Мбайт, и разнесения их по различным массивам ( RAID) и системам хранения, в результате чего операции чтения и записи блоков происходят в параллель – до нескольких тысяч дисков в самых больших дисках в самых больших установках GPFS, что позволяет при чтении/записи даже одного файла получить суммарную производительность всех дисковых систем, входящих в эту файловую систему GPFS.

Любая файловая система состоит минимум из двух из двух составляющих:

  • Непосредственно самих данных
  • Информации о размещении этих данных на системе хранения (метаданные)


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

Файловая система GPFS имеет встроенный механизм репликации данных в дополнение к RAID - массивам дисковых систем для повышения отказоустойчивости. Когда он включен, то GPFS резервирует место для каждого блока данных и метаданных на двух разных дисковых системах.

Полезной особенностью является объедение нескольких GPFS-систем в одну для ситуаций когда:

  • Кластеры могут монтировать файловые системы, принадлежащие и управляемые другими кластерами.
  • Кластеры могут разделять данные и таким образом вычислительные ресурсы могут быть использованы более эффективно.
  • Дисковые подсистемы могут быть объединены в группы в зависимости от их производительности.
  • Когда требуется разделить вычислительные площадки и площадки данных.
  • Объединение множества кластеров в единый суперкластер для решения более сложной задачи.

GPFS не требует ни каких изменений со стороны программного обеспечения – используется станд артный доступ к файлам. GPFS поддерживает операционные системы RedHat, SuSe, AIX.

Установка

Процесс установки происходит следующим образом:

Благодаря огромному количеству возможностей, которые предоставляет GPFS, система не требует никаких изменений, она нашла себе применение не только как файловая система для высокопроизводительных кластерных систем, но и для решения таких бизнес-задач, как Oracle RAC, SAP Business, видео-серверы, где необходима высокая производительность дисковой подсистемы.

Содержание

Общие понятия

Назначение файловой системы - обеспечение интерфейса к данным на накопителях. Цель - организация хранения и доступа.

Состав файловой системы

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

Каждый файл характеризуется своим уникальным именем. Чтобы упростить имена используются разрешения.

Для FAT16 правило 8.3: имя файла может состоять из 12 символов (8 - основная часть, и 3 символа расширения).

При копировании в файловой системе файлов производится преобразование имен.

Путь в файловой системе - для однозначной идентификации объекта.

Типы файлов

  • Текстовые.
  • Двоичные.
  • Специальные (связанные с аппаратными устройствами).
  • Файлы, через которые описываются каталоги (директор).

Атрибуты файлов

  • Системные.
  • Архивные.
  • Только для чтения.
  • Скрытые.
  • Время создания
  • Временные

Типы иерархической структуры

  • Дерево: узлы - объекты файловой системы, показана их вложенность; корень - точка, в которой начинается файловая система.
  • Сеть: в отличие от дерева один объект может присутствовать в разных директориях.

С понятием файловые системы связаны следующие технологии:

  • Принципы организации файловых систем
  • Организация прав доступа в файловых системах
  • Общая модель файловой системы
  • Файлы, отображаемые в оперативную память
  • Поддержка нескольких файловых систем
  • Журнальные файловые системы

Принципы организации файловых систем

Логическая организация файла

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

Набор записей постоянной длины

Последовательное хранение логических записей фиксированного размера.

Набор записей переменной длины

Для любой записи тут в начале (конце) должна указываться длина.

Физическая организация файла

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

Непрерывное размещение

Непрерывное размещение (подряд блок за блоком).

Достоинства:

  • простота реализации
  • скорость доступа (все данные подряд, поэтому не надо перемещать носитель головки).
  • фрагментация
  • место на носителе распределяется неэффективно.

Связанный список блоков

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

Связанный список индексов

Популярным способом, используемым, например, в файловой системе FAT операционной системы MS-DOS, является использование связанного списка индексов. С каждым блоком связывается некоторый элемент - индекс. Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла. При такой физической организации сохраняются все достоинства предыдущего способа, но снимаются оба отмеченных недостатка: во-первых, для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока, и, во-вторых, данные файла занимают блок целиком, а значит имеют объем, равный степени двойки.

Перечень номеров блоков

Для хранения адреса файла выделено 13 полей. Если размер файла меньше или равен 10 блокам, то номера этих блоков непосредственно перечислены в первых десяти полях адреса. Если размер файла больше 10 блоков, то следующее 11-е поле содержит адрес блока, в котором могут быть расположены еще 128 номеров следующих блоков файла. Если файл больше, чем 10+128 блоков, то используется 12-е поле, в котором находится номер блока, содержащего 128 номеров блоков, которые содержат по 128 номеров блоков данного файла. И, наконец, если файл больше 10+128+128*128, то используется последнее 13-е поле для тройной косвенной адресации, что позволяет задать адрес файла, имеющего размер максимум 10+ 128 + 128*128 + 128*128*128.

Общая организация файловой системы

ОС WINDOWS

В ОС Windows наиболее распространенной на сегодняшний день является файловая система NTFS, заменившая устаревшую файловую систему FAT. Именно файловую систему NTFS лучше всего использовать на сегодняшний день. Чтобы жесткий диск можно было использовать в компьютере, его необходимо подготовить, отформатировать в выбранную файловую систему. Программа форматирования создает на жестком диске компьютера структуру в соответствии с правилами файловой системы Windows после чего диск становится виден в операционной системе и его можно использовать. Форматирование жесткого диска осуществляется силами операционной системы или сторонней программы. При этом выбирается тип файловой системы жесткого диска, размер кластера и способ форматирования.

Кластер — упрощенно, минимальная ячейка на жестком диске для хранения информации, эдакая коробочка для хранения файлов. Кластер имеет вполне конкретные стандартизованные размеры равные 512 байт раньше и 4 096 байт в настоящее время. В одном кластере хранится только один файл, если он меньше размера кластера, то все равно занимает весь кластер. Когда файл не помещается целиком в одном кластере, то он записывается кусочками по разным кластерам, необязательно соседним. Поскольку размеры файлов крайне редко кратны размеру кластера, то на диске файлы практически всегда занимают больше места, чем их реальный размер. Чтобы было понятнее, возьмем для наглядности такой пример. Есть 9 кирпичей, из них 3 белых и 6 красных, а в контейнер помещается только 5 кирпичей одного типа. Чтобы хранить наши кирпичи нам понадобится 3 контейнера, хотя емкость двух контейнеров 10 кирпичей. Вот наглядная иллюстрация, как это происходит.

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

Файл размером 6 байт занимает в файловой системе жесткого диска 4 096 байт, т.е. один кластер. Соответственно маленький размер кластера больше подходит для хранения маленьких файлов, а большой размер кластера для хранения больших. Тогда место на диске будет использоваться более рационально. Так же происходит и с ярлыками.

Структура файловой системы Windows

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

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

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

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

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

Вот и все, что мы хотели рассказать о файловой системе компьютера в операционной системе Windows.

Все данные в компьютере хранятся в файлах (file – с англ. документ). Каждый файл имеет название, которое состоит из двух частей: имя(позволяет идентифицировать конкретный документ); расширение(характеризует тип документа, необязательный параметр). Длина имени вместе с расширением может содержать до 256 символов, имя от расширения отделяется точкой (расширением считаются символы после последней встречающейся точки). В имени и расширении файла нельзя использовать символы «?», «*», «:», «\», «/», «<», «>» и символ кавычек. В операционной системе MS-DOSфайлы с расширениями – исполняемые, – текстовые, – тексты программ на языках программирования: Паскаль, Бейсик, Си, Фортран соответственно, – файл базы данных. Windows различает прописные и строчные буквы при создании файла, но игнорирует регистр при обращении к файлу. Для нахождения файла не из текущей папки необходимо указать путь к нему. Путь – это последовательность продвижения от текущей папки или диска по ветвям дерева к нужному файлу. Имена папок на этом пути разделяются символом «\», а выход на один уровень вверх – «..». Если путь начинается с символа "\", то движение начинается от текущего диска, в противном случае – от текущей папки. Для указания нескольких файлов, объединенных по какому-либо признаку, в операционной системе используют специальные символы “*” и “?”. Символ «*» заменяет в имени или расширении файла любое количество произвольных символов, а «?» – любой символ, но только один. . docили *.doc– все файлы в текущей папке, обладающие расширением .doc. . doc– файлы с именем длиной не более трех символов и расширением .doc, с. doc–все файлы с именем, начинающимся с символа “с”, длиной не более трех символов и расширением .doc. Папки (каталоги)– элементы иерархической структуры, необходимые для обеспечения удобного доступа к файлам. Файлы объединяются в папки по признаку, заданному пользователем (по типу, по назначению, по принадлежности и т.п.) Папки низких уровней вкладываются в папки более высоких уровней и являются для них вложенными. Верхним уровнем вложенности иерархической структуры является корневой каталог диска. Все папки образуют древовидную структуру. Самой главной папкой (папкой верхнего уровня) является Рабочий стол. В нее вложены папки:Мой компьютер,Сетевое окружениеиКорзина. Мой компьютерсодержит все ресурсы данного компьютера, позволяет иметь доступ ко всем дискам, папкам и файлам в компьютере, содержит средства настройки и управления и т.д. Сетевое окружениепозволяет иметь доступ ко всем ПК и серверам, подключенным к ЛВС (Локальной Вычислительной Сети). Корзинапредназначена для временного хранения удаленных файлов, папок, ярлыков, позволяет восстановить объекты, удаленные по ошибке. Все ограничения, существующие для имен файлов, распространяются на имена папок, причем в имени папки расширение, как правило, отсутствует. Диски в Windows также считаются папками. Все современные дисковые ОС обеспечивают создание файловой системы, предназначенной для хранения данных на дисках и обеспечения доступа к ним. Принцип организации файловой системы – табличный. Поверхность жесткого диска рассматривается как трехмерная матрица. Ее измерения: номер поверхности; номер цилиндра; номер сектора. Данные о месторасположении хранятся в системной области диска в специальных таблицах размещения файлов (FAT-таблицах). Сектор– наименьшая единица хранения данных (512 байт). Кластер– наименьшая единица адресации к данным (размер не фиксирован, зависит от емкости диска). Windows 98 обеспечивает совершенную организацию файловой системы – FAT32 с 32-разрядными полями в таблице размещения файлов. Функции обслуживания файловой структуры: запуск программ и открытие документов; создание файлов и присвоение им имен; создание папок (каталогов) и присвоение им имен; переименование файлов и папок (каталогов); копирование и перемещение файлов между дисками компьютера и между папками (каталогами) одного диска; удаление файлов и папок (каталогов); навигация по файловой структуре с целью доступа к заданному файлу, папке (каталогу); управление атрибутами файлов.

ОС UNIX

Состоит из двух компонент:

  • иерархия файлов и директорий
  • набор файлов устройств, логических томов или разделов.

Для файловой системы UNIX характерна операция монтирования. Монтирование – установление ассоциаций между именами файловой иерархии и устройствами. Оно происходит в два этапа:

Читайте также: