Если эта таблица каким-либо образом повредится, то все файлы
останутся в сохранности (испорченная таблица разделов может быть
исправлена при помощи программы fdisk).
4.5.2 Расширенные и логические разделы
Изначально, в схеме разделения жесткого диска в PC
допускалось использование только четырех разделов. Но вскоре этого
оказалось недостаточно, частично по причине того, что многим для
- 36 -
работы требуется более четырех операционных систем (например,
Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT и т.д.),
но в основном из-за того, что одной системой используется
несколько разделов. Например, в системе Linux swap-область чаще
всего размещается в отдельном разделе (а не в основном разделе
Linux) для повышения скорости обмена (см. ниже).
Для решения этой проблемы была разработана схема,
использующая расширенные разделы. Она позволяет разбивать основной
раздел на подразделы. Основной раздел, разбитый таким образом,
называется расширенным разделом, а подразделы называются
логическими разделами. Они функционируют так же, как и основные
разделы, различие состоит в схеме их создания.
Ниже дан пpимеp pазбиения жеского диска на pазделы. Весь диск
разбит на три основных раздела, второй из которых разбит на два
логических. Часть диска не используется вообще. Весь диск, как
целое, и каждый основной раздел имеют свой загрузочный сектор.
иммммммммммммммммммммммммммммммммммммммv
· MBR ·
лмммммммммммммммммммммммммммммммммммммм¦ддддддддддддд
· Загрузочный сектор ·
·--------------------------------------· Основной
· ·
· Область данных раздела · раздел
· ·
лмммммммммммммммммммммммммммммммммммммм¦ддддддддддддд
· Загрузочный сектор · Ё
·дддддддддддддддддддддддддддддддддддддд· Ё
· Неиспользуемый загрузочный сектор · ЛогическийЁ
·--------------------------------------· Ё
· · раздел Ё
· Область данных раздела · Ё
· · Ё Расширенный
·дддддддддддддддддддддддддддддддддддддд·дддддддддддЇ
· Неиспользуемый загрузочный сектор · Ё раздел
·--------------------------------------· ЛогическийЁ
- 37 -
· · Ё
· Область данных раздела · раздел Ё
· · Ё
лмммммммммммммммммммммммммммммммммммммм¦ддддддддддддд
· ·
· Неиспользуемое дисковое пространство ·
· ·
лмммммммммммммммммммммммммммммммммммммм¦ддддддддддддд
· Загрузочный сектор ·
·--------------------------------------· Основной
· ·
· Область данных раздела · раздел
· ·
хмммммммммммммммммммммммммммммммммммммм№ддддддддддддд
4.5.3 Типы разделов
Таблицы разделов (одна находится в MBR, другие используются
для расширенных разделов) содержат один байт для каждого раздела,
который указывает тип раздела. Это позволяет определить
операционную систему, которая использует раздел или для чего он
используется во избежание случайного размещения двух систем на
одном разделе. Однако, в действительности, операционные системы
игнорируют байт типа раздела. Например, система Linux вообще не
имеет представления о его существовании. Хуже того, некоторые
системы неправильно его интерпретируют (по крайней мере, некоторые
версии DR-DOS игнорируют самый важный бит этого байта, в отличие
от других).
Не существует никаких стандартов, касающихся значений этих
байтов, хотя некоторые общепринятые значения приведены в таблице
ниже. Такую же информацию предоставляет программа Linux fdisk.
0 пустой раздел 40 Venix 80286 94 Amoeba BBT
1 DOS 12-битная FAT 51 Novell a5 BSD/386
2 XENIX root 52 Microport b7 BSDI fs
3 XENIX usr 63 GNU HURD b8 BSDI swap-область
- 38 -
4 DOS 16-бит (<32Мб) 64 Novell c7 Syrinx
5 расширенный 75 PC/IX db CP/M
6 DOS 16-бит (>=32Мб) 80 Old MINIX e1 DOS
7 OS/2 HPFS 81 Linux/MINIX e3 DOS r/o
8 AIX 82 Linux swap-область f2 DOS дополнительный
9 AIX загрузочный 83 Linux ff BBT
a OS/2 загрузочный 93 Amoeba
4.5.4 Разделение жесткого диска
Существует много программ, позволяющих создавать и удалять
разделы. У большинства операционных систем имеются свои
собственные и разумнее всего пользоваться именно такими
программами. Чаще всего эта программа называется fdisk (как и в
случае Linux). Особенности работы с ней рассмотрены в ее
руководстве. Команда cfdisk подобна fdisk, только в первой
используется полноэкранный интерфейс.
При pаботе с IDE дисками, загрузочный раздел (раздел, в
котором находятся файлы, используемые при загрузке и само ядро)
должен полностью располагаться в пределах первых 1024 цилиндров,
потому как во время загрузки работа с диском происходит через BIOS
(перед переходом системы в защищенный режим), а BIOS не может
оперировать с цилиндрами, номер которых больше, чем 1024. Иногда
представляется возможным использование загрузочного раздела, лишь
частично расположенного в пределах первых 1024 цилиндров. Данный
метод работает до тех пор, пока все файлы, считываемые посредством
BIOS, находятся в пределах 1024 цилиндров. Так как это сделать
довольно сложно, то пpименение этого метода не рекомедуется.
Сложно предугадать, когда после дефрагментации или сбрасывании
содержимого буфера на диск система перестанет загружаться. Поэтому
следует удостовериться в том, что загрузочный раздел расположен в
пределах первых 1024 цилиндров.
Некоторые последние версии BIOS и недавние модели IDE дисков
в действительности позволяют pаботать с цилиндрами, номер которых
превышает 1024.
- 39 -
Каждый раздел должен содержать четное количество секторов,
так как в системе Linux используются блоки размером в 1 Кб, т.е.
два сектора. Нечетное количество секторов приведет к тому, что
последний из них будет неиспользован. Это ни на что не влияет, но
пpи запуске fdisk будет выдано пpедупpеждение.
При изменении размера раздела обычно требуется сначала
сделать резервную копию всей необходимой информации, удалить
раздел, создать новый раздел, а затем восстановить всю сохраненную
информацию на новый раздел. Хотя существует программа для MS-DOS
под названием fips, которая позволяет изменять объем раздела без
резервного копирования, но для других файловых систем эту опеpацию
необходимо пpоизводить.
4.5.5 Файлы устройств и разделы
Каждому основному и расширенному разделу соответствует
отдельный файл устpойства. Существует соглашение для имен подобных
файлов, которое состоит в добавлении номера раздела к имени файла
самого диска. 1-4 разделы являются основными (вне зависимости от
того, сколько существует основных pазделов), а 5-8 - логическими
(вне зависимости от того, к какому основному разделу они
относятся). Например, /dev/hda1 соответствует первому основному
разделу первого IDE жесткого диска, а /dev/sdb7 - третьему
расширенному разделу второго SCSI диска.
4.6 Файловые системы
4.6.1 Что такое файловая система?
Файловая система - это методы и структуры данных, которые
используются операционной системой для хранения файлов на диске
или его разделе. О файловой системе также говорят, ссылаясь на
раздел или диск, используемый для хранения файлов или тип файловой
системы.
Нужно видеть разницу между диском или разделом и
- 40 -
установленной на нем файловой системой. Некоторые программы
(например, программы установки файловой системы) при обращении к
диску или разделу используют прямой доступ к секторам. Если на
этом месте была файловая система, то она будет серьезно
повреждена. Большинство программ взаимодействуют с диском
посредством файловой системы, и, следовательно, их работа будет
нарушена, если на разделе или диске никакая система не установлена
(или тип файловой системы не соответствует требуемуму).
Перед тем, как раздел или диск могут быть использованы в
качестве файловой системы, она должна быть инициализирована, а
требуемые данные перенесены на этот диск. Этот процесс называется
созданием файловой системы.
У большей части файловых систем UNIX сходная структура, а их
некоторые особенности очень мало различаются. Основными понятиями
являются: суперблок, индексный дескриптор (inode), блок данных,
блок каталога и косвенный блок. В суперблоке содержится информация
о файловой системе в целом, например, ее размер (точная информация
зависит от типа файловой системы). В индексном дескрипторе
хранится вся информация о файле, кроме его имени. Имя файла
хранится в блоке каталога, вместе с номером дескриптора. Запись
каталога содержит имя файла и номер индексного дескриптора
соответствующего файла. В этом дескрипторе хранятся номера
нескольких блоков данных, которые используются для хранения самого
файла. В inode есть место только для нескольких номеров блоков
данных, однако, если требуется большее количество, то пространство
для указателей на блоки данных динамически выделяется. Такие блоки
называются косвенными. Для того, чтобы найти блок данных, нужно
сначала найти его номер в косвенном блоке.
В файловых системах UNIX обычно имеется возможность создания
дыр в файлах (это можно сделать с помощью команды lseek(2), см.
руководство). Это означает, что файловая система предоставляет
ложную информацию о том, что в каком-то месте в файле содержатся
нулевые байты, но в действительности для этого не выделяются
сектора (это означает, что файл будет занимать несколько меньше
места на диске). Это часто используется особенно в небольших
- 41 -
двоичных программах, библиотек Linux, в некоторых базах данных и в
других отдельных случаях. (Дыры реализуются хранением специального
значения в косвенном блоке или индексном дескрипторе вместо адреса
блока данных. Это специальное значение показывает, что для данной
части файла блоки данных не размещены и, следовательно, что в
файле есть дыра.)
Использование дыр достаточно эффективно. На компьютере с
общим дисковым пространством в 200 Мб, простые измерения