Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная
  2. Linux: Введение
  3. Работа с внешними устройствами

Разметка диска и именование устройств

В начале лекции говорилось о том, что младший номер устройства, соответствующего жёсткому диску, обычно указывает на определённый раздел этого диска. Поначалу Мефодию казалось, что смысла «пилить» диск на несколько разделов нет никакого: известно, что один большой раздел файловой системы Linux3 вмещает чуть больше данных, чем несколько маленьких того же объёма. Кроме того, разбивая диск на разделы, можно не предугадать подходящие размеры этих разделов, и тогда размещение на них файловой системы Linux окажется делом нелёгким, если вообще возможным, так как структура дерева каталогов Linux строго определена стандартом FHS (см. лекцию Структура файловой системы).

Для некоторых других файловых систем, например, для vfat, это неверно.

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

Впрочем, в том же FHS весьма наглядно обоснована необходимость разнесения всего дерева каталогов по разным разделам, каждый из которых будет иметь собственную файловую систему. Каталоги сильно различаются по тому, как часто приходится в них записывать, насколько надёжность хранения данных в них важнее быстродействия и насколько ситуация переполнения файловой системы опасна и может помешать работе. Поэтому стоит каталог /tmp, требущий очень частой записи, но не требующий надёжного хранения данных после перезагрузки, держать не на том же разделе, что и корневую файловую систему, запись в которую происходит редко (в каталог /etc), но требует повышенной надёжности. В отдельный раздел можно поместить весь каталог /usr, так как он вообще не требует операций записи. Наконец, такие каталоги, как /var или /home, суммарный объём файлов в которых с трудом поддаётся контролю со стороны системы, тоже не следует размещать на том же разделе, что и корневую файловую систему, переполнение которой может быть болезненно воспринято Linux.

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

Разметка диска IBM-совместимого компьютера

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

Разбиение диска на разделы — дело (теоретически) несложное: какая-то часть диска должна быть отведена под таблицу разделов, в которой и будет написано, как разбит диск. Стандартная таблица разделов для диска IBM-совместимого компьютера — HDPT (hard disk partition table) — располагается в конце самого первого сектора диска, после предзагрузчика (master boot record, MBR) и состоит из четырёх записей вида «тип начало конец», описывающих очередной раздел диска (если раздела нет, поле тип устанавливается в 0). Разделы, упомянутые в HDPT диска, принято называть основными (primary partition). Устройство Linux, соответствующее первому диску компьютера, обычно называется /dev/hda (hard disk «a»). Второй диск получает имя hdb, третий — hdc и так далее. На типичном IBM-совместимом компьютере такое же имя получит и лазерный накопитель. Часто бывает, что жёсткий диск — первый в системе (hda), а лазерный накопитель — третий (hdc), второго же вовсе нет. Устройства, соответствующие основным разделам диска, называются /dev/hdбукваномер, для первого диска — от hda1 до hda4. Просмотреть список разделов можно с помощью команды fdisk -l.

Совмещение нескольких схем разметки

На той самой — двухсистемной — машине fdisk обнаружила пятый, шестой и седьмой разделы, однако не показала ни третий, ни четвёртый:

[root@localhost root]# fdisk -l
 Disk /dev/hda: 2147 MB, 2147483648 bytes
 128 heads, 63 sectors/track, 520 cylinders
 Units = cylinders of 8064 * 512 = 4128768 bytes
   Device Boot      Start         End      Blocks   Id  System
 /dev/hda1   *           1          25      100768+   6  FAT16
 /dev/hda2              26         520     1995840    5  Extended
 /dev/hda5              26         282     1036192+  83  Linux
 /dev/hda6             283         334      209632+  82  Linux swap
 /dev/hda7             335         520      749920+  83  Linux

Пример 6. Просмотр таблицы разделов жёсткого диска

Дело в том, что четырёх разделов редко когда бывает достаточно. Куда же помещать дополнительные поля таблицы разбиения? Создатели IBM PC предложили универсальный способ: один из четырёх основных разделов объявляется расширенным (extended partition); он, как правило, занимает всё оставшееся пространство диска. Расширенный раздел разбивается на подразделы по тем же правилам, что и весь диск: в самом его начале заводится HDPT с четырьмя записями (соответствующие им разделы называются дополнительными, secondary partition), которые снова можно использовать, причём один из подразделов может быть, опять-таки, расширенным, со своими подразделами и т. д.

Осторожнее с программой fdisk! Она предназначена для создания, изменения и удаления разделов диска.

Чтобы не усложнять эту схему, при разметке диска соблюдают два правила: во-первых, расширенных разделов в таблице разбиения диска может быть не более одного, а во-вторых, таблица разбиения расширенного раздела может содержать либо одну запись — описание дополнительного раздела, либо две — описание дополнительного раздела и описание вложенного расширенного раздела. Соблюдение этого правила позволяет в Linux нумеровать разделы линейно: после четырёх основных, номер 5 получает дополнительный раздел в первом расширенном, 6 — раздел во втором расширенном, вложенным в первый, и т. п. Сами вложенные расширенные разделы при этом не нумеруются и никакому устройству в /dev/ не соответствуют. В действительности разбиение диска двухсистемной машины Мефодия выглядит так:

Разбиение диска
Иллюстрация 1. Разбиение диска двухсистемного компьютера

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

Той же тактикой — разбиением не диска, а раздела — пользуются, когда таблица разбиения нестандартна для IBM PC. Например, UNIX-подобные системы семейства BSD используют собственный универсальный формат разбиения (он старше, чем сама идея об IBM PC!), для чего подобной системе выделяется один раздел, и она творит с ним всё, что заблагорассудится.

Область подкачки

Итак, Linux на компьютере из примера использует три раздела: hda5, hda6 и hda7. Тип раздела hda6, «Linux sawp», отличается от двух других, по словам Гуревича, «это вообще не файловая система». Это — т. н. область подкачки (swap space), пространство на диске, используемое системой для организации виртуальной памяти. Оказывается, областям оперативной памяти, которые процессы запрашивают у ядра, не всегда соответствуют части физической оперативной памяти. Если процесс долгое время не испольует заказанную оперативную память, её содержимое записывается на диск, в область подкачки — тем самым освобождается место в физической памяти для других процессов. Когда же он «вспомнит» об этой области памяти, ядро подкачает её с диска, разместит в оперативной памяти (возможно, откачав другие области), и только тогда позволит процессу продолжить работу.

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

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

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

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

Перекрёстные ссылки книги для Разметка диска и именование устройств

  • Представление устройства в системе
  • Вверх
  • Файловая система

Book navigation

  • Предисловие
  • Сеанс работы в Linux
  • Терминал и командная строка
  • Структура файловой системы
  • Работа с файловой системой
  • Доступ процессов к файлам и каталогам
  • Права доступа
  • Работа с текстовыми данными
  • Возможности командной оболочки
  • Текстовые редакторы
  • Этапы загрузки системы
  • Работа с внешними устройствами
    • Представление устройства в системе
    • Разметка диска и именование устройств
    • Файловая система
  • Конфигурационные файлы
  • Управление пакетами
  • Сеть TCP/IP в Linux
  • Сетевые и серверные возможности
  • Графический интерфейс (X11)
  • Прикладные программы
  • Политика свободного лицензирования

Последние материалы

  • Файловый менеджер Thunar
    1 day ago
  • Эмулятор терминала Terminator
    6 days ago
  • Приложение scanimage
    1 week 4 days ago
  • Утилита sensors
    2 weeks 1 day ago
  • Сканер Rkhunter
    3 weeks 2 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru