Структура файловой системы: Файловая система NTFS

Файловая система - это... Файловые системы: что такое FAT и NTFS. Файловая система Android

      Рубрики

    • Автомобили
    • Бизнес
    • Дом и семья
    • Домашний уют
    • Духовное развитие
    • Еда и напитки
    • Закон
    • Здоровье
    • Интернет
    • Искусство и развлечения
    • Карьера
    • Компьютеры
    • Красота
    • Маркетинг
    • Мода
    • Новости и общество
    • Образование
    • Отношения
    • Публикации и написание статей
    • Путешествия
    • Реклама
    • Самосовершенствование
    • Спорт и Фитнес
    • Технологии
    • Финансы
    • Хобби
    • О проекте
    • Реклама на сайте
    • Условия
    • Конфиденциальность
    • Вопросы и ответы

    FB

    Войти Сладкая ёлочка из профитролей с кремом и лепёшек из слоёного теста: рецепт

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

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

    Организация файлов

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

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

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

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

    Модель файла, в соответствии с которой содержимое файла представляется неструктурированной последовательностью (потоком) байт, стала популярной вместе с ОС UNIX, а теперь она широко используется в большинстве современных ОС (MS-DOS, Windows2000/NT, NetWare).

    Неструктурированная модель файла позволяет легко организовать разделение файла между несколькими приложениями: разные приложения могут по-своему структурировать и интерпретировать данные, содержащиеся в файле.

    Другая модель файлов, которая применялась в ОС OS/360, DEC RSX, VMS, а в настоящее время используется достаточно редко – это  структурированный файл. В этом случае поддержание структуры файла поручается ОС.

    ФС видит файл как упорядоченную последовательность логических записей. Приложение может обращаться к ФС с запросами на ввод-вывод на уровне записей, например, «считать запись 25 из файла FILE.DOC». ФС должна обладать информацией о структуре файла, достаточной для того, чтобы выделить любую запись. ФС предоставляет приложению доступ к записи, а вся дальнейшая обработка данных, содержащаяся в этой записи, выполняется приложением. Замечание. Развитием этого подхода стали СУБД.

    Способы физической организации файла

    Физическая организация файла (ФОФ) – это способ размещения файла на диске. Основные критерии эффективности физической организации файлов:

    • Скорость доступа к данным.
    • Объем адресной информации файла.
    • Степень фрагментированнности дискового пространства.
    • Максимально возможно размер файла.

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

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

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

    Размещение файла в виде связанного списка кластеров дисковой памяти.

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

    Достоинства: Адресная информация минимальна расположение файла может быть задано одним числом – номером первого кластера, фрагментация на уровне кластеров отсутствует, так как каждый кластер может быть присоединен к цепочке кластеров какого-либо файла, файл может изменять свой размер, наращивая число кластеров.

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

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

    Использование связанного списка индексов (например, в FAT)

    Данный способ является модификацией предыдущего метода. Файлу также выделяется память в виде связанного списка кластеров. Номер первого кластера запоминается в записи каталога, где хранятся характеристики этого файла. Остальная адресная информация отделена от кластеров файла. С каждым кластером диска связан индекс. Индексы располагаются в отдельной области диска – в файловых системах  FAT это таблица (File Allocation Table):

    Когда память свободна, все индексы имеют нулевое значение. Если некоторый кластер N назначен некоторому файлу, то индекс этого кластера становится равным либо номеру M следующего кластера данного файла, либо принимает специальное значение – признак того, что этот кластер является для файла последним. Индекс же предыдущего кластера файла принимает значение N, указывая на вновь назначенный кластер.

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

    Перечисление номеров кластеров, занимаемых этим файлом.

    Достоинства: высокая скорость доступа к произвольному кластеру файла, так как здесь применяется прямая адресация, которая исключает просмотр цепочки указателей при поиске адреса произвольного кластера файла, отсутствие фрагментации на уровне кластеров. Недостатки: длина адреса зависит от размера файла и для большого файла может составить значительную величину. Данный подход с некоторыми модификациями используется в ОС UNIX.

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

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

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

    Замечание. Различные файловые системы имеют разную физическую организацию (например, размер кластера). Основным типом устройства, которое используется для хранения файлов, являются дисковые накопители. Эти устройства предназначены для считывания и записи данных на жесткие и гибкие магнитные диски, оптические диски, flash-носители и др.

    Физическая и логическая структура диска

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

    Физическое форматирование – это процесс записи на поверхность диска служебной информации, обозначающей сектора на диске (пометка начала и конца дорожки и сектора).

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

    Количество дорожек зависит от типа диска. Нумерация дорожек начинается с 0 от внешнего края к центру диска. Когда диск вращается, головка чтения/записи считывает двоичные данные с магнитной дорожки или записывает их на нее.  Нумерация сторон начинается с 0.

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

    Для дискет 3.5”: 2 рабочие поверхности, 80 дорожек на каждой стороне, 18 секторов на каждой дорожке, 512 байт – каждый сектор. Тогда, емкость дискеты=21801181512=1 474 560 байтов = 1.44 Мбайт.

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

    Для того чтобы контроллер диска мог найти на диске нужный сектор, необходимо задать ему все составляющие адреса сектора: номер цилиндра, номер поверхности, номер сектора ([c-h-s]).

    ОС при работе с диском использует, как правило, собственную единицу дискового пространства, называемую кластером.

    Кластер (ячейка размещения данных) – объем дискового пространства, участвующий в единичной операции чтения/записи, осуществляемой ОС.

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

    Пример. Если файл имеет размер 2560 байт, а размер кластера в файловой системе определен в 1024 байта, то файлу будет выделено на диске 3 кластера.

    Размер кластера зависит от формата диска и может соответствовать одному сектору или нескольким смежным секторам дорожки.

    Размер кластера определяется, как правило, автоматически при логическом форматировании.

    Узнать размер кластера можно следующими способами:

    1. В ОС Windows: Панель управления → Администрирование → Управление компьютером → Дефрагментация диска → Выделить логический диск → Анализ.
    2. Выбор размера кластера: Format c:/a:size.
    3. Создать файл небольшого размера, например документ блокнота и вывести свойства файла. Размер фала на диске будет соответствовать размеру кластера.

    Этапы подготовки диска к записи

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

    1. Форматирование низкого уровня (физическое форматирование).
    2. Логическое разбиение (только для HDD).
    3. Логическое форматирование (высокоуровневое).

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

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

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

     

    ОС может поддерживать разные статусы разделов, особым образом отмечая разделы, которые могут быть использованы для загрузки модулей ОС, и разделы, в которых можно устанавливать только приложения и хранить файлы данных. Один из разделов диска помечается как загружаемый (основной, первичный, Primary). Именно из этого раздела считывается загрузчик ОС. А другой – как дополнительный (расширенный, Extenshion).

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

    Логическое форматирование – процесс преобразования уже размеченного дискового пространства в соответствии со стандартами конкретной ОС. Единый стандарт разметки границ дискового раздела и разграничения разделов содержится в таблице разделов диска, которая находится в 1-ом секторе диска (цилиндр 0, дорожка 0, сектор 1). Таблица разделов содержит параметры диска, число разделов, размер и расположение каждого раздела и др.

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

    Для организации логического диска каждая ОС разделяет его на две части:

    • системная область.
    • область данных (Data).
    Системная область предназначена для хранения служебной информации и управляет использованием области данных: применяется для регистрации состояния каждого участка диска. Эта область создается при форматировании и обновляется при операциях с файлами.

    В системной области находятся:

    • Загрузочная запись – начальная область логического диска, содержащая небольшую программу, инициализирующую процесс загрузки ОС. Содержит блок параметров диска (DPB – Disk Parameter Block) и системный загрузчик (SB – System Bootstrap). Загрузочная запись системного диска называется главной загрузочной записью – Master Boot Record.
    • Таблица размещения файлов («таблица» — условное обозначение).
    • Корневой каталог – встроенное оглавление информации, содержащейся в области данных. Корневой каталог на диске единственный, совпадает с именем соответствующего диска и не может быть удален программными средствами.

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

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

    Расширенная таблица разделов состоит из двух элементов: первый элемент расширенной таблицы разделов для первого логического устройства указывает на его загрузочный сектор, второй элемент — на EBR следующего логического устройства (Extended Boot Record, EBR — Расширенная загрузочная запись).

    Linux - начинающим. Часть 4. Работаем с файловой системой. Теория

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

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

    За примерами далеко ходить не надо, каждый пользователь Windows знает, что файлы лежат в папках, папки на разделах (логических дисках), а систему следует искать в папке Windows системного диска. Точно также любой Linux администратор будет искать настройки в /etc, логи в /var/log, а свои собственные документы в /home.

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

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

    Начнем с привычного и понятного.

    В основу файловой системы Windows положен диск, символизирующий собой отдельное устройство хранения информации. При этом каждый диск содержит свою собственную файловую систему, корень которой составляет он сам и обозначается буквой. Т.е. запись вида C:\ - обозначает корень файловой системы на диске С, а D:\Работа - папку в корне файловой системы диска D. Подключая к системе новый носитель информации мы получаем еще одну или несколько файловых систем.

    Это одна из самых больших привычек: подключили накопитель - в системе появился новый диск, если это не так, то накопитель либо не определился, либо неисправен.

    В Linuх концепция принципиально иная. Вспомним: все есть файл, дисковые накопители -- это тоже определенный тип файла. Кроме того, файловая система Linuх иерархична, т.е. имеет один единственный корень, обозначаемый символом /.

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

    Лекция №7 — YZTM. RU

    Скачать файл MS Word «Занятие_9_Л7»

    Вопрос 1.  Типы файловых систем, поддерживаемых операционной системой МСВС.

    Операционная система МСВС разработана на платформе RED HAT Linux. Первоначально файловой системой в Linux была MINIX 1. Однако из-за того обстоятельства, что имена файлов были ограничены в ней 14 символами, а максимальный размер файла составлял 64 Мбайт, интерес к более совершенным файловым системам появился сразу же после начала разработки системы Linux.

    Первым улучшением стала файловая система ext, которая позволяла использовать имена файлов длиной в 255 символов и размер файлов 2 Гбайт (однако она была медленнее, чем файловая система MINIX 1, так что поиски продолжались еще некоторое время). В итоге была изобретена файловая система ext2 (с длинными именами файлов, большими файлами и более высокой производительностью), которая и стала основной файловой системой. Однако Linux поддерживает несколько десятков файловых систем – при помощи уровня виртуальной файловой системы Virtual File System (VFS), описанного ниже.

    Файл в ФС ext2 – это последовательность байтов произвольной длины (от 0 до некоторого максимума), содержащая произвольную информацию. Не делается различия между текстовыми (ASCII) файлами, двоичными файлами и любыми другими типами файлов. Значение битов в файле целиком определяется владельцем файла. Системе это безразлично. Имена файлов ограничены 255 символами.

    Для удобства файлы могут группироваться в каталоги. Каталоги хранятся на диске в виде файлов, и в значительной степени с ними можно работать как с файлами. Каталоги могут содержать подкаталоги, что приводит к иерархической файловой системе. Корневой каталог называется / и, как правило, содержит несколько подкаталогов. Символ / также используется для разделения имен каталогов, поэтому имя /usr/ast/x обозначает файл х, расположенный в каталоге ast, который в свою очередь находится в каталоге usr. Некоторые основные каталоги (находящиеся у вершины дерева каталогов) показаны в табл. 1.

    Существует два способа задания имени файла в системе Linux. Первый способ заключается в использовании абсолютного пути (absolute path), указывающего, как найти файл от корневого каталога. Пример абсолютного пути: /usr/ast/books/mos3/chap-10. Он сообщает системе, что в корневом каталоге следует найти каталог usr, затем в нем найти каталог ast, который содержит каталог books, в котором содержится каталог mos3, а в нем расположен файл chap-10.

    Абсолютные имена путей часто бывают длинными и неудобными. По этой причине операционная система Linux позволяет пользователям и процессам обозначить каталог, в котором они работают в данный момент, как рабочий каталог (working directory). Имена путей могут указываться относительно рабочего каталога. Путь, заданный относительно рабочего каталога, называется относительным путем (relative path).

    Таблица 1

    Некоторые важные каталоги, существующие в большинстве систем Linux

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

    В качестве примера рассмотрим ситуацию на рис.1,а. Фред и Лиза вместе работают над одним проектом, и каждому из них нужен доступ к файлам другого. Если рабочий каталог Фреда /usr/jred, то он может обращаться к файлу х в каталоге Лизы как /usr/lisa/x. Однако Фред может также создать новую запись в своем каталоге (рис.1,б), после чего он сможет обращаться к этому файлу просто как к х.

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

    В действительности это не совсем так. При создании каталога в нем автоматически создаются две записи, «.» и «..». Первая запись обозначает сам каталог. Вторая является ссылкой на родительский каталог, то есть каталог, в котором данный каталог числится как запись.

    Таким образом, из каталога /usr/fred к файлу Лизы х можно обратиться еще и при помощи использования пути../lisa/x. Кроме обычных файлов, Linux также поддерживает символьные специальные файлы и блочные специальные файлы. Символьные специальные файлы используются для моделирования последовательных устройств ввода-вывода, таких как клавиатуры и принтеры. Если процесс откроет файл /dev/tty и прочитает из него, то он получит введенные с клавиатуры символы. Если открыть файл/dev/lp и записать в него данные, то эти данные будут распечатаны на принтере. Блочные специальные файлы (обычно с такими именами, как /dev/hdl) могут использоваться для чтения и записи необработанных дисковых разделов, минуя файловую систему. При этом поиск байта номер k, за которым последует чтение, приведет к чтению k-го байта из соответствующего дискового раздела, игнорируя i-узел и файловую структуру.

    Рис.1. Примеры проектов: а — каталог создания ссылки; б – после создания ссылки

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

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

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

    Например, рассмотрим ситуацию, изображенную на рис.2,а. На данном рисунке показан жесткий диск, который мы будем называть С:, а также DVD, который мы будем называть D:. У каждого есть собственный корневой каталог и файлы. При таком решении пользователь должен помимо каталогов указывать также и устройство (если оно отличается от используемого по умолчанию).

    Например, чтобы скопировать файл х в каталог d (предполагая, что по умолчанию выбирается диск С:), следует ввести команду ср D:/x /a/d/x.

    Такой подход применяется в операционных системах Windows и VMS. Применяемое в операционной системе Linux решение заключается в том, чтобы позволить смонтировать один диск в дерево файлов другого диска. В нашем примере мы можем смонтировать ДВД в каталог /b, получая в результате файловую систему, показанную на рис. 2,б. Теперь пользователь видит единое дерево файлов и уже не должен думать о том, какой файл на каком устройстве находится.

    В результате приведенная выше команда примет вид ср /b/x /a/d/x, то есть все будет выглядеть так, как если бы файл копировался из одного каталога жесткого диска в другой каталог того же диска.

    Другое интересное свойство файловой системы Linux – блокировка (locking). В некоторых приложениях два и более процессов могут одновременно использовать один и тот же файл, что может привести к условиям гонки. Одно из решений данной проблемы заключается в том, чтобы создать в приложении критические области. Однако если эти процессы принадлежат независимым пользователям, которые даже не знакомы друг с другом, то такой способ координации действий, как правило, очень неудобен.

    Рис. 2. Пример монтирования жесткого диска и DVD привода: а — раздельные файловые системы; б — после монтирования

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

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

    Стандартом определены два типа блокировки: блокировка с монополизацией (exclusive locks) и блокировка без монополизации (shared locks). Если часть файла уже имеет блокировку без монополизации, то повторная попытка установка блокировки без монополизации на это место файла разрешается, но попытка установить блокировку с монополизацией будет отвергнута. Если же какая-либо область файла содержит блокировку с монополизацией, то любые попытки заблокировать любую часть этой области файла будут отвергаться, пока не будет снята блокировка. Для успешной установки блокировки необходимо, чтобы каждый байт в блокируемой области был доступен.

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

    На рис.3,а мы видим, что процесс А установил блокировку без монополизации на байты с 4-го по 7-й в некотором файле. Затем процесс В устанавливает блокировку без монополизации на байты с 6-го по 9-й (рис.3,б). Наконец, процесс С блокирует байты со 2-го по 11-й. Пока это блокировки без монополизации, они могут существовать одновременно. Теперь посмотрим, что произойдет, если процесс попытается получить блокировку с монополизацией на байт 9 (рис.3,в), блокируясь при неудаче блокировки.

    Две предыдущие блокировки перекрываются с этой блокировкой. Поэтому вызывающая сторона будет заблокирована и останется заблокированной до тех пор, пока оба процесса (В и С) не снимут свои блокировки.

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

    В качестве параметров этому системному вызову следует задать имя файла и режим защиты. Системный вызов creat не только создает новый файл, но также и открывает его для записи. Чтобы последующие системные вызовы могли получить доступ к файлу, успешный системный вызов creat возвращает небольшое неотрицательное целое число, называемое дескриптором файла (file descriptor) (fd в приведенном выше примере).

    Если системный вызов выполняется с уже существующим файлом, то длина этого файла уменьшается до 0, а все его содержимое теряется. Файлы можно также создавать при помощи вызова open с соответствующими аргументами.

    Рис. 3. Примеры блокировки процессов: а – файл с одной блокировкой; б – файл со второй блокировкой; в – третьей блокировкой

    Таблица 2

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

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

    Как и creat, системный вызов open возвращает дескриптор файла, который может быть использован для чтения или записи.

    Затем файл может быть закрыт при помощи вызова close, после чего дескриптор файла можно использовать повторно (для последующего creat или open). Системные вызовы creat и open всегда возвращают наименьший неиспользуемый в данный момент дескриптор файла.

    Некоторые системные вызовы для работы с файлами. В случае ошибки возвращаемое значение s равно -1, fd – дескриптор файла, position – смещение в файле. Параметры должны быть понятны без пояснений. Когда программа начинает выполнение стандартным образом, файловые дескрипторы 0, 1 и 2 уже открыты для стандартного ввода, стандартного вывода и стандартного потока сообщений об ошибках соответственно.

    Таким образом, фильтр (например, программа sort) может просто читать свои входные данные из файла с дескриптором 0, а писать выходные данные в файл с дескриптором 1, не заботясь о том, что это за файлы. Работа этого механизма обеспечивается оболочкой, которая проверяет, чтобы эти дескрипторы соответствовали нужным файлам (прежде чем программа начнет свою работу).

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

    Пример типичного вызова:

    n = read (fd. buffer, nbytes).

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

    Например, если перед чтением 1024 байтов указатель был установлен на 4096-й байт, то после успешного системного вызова read он будет автоматически перемещен на 5120-й байт. Указатель в файле можно переместить с помощью системного вызова Iseek, что позволяет при последующих системных вызовах read (или write) читать данные из файла (или писать их в файл) в произвольной позиции файла и даже за концом файла.

    Этот системный вызов назван Iseek, чтобы не путать его с теперь уже устаревшим, использовавшимся ранее на 16-разрядных компьютерах системным вызовом seek. У системного вызова Iseek три параметра: первый – это дескриптор файла, второй – позиция в файле, а третий сообщает, указывается ли эта позиция относительно начала файла, текущей позиции или конца файла. Возвращаемое системным вызовом Iseek значение представляет собой абсолютную позицию в файле после того, как указатель был изменен.

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

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

    Таблица 3

    Поля структуры, возвращаемой системным вызовом stat

    Системный вызов fstat – это то же самое, что и системный вызов stat, с той лишь разницей, что он работает с уже открытым файлом (имя которого может быть неизвестно), а не с путем.

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

    В канале sort <in | head -30 дескриптор файла 1 (стандартный вывод) в процессе, выполняющем программу sort, будет настроен оболочкой на запись в канал, а дескриптор файла 0 (стандартный ввод) в процессе, выполняющем программу head, будет настроен на чтение из канала. Программа sort просто читает из файла с дескриптором 0 (установлен на файл in) и пишет в файл с дескриптором 1 (канал), даже не зная о том, что оба эти файла перенаправлены. Если бы ввод и вывод не были перенаправлены, программа sort автоматически читала бы данные с клавиатуры и выводила бы их на экран (устройства по умолчанию). Подобным же образом, когда программа head считывает входные данные из файла с дескриптором 0, она получает данные, которые программа sort поместила в буфер канала (даже не зная о том, что используется канал). Вот хороший пример того, как простая концепция (перенаправление) плюс простая реализация (файлы с дескрипторами 0 и 1) дают мощный инструмент.

    Последний системный вызов в табл.2 – это fcntl Он используется для блокировки и разблокирования файлов, а также некоторых других специфических для файлов операций.

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

    Таблица 4

    Часто употребляемые системные вызовы

    Каталоги создаются и удаляются при помощи системных вызовов mkdir

    и rmdir соответственно. Каталог может быть уничтожен только когда он пуст. Некоторые системные вызовы, относящиеся к работе с каталогами. В случае ошибки возвращаемое значение s равно -1; of/’r – идентифицирует каталог; a dirent – представляет собой запись каталога. Параметры должны быть понятны без пояснений.

    Как было показано на рис.3, при создании ссылки на файл создается новая запись в каталоге, указывающая на существующий файл. Ссылка создается при помощи системного вызова link. В параметрах этого системного вызова указываются исходное и новое имя. Записи в каталоге удаляются системным вызовом unlink.

    Когда удаляется последняя ссылка на файл, файл также автоматически удаляется. Если для файла не было создано ни одной ссылки, то при первом же обращении к системному вызову unlink файл исчезнет.

    Рабочий каталог можно изменить при помощи системного вызова chdir. После выполнения этого системного вызова будут по-другому интерпретироваться относительные имена путей. Последние четыре системных вызова в табл.4 предназначены для чтения каталогов. Каталоги могут открываться, закрываться и читаться аналогично обычным файлам. Каждое обращение к системному вызову readdir возвращает ровно одну запись каталога (в фиксированном формате). Пользователям запрещено писать в каталоги (это делается, чтобы пользователи случайно не нарушили целостности системы). Файлы могут добавляться к каталогу при помощи системных вызовов creat и link, а удаляться с помощью системного вызова unlink. В операционной системе Linux нет способа перейти к конкретному файлу в каталоге, но есть системный вызов rewinddir, позволяющий начать читать открытый каталог с начала.

    Реализация файловой системы Linux. В этом разделе мы сначала рассмотрим поддерживаемые уровнем виртуальной файловой системы Virtual File System абстракции. VFS скрывает (от процессов и приложений верхнего уровня) отличия поддерживаемых в Linux файловых систем. Доступ к устройствам и другим специальным файлам также производится через уровень VFS. Затем мы опишем реализацию первой получившей широкое распространение файловой системы Linux под названием ext2 (вторая расширенная файловая система). После этого мы обсудим улучшения файловой системы ext3. Используется также множество других файловых систем. Все Linux-системы могут работать с большим количеством дисковых разделов, причем в каждом может быть своя файловая система.

    Виртуальная файловая система Linux. Для того чтобы приложения могли взаимодействовать с разными файловыми системами, реализованными на разных типах

    Файловые системы Linux: определение, структура, выбор, оптимизация

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

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

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

    Второе значение - это тип файловой системы, то есть то, как хранение данных (например, файлов, папок и т. Д.) Организовано на диске компьютера (жесткий диск, гибкий диск, CDROM и т. Д.) Или на раздел на жестком диске. Каждый тип файловой системы имеет свой собственный набор правил для управления выделением дискового пространства для файлов и для связывания данных о каждом файле (называемых метаданными ) с этим файлом, таких как его имя файла, каталог, в котором он находится. местонахождение, его разрешения и его дата создания.

    Пример предложения, использующего слово файловая система в первом смысле: «Алиса установила Linux с файловой системой, распределенной на двух жестких дисках, а не на одном жестком диске». Это относится к тому факту, что [вся иерархия каталогов] Linux может быть установлена ​​на одном диске или распределена по нескольким дискам, включая диски на разных компьютерах (или даже диски на компьютерах в разных местах).

    Пример предложения, использующего второе значение: «Боб установил Linux, используя только файловую систему ext3 вместо использования файловых систем ext2 и ext3."Это относится к тому факту, что одна установка Linux может содержать один или несколько типов файловых систем. Один жесткий диск может содержать один или несколько типов файловых систем (каждая по крайней мере в одном отдельном разделе), а файловая система одного типа может быть распространяться по нескольким жестким дискам.

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

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

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

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

    Существует существенная разница между тем, как пользователь видит файловую систему Linux (первое чувство), и тем, как ядро ​​(ядро системы Linux) фактически хранит файлы. Для пользователя файловая система представляет собой иерархическую структуру каталогов, содержащих файлы и другие каталоги (то есть подкаталоги). Каталоги и файлы идентифицируются по их именам. Эта иерархия начинается с единственного каталога с именем , корень , который представлен знаком «/» (косая черта).

    (Значение root и "/" часто сбивает с толку новых пользователей Linux. Это потому, что у каждого есть два разных использования. Другое значение root - это пользователь, имеющий административные привилегии на компьютере, в отличие от обычного пользователи, которые имеют только ограниченные привилегии для защиты безопасности системы. Другое использование «/» - это разделитель между каталогами или между каталогом и файлом, аналогично обратной косой черте, используемой в MS-DOS.)

    Стандарт иерархии файловой системы (FHS) определяет основные каталоги и их содержимое в Linux и других Unix-подобных операционных системах.Все файлы и каталоги появляются в корневом каталоге, даже если они хранятся на разных физических устройствах (например, на разных дисках или на разных компьютерах). Некоторые из каталогов, определенных FHS: / bin (двоичные файлы команд для всех пользователей), / boot (файлы загрузчика, такие как ядро), / home (домашние каталоги пользователей), / mnt (для монтирования компакт-диска или гибкого диска). ), / root (домашний каталог для пользователя root), / sbin (исполняемые файлы, используемые только пользователем root) и / usr (где устанавливается большинство прикладных программ).

    Однако для ядра Linux файловая система плоская. То есть, он (1) не имеет иерархической структуры, (2) различает каталоги, файлы или программы или (3) идентифицирует файлы по именам. Вместо этого ядро ​​использует инодов для представления каждого файла.

    Индекс на самом деле является записью в списке индексов, который называется списком индексов . Каждый индексный дескриптор содержит информацию о файле, включая (1) его номер inode (уникальный идентификационный номер), (2) владельца и группу, связанную с файлом, (3) тип файла (например, является ли он обычным файлом или каталог), (4) список прав доступа к файлу, (5) время создания, доступа и модификации файла, (6) размер файла и (7) адрес на диске (т.е.е. место на диске, где физически хранится файл).

    Номера inode для содержимого каталога можно увидеть, используя параметр -i со знакомой командой ls (то есть, список) в окне терминала:

    ls -i

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

    df можно использовать отдельно, но часто бывает удобнее добавить параметр -m , чтобы отображать размеры в мегабайтах, а не в килобайтах по умолчанию:

    df -m

    Столбец, показывающий тип каждой из этих файловых систем, может быть добавлен в таблицу файловых систем, созданную вышеуказанной командой, с помощью параметра --print-type , т.е.э .:

    df -m - тип печати

    Эта команда создает столбец с надписью Тип . Для установки Red Hat Linux на домашний компьютер большинство записей в этом столбце, вероятно, будут ext3 и / или ext2 .

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

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

    В настоящее время широко используются несколько собственных файловых систем Linux, включая ext2, ext3, ReiserFS, JFS и XFS. Дополнительные собственные файловые системы находятся на разных стадиях разработки.

    Эти файловые системы отличаются от файловых систем DOS / Windows по ряду причин, включая (1) разрешение важным системным папкам занимать несколько разделов и несколько жестких дисков, (2) добавление дополнительной информации о файлах, включая права собственности и разрешения и (3) создание количество стандартных папок для хранения важных компонентов операционной системы.

    Первой файловой системой Linux была minix, которая была заимствована из ОС Minix. Линус Торвальдс принял эту файловую систему, потому что это была эффективная и относительно безошибочная часть существующего программного обеспечения, которое откладывало необходимость разработки новой файловой системы с нуля.

    Однако minix не подходил для использования на жестких дисках Linux по нескольким причинам, включая максимальный размер раздела всего 64 МБ, короткие имена файлов и единственную временную метку. Но minix может быть полезен для гибких дисков и RAM-дисков, потому что его низкие накладные расходы иногда позволяют хранить больше файлов, чем это возможно с другими файловыми системами Linux.

    Расширенная файловая система, ext, была представлена ​​в апреле 1992 года. С максимальным размером раздела 2 ГБ и максимальным размером имени файла 255 символов она сняла два самых больших ограничения minix. Однако по-прежнему не было поддержки отдельных временных меток доступа, модификации inode и данных. Кроме того, использование связанных списков для отслеживания свободных блоков и дескрипторов привело к тому, что списки стали несортированными, а файловая система стала фрагментированной.

    Вторая расширенная файловая система (ext2) была выпущена в январе 1993 года.Это была переписанная версия ext, которая включает (1) улучшенные алгоритмы, которые значительно увеличили его скорость, (2) дополнительные отметки даты (например, дату последнего доступа, дату последнего изменения inode и дату последнего изменения данных) и возможность отслеживать состояние файловой системы. Ext2 поддерживает специальное поле в суперблоке , которое указывает состояние файловой системы: чистая или грязная. Грязная файловая система запустит утилиту для сканирования файловой системы на наличие ошибок.Ext2 также поддерживает максимальный размер файла 4 ТБ (1 терабайт равен 1024 гигабайтам). Следовательно, он полностью заменил ext, поддержка которой была удалена из ядра Linux.

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

    Журналирующие файловые системы

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

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

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

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

    Ext3 был интегрирован в ядро ​​Linux начиная с версии 2.4.16 и стал файловой системой по умолчанию в Red Hat и некоторых других дистрибутивах.По сути, это расширение ext2, к которому была добавлена ​​возможность журналирования, и оно обеспечивает такую ​​же высокую степень надежности благодаря исчерпывающе проверенной на практике природе лежащего в его основе ext2. Также имеется возможность преобразования разделов ext2 в ext3 и наоборот без необходимости резервного копирования данных и повторного разбиения на разделы. При необходимости раздел ext3 может быть даже смонтирован более старым ядром, не поддерживающим ext3; это потому, что он будет рассматриваться как просто еще один нормальный раздел ext2, и журнал будет проигнорирован.

    ReiserFS, разработанная Хансом Рейзером и другими, была фактически первой файловой системой с журналированием, добавленной в ядро ​​Linux. Как и в случае с ext2, он был разработан с нуля для использования в Linux. Однако, в отличие от ext3, он также был изначально разработан как журналируемая файловая система, а не как надстройка к существующей файловой системе, и поэтому широко считается самой продвинутой из исходных журнальных файловых систем Linux. Возможности включают высокую скорость, отличную стабильность и способность упаковывать небольшие файлы в меньшее дисковое пространство, чем это возможно со многими другими файловыми системами.

    Новая версия ReiserFS, получившая обозначение Reiser4, была запланирована к выпуску в первой половине 2004 года. Это полная переработка версии 3, которая, как утверждается, приведет к значительным улучшениям в производительности, включая более высокие скорости, возможность установки большего количества процессоров, встроенное шифрование и простота настройки.

    JFS была первоначально разработана IBM в середине 1990-х годов для ее операционной системы AIX Unix, а затем была перенесена на операционную систему OS / 2 компании. Впоследствии IBM изменила лицензирование реализации OS / 2 на открытый исходный код, что привело к ее поддержке в Linux.В настоящее время JFS в основном используется на корпоративных серверах IBM, а также является хорошим выбором для систем с мультизагрузкой Linux и OS / 2.

    XFS была разработана в середине 1990-х годов компанией Silicon Graphics (SGI) для своих 64-битных серверов IRIX Unix. Эти серверы были спроектированы с учетом передовых технологий обработки графики и обладают способностью размещать файлы огромных размеров. Компания также преобразовала XFS в систему с открытым исходным кодом, после чего она также была принята в Linux. Поскольку это 64-разрядная файловая система, XFS имеет ограничения по размеру в миллионы терабайт (в отличие от все еще значительного ограничения ext2 в 4 ТБ).

    Большинство дистрибутивов Linux, поставляемых с ядрами 2.4.x и новее, поддерживают ext2, ext3 и ReiserFS. Поддержка JFS была добавлена ​​в ядра 2.4.20 и 2.5.6, а XFS была добавлена ​​в ядро ​​2.5.36. Поддержка JFS и XFS может быть добавлена ​​в более ранние ядра, загрузив соответствующие исправления с соответствующих веб-сайтов и скомпилировав их как модуль или в ядро. Затем разделы можно преобразовать путем резервного копирования данных, создания новой файловой системы и последующего восстановления данных.

    Поддерживаемые сторонние файловые системы

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

    Среди наиболее часто используемых файловых систем ПК - FAT (таблица размещения файлов). Это основная файловая система для MS-DOS и Microsoft Windows 95, 98 и ME, а также поддерживается Windows NT, 2000 и XP и большинством других операционных систем.Первый вариант, FAT16, был стандартной файловой системой Microsoft до Windows 95, а последующий FAT32 является стандартом для Windows 98 и Windows ME. Linux поддерживает как чтение, так и запись в FAT16 и FAT32, и их основное использование в Linux - это обмен файлами с Microsoft Windows в системах с двойной загрузкой и с дискет.

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

    FAT не могут содержать такую ​​информацию о файлах, как право собственности и разрешения. Кроме того, разделы FAT16 ограничены до 2 ГБ. Хотя теоретический максимальный размер разделов FAT32 составляет 8 ТБ, scandisk Windows 98 (утилита проверки диска) поддерживает только 128 ГБ, а Windows 2000 не позволяет создавать диски FAT32 размером более 32 ГБ.

    NTFS - это замена Microsoft для FAT. Потомок HPFS (родная файловая система для операционной системы IBM OS / 2), NTFS была предназначена для устранения ограничений файловой системы FAT (таких как низкая стабильность) при добавлении новых функций, которых нет в HPFS. Из операционных систем Windows к нему могут получить доступ только NT, 2000 и XP. В Linux NTFS в настоящее время поддерживается только в режиме чтения и только в некоторых дистрибутивах.

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

    ISO 9660, выпущенный в 1988 году отраслевым комитетом High Sierra, представляет собой стандартную файловую систему для компакт-дисков. Почти все компьютеры с приводами CDROM могут читать файлы, записанные в ISO 9660, независимо от их операционной системы.

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

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

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

    Для загрузочного и корневого разделов может быть выгодно использовать файловую систему ext2 или ext3, потому что это позволит загрузиться в аварийной ситуации даже со старым ядром.Для других разделов Linux обычно лучше всего подходят ext3 или ReiserFS: в первом случае подчеркивается совместимость с ext2, а во втором - в первую очередь производительности. Если требуется, чтобы разделы были доступны как для Linux, так и для Microsoft Windows, следует выбрать FAT.

    На вопросы о том, какие файловые системы обеспечивают лучшую производительность диска и минимизируют время процессора, ответить нелегко. Некоторые исследования показывают, что XFS и JFS обеспечивают лучшую пропускную способность с небольшими файлами (например.g., 100 МБ), а ext2, ext3 лучше всего подходят для файлов большего размера (например, 1 ГБ). Однако эта ситуация может измениться с появлением новой версии ReiserFS, заявляющей о значительном повышении скорости и масштабируемости.

    Выбор журналируемой файловой системы может повлиять на доступность дискового пространства из-за количества места, необходимого для журнала. Это очень важно для небольших дисков, таких как Zip-диски. Например, на Zip-диске объемом 100 МБ ext3fs и XFS выделяют по 4 МБ для своих журналов, тогда как ReiserFS выделяет на журнал в несколько раз больше.

    Оптимизация файловых систем Linux

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

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

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

    Другой тип параметра - количество блоков, автоматически выделяемых для использования пользователем root. Например, для ext2 и ext3 значение по умолчанию - пять процентов. Это может быть чрезмерным для больших или относительно некритичных разделов, а уменьшение этого значения может сделать небольшой объем дополнительного дискового пространства доступным для пользователей без полномочий root.

    В отличие от файловых систем, используемых в Microsoft Windows, фрагментация файлов обычно не является серьезной проблемой для файловых систем Linux из-за их фундаментальных различий в конструкции.(Фрагментация означает, что части файлов разбросаны в случайных, несмежных местах на диске, что приводит к снижению скорости и надежности.) Таким образом, в то время как операционные системы Microsoft Windows включают утилиты для дефрагментации и поощряют их регулярное использование, такие утилиты сложны найти для Linux. Когда пользователи Linux, вышедшие из мира Windows, сталкиваются с низкой производительностью, они часто склонны приписывать это фрагментации; но это гораздо более вероятно из-за нехватки памяти (и использования относительно медленного дискового пространства подкачки вместо ОЗУ) и / или запуска слишком большого количества процессов (т.е.е., программы, работающие в фоновом режиме).

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

    Создано 16 апреля 2004 г.Copyright © 2004. Все права защищены.

    структур файловой системы FAT - pling.com

    a { цвет фона: # FF8743! important; цвет: #ffffff! important; } # category-tree-container ul li a: hover { цвет фона: # FF8743! important; цвет: #ffffff! important; } # category-tree-container ul li a { дисплей: блок; ширина: 100%; плыть налево; цвет фона: прозрачный! важно; цвет: # 636564! important; отступ слева: 3 пикселя; отступ справа: 40 пикселей; положение: относительное; -webkit-transition: все.2с легкость выхода; -moz-transition: все .2s разгрузка; -o-переход: все .2s легкость выхода; переход: все .2s легкость выхода; } .absolute-left { слева: 540 пикселей; } .absolute-right { вправо: 30 пикселей; } .header_cat_link { слева: 263px; } .nav-divider-pling { цвет: # E2E2E2; } .nav-pills> li + li { маржа слева: 10 пикселей; } .dropdown-menu> li> a { размер шрифта: 12 пикселей; } .metamenu .dropdown: hover .dropdown-menu { маржа слева: -16 пикселей; } .metamenu .dropdown-menu li { ширина: 100%; } .metamenu ul.dropdown-menu li span { цвет: # 999; } .metamenu ul.dropdown-menu li.active span { цвет: #eee; } @media (max-width: 767 пикселей) { header .logo-header { ширина: 100%; выравнивание текста: центр; положение: относительное; высота: 100 пикселей; плыть налево; верх: 0; } заголовок div.container.header { высота: 180 пикселей; отступ: 0; } header .container.header ul.menu-nav-tabs { справа: 0; } header .container.header section.container # first-container { отступ: 0; высота: 180 пикселей; маржа: 0; ширина: 100%; } header .container.header section.container # second-container { позиция: абсолютная; внизу: 20 пикселей; отступ: 0; } заголовок.container.header section.container # second-container .wrapper { отступ: 0; ширина: 100%; выравнивание текста: центр; } header .container.header section.container # second-container .wrapper .header_cat_link { положение: относительное; слева: 0; } header .container.header section.container section.wrapper { отступ: 0; } header # page_header nav # nav-top { маржа: 0; ширина: 100%; плыть налево; высота: 80 пикселей; положение: относительное; } header # page_header nav # nav-top>.pull-right { высота: 100%; ширина: 100%! важно; } header # page_header nav # nav-top> .pull-right .menu { позиция: абсолютная; внизу: 5 пикселей; справа: 0; z-индекс: 999; } header .container.header nav #search { позиция: абсолютная; слева: 0; внизу: 0; ширина: 50%; маржа: 5 пикселей; } заголовок.container.header nav #search input.content-search { ширина: 100%; } } ]]>

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

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

    Мы уже обсуждали структуру каталогов в Slackware Linux. Вы могут находить нужные вам файлы и каталоги. Но есть еще кое-что к файловой системе, а не только к структуре каталогов.

    Linux - многопользовательская операционная система. Каждый аспект системы многопользовательский, даже файловая система. В системе хранится такая информация, как кто владеет файлом и может его прочитать.Есть и другие уникальные особенности файловые системы, такие как ссылки и монтирования NFS. В этом разделе объясняется это, а также многопользовательские аспекты файловой системы.

    Файловая система хранит информацию о владельце для каждого файла и каталога на система. Сюда входит, какой владелец и группа владеют конкретным файлом. Самый простой способ увидеть эту информацию - использовать ls . команда:

     $  ls -l / usr / bin / wc 
       -rwxr-xr-x 1 корневой бункер 7368 30 июля 1999 г. / usr / bin / wc
        

    Нас интересуют третий и четвертый столбцы.Они содержат имя пользователя и имя группы, которой принадлежит этот файл. Мы видим, что пользователь Этот файл принадлежит «root» и группе «bin».

    Мы можем легко изменить владельцев файлов с помощью chown (1) (что означает «сменить владельца») и chgrp (1) (что означает «изменить группа ») команды. Чтобы изменить владельца файла на «Демон», мы будем использовать chown :

     #  chown daemon / usr / bin / wc 
        

    Чтобы изменить владельца группы на «root», мы будем использовать chgrp :

    Мы также можем использовать chown для указания пользователя и группы владельцы файла:

     #  chown daemon.корень / USR / бен / туалет 
        

    Владение файлом - очень важная часть использования системы Linux, даже если вы единственный пользователь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *