Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_методичка.doc
Скачиваний:
103
Добавлен:
11.03.2016
Размер:
861.7 Кб
Скачать

Логическая модель диска

Логическая модель диска основана на том, что вся совокупность секторов диска представляется в виде линейного пространства. Для распределения дисковой памяти необходима единица размещения. Единицу размещения дисковой памяти принято называть блоком (в системах типа Windows– кластером).Блок включает один или несколько секторов. Например, в ОСLinux, установленной на сервереfpm2, размер блока (по умолчанию) равен 1 килобайту, т. е. включает два сектора.

В

Раздел 1

Раздел i

Раздел k

Рис. 2.1.Разбиение дискового пространства на разделы

се линейное дисковое пространство обычно делится на несколько частей –разделов (partitions). В одинраздел объединяется группа смежных цилиндров. Разделение всего дискового пространства наразделыполезно по нескольким причинам. Например, это позволяет структурировать хранение данных и исключить (уменьшить) «дальние перемещения» головок чтения/записи и тем самым повысить скорость выполнения операций чтения и записи. Очевидно, что для каждого раздела следует хранить информацию о его начале и конце (т. е. номера первого и последнего из используемых в нем цилиндров). Пример разделения логической модели диска на разделы приведен на рис. 2.1.

Общие черты файловых систем Unix / Posix-совместимых ос

Файловые системы обычно размещаются в отдельных дисковых разделах.

Примечание. Дисковые разделы создаются не только для размеже-вания, но и для объединения, в результате которого части различных физических дисков предстают перед системой в качестве непрерывного дискового пространства, на котором может быть создана единая файловая система. Так, понятие RAID (дисковый массив)появилось из потребности представить набор данных в виде единого дискового пространства. Рассмотрим RAIDlevel1, называемый также режимом зеркалирования (mirroring), с которым мы встретимся при выполнении данной лабораторной работы. RAIDlevel1 – это простое дублирование записываемых данных на двух дисках в одноименных разделах (dm-k, k=1, 2,…). Такой дисковый массив обладает стопроцентной избыточностью: при выходе из строя одного диска вся информация сохраняется на диске-дублере. Очевидно, что число дисков должно быть четным (у нас их два:sdaиsdb) и объем их должен быть одинаков. Разумеется, ни о каком росте производительности в массивах первого уровня речи идти не может. Таким образом, если не брать во вниманиенадежность, то RAIDlevel1 можно рассматривать как «обычную» файловую систему.

Фактически все файловые системы для Posix-совместимых ОС организованы сходным образом и в основе их лежит разделение раздела на две области (рис. 2.2). В областиметаданных расположены три типа служебной информации.

Раздел i

Загрузочный блок

С

Область метаданных

уперблок

Индексные дескрипторы

Б

Область данных

локи данных

(файлы и каталоги)

Рис. 2.2.Организация файловой системы (s5) в разделе диска

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

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

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

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

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

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

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

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

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

Таким образом, основными проблемами, которые возникают при работе с магнитными дисками, являются:

  1. скорость работы с файлами (дальнее перемещение головок чтения/записи);

  2. эффективность использования дисковой памяти (внутренняя фрагментация). Файлы могут занимать порядка 5…10 % целого блока; получается, что оставшаяся часть блока остается незанятой;

  3. эффективность восстановления файловой системы (для решения этой проблемы используется концепция журналирования);

  4. маленькие файлы (0,5 килобайт).

Решения перечисленных выше проблем в различных файловых системах приведены в табл. 2.1.

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

Таблица 2.1

Номер проблемы

s5

ufs

ext2

ext3

XFS

ReiserFS

Примечания

1

Концепция группы цилиндров

Концепция группы блоков

Концепция группы блоков

Концепция равных по размеру линейных областей

Единая общедос-тупная среда

2

Концепция фрагмента

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

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

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

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

3

Концепция журналирования

Концепция журналирования

Концепция журналирования

4

Работа с маленькими файлами

Решение заключается в хранении маленьких файлов в области метаданных

Разметка диска на разделы

Структура данных, несущая информацию о логической организации диска, вместе с небольшой программой, с помощью которой можно найти и загрузить в оперативную память программу загрузки ОС (в Intel-системах), получила названиеГлавной загрузочной записи (MasterBootRecord,MBR).MBRрасполагается в самом первом секторе, т. е. в секторе с физическим адресом0-0-1. ВMBRрасположена также таблица разбиения диска на разделы (partition table). Эта таблица разделов содержит четыре записи по 16 байт для 4 разделов, которые принято называтьпервичными. Поскольку вMBRтолько 4 строки для задания разделов, числопервичных разделов на диске с самого начала (со времен царя ГОРОХА) ограничено:их не может быть более четырех. Когда стало ясно, что четырех разделов мало, были «изобретены»логические разделы.Для этого один из первичных разделов объявляетсярасширенным и в нем создаютсялогические разделы.

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

В ОС Linux (и вообще в Unix-совместимых ОС) диски и их разделы предстают перед пользователем как файлы особого типа – файлы устройств. Это касается и любых других устройств. Имена этих файлов формируются по определенным правилам. Так, обычные IDE-диски (диски с интерфейсом Parallel ATA, PATA, до недавнего времени наиболее распространенные в пользовательских машинах) именуются /dev/hda, /dev/hdb, … и так далее, так что собственно имена IDE-дисков – hda, hdb, а /dev – это каталог, предназначенный специально для хранения файлов устройств. Сегодня диски PATA постепенно вытесняются накопителями с интерфейсом Serial ATA (SATA), которые предстают перед системой как SCSI-диски и именуются так: /dev/sda, /dev/sdb, и так далее. Дисковые разделы идентифицируются порядковыми номерами. Цифры с 1 по 4 отведены под первичные разделы, а логические разделы нумеруются начиная с цифры 5. Таким образом, если на единственном IDE-диске мы имеем два первичных раздела, второй из которых определен как расширенный и поделен на три логических раздела, то соответствующие им устройства будут именоваться так:

/dev/hda1 – первичный раздел;

/dev/hda2 – первичный раздел, определенный в качестве расширенного;

/dev/hda5, /dev/hda6, /dev/hda7 – логические разделы.

Для первого диска SATA в такой ситуации имена файлов устройств разделов будут именоваться так:

/dev/sda1 – первичный раздел;

/dev/sda2 – первичный раздел, определенный в качестве расширенного;

/dev/sda5, /dev/sda6, /dev/sda7 – логические разделы.

Для режима зеркалирования (RAID level1) при наличии двух дисков sda иsdbв такой же ситуации имена файлов устройств разделов будут именоваться так:

/dev/dm-1 – первичный раздел;

/dev/dm-2 – первичный раздел, определенный в качестве расширенного;

/dev/dm-5, /dev/dm-6, /dev/dm-7 – логические разделы.