Операционные системы - статьи

Чем разбивать?


На данный момент в мире свободного ПО используется три основные программы разбиения диска: традиционный fdisk, его собрат cfdisk, считающийся более дружелюбным к пользователю и относительно новая GNU-утилита parted. Кроме того, существуют и "продвинутые" дисковые менеджеры типа Disk Druid или HardDrake, однако о них речи здесь не будет. Как и о таких широко известных программах, как Partition Magic или отечественный продукт Acronis OS Selector. Несмотря на их многочисленные достоинства, они не являются открытыми.

Именно fdisk больше всего пугал в старые времена начинающих пользователей Unix, хотя ничего устрашающего в нем нет - просто "fdisk /dev/hd?", где в качестве имени устройства фигурирует физический диск, например, для мастера на первом канале это будет /dev/hda. При использовании devfs (и отказе от опознания файла устройства в старой номенклатуре) можно прибегнуть к форме

fdisk /dev/discs/disc#/disc

или к указанию полного имени файла устройства. Благодаря прекрасной системе помощи в любой момент можно получить полный список доступных команд, а команда p выведет текущее состояние разделов на диске. Разделы эти можно создавать (командой n) или удалять (командой d), однако до команды записи изменений (w) никаких необратимых действий, способных разрушить ранее существующие файловые системы (например, FATxx) не последует: неудачно созданные разделы можно удалить и на их месте создать новые.

При создании раздела средствами fdisk сначала определяется, будет ли он первичным (primary) или расширенным (extended), т. е. тем контейнером, в котором в дальнейшем будут созданы логические тома). Далее указывается номер раздела (от 1 до 4 для первичных и от 5 и выше - для логических). В этих пределах номер может быть любым - можно сначала создать раздел 2, а потом 1, или даже весь диск отвести под раздел 4 (именно так размечены фабричным способом zip-диски, почему соответствующие им файлы устройств в старой нотации выглядят как /dev/hd?4). Номер раздела останется на века: именно он будет идентифицировать файл устройства, соответствующий созданному разделу (например, /dev/hda2, или /dev/discs/disc1/part2).


Далее задается начальный цилиндр создаваемого раздела (по умолчанию - первый свободный, а для пустого диска - просто первый. Однако никто не мешает указать любой другой цилиндр в качестве стартового). А потом, конечный цилиндр (по умолчанию, последний физический на диске), или просто размер раздела в мегабайтах, например, +300M. При задании размера в единицах, отличных от цилиндров, он всегда будет округляться до ближайшего числа, кратного целому количеству последних. Так что не следует удивляться, если вместо искомого раздела в 20 Мбайт возникнет 16-мегабайтный, а вместо 22-мегабайтного - раздел в 24 Мбайт.

Создаваемый раздел автоматически получает статус Linux native (номер 83). Чтобы изменить его (а, скажем, для swap-раздела это необходимо), дается команда t и вводится код требуемой файловой системы. Теоретически поддерживаются практически все мыслимые файловые системы: от FAT12 до UFS (для BSD-систем). Однако сами по себе файловые системы средствами fdisk не создаются, и потому для чужых разделов потребуется их форматирование в родной среде. Тем не менее, смысл в такой операции есть - резервирование места под ОС, которые будут установлены позже, и, возможно, указание точек их монтирования.

Программа cfdisk описывается реже, хотя во многих дистрибутивах она пропагандируется как более удобная. После запуска программы выводится информация о диске (имя файла устройства, размер, число головок, секторов, цилиндров), таблица существующих разделов и меню из следующих пунктов: Bootable, Delete, Help, Maximize, Print, Quit, Type, Units, Write - для диска с существующими разделами. Если же диск не разбит, меню ограничивается пунктами Help, New, Print, Quit, Units, Write. До выбора пункта Write никаких необратимых изменений не происходит. По умолчанию размеры разделов в таблице указаны в мегабайтах. Для создания раздела выбирается пункт New, выводящий подменю: Primary, Logical, Cansel. Далее просто задается желаемый размер (в мегабайтах) и запрашивается, приписать ли раздел к началу диска или его концу.


После чего остается только сохранить разбиение в таблице разделов.

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

Организация диска выполняется с помощью мнемонически прозрачных команд (print - просмотр, mkpart - создание раздела, rm - его удаление, и т.д.). Полный список доступных команд с возможными опциями и аргументами, а также краткими, но внятными комментариями можно получить, введя в командной строке (parted) help. В отличие от fdisk или cfdisk, в parted не предусмотрено специальной команды для записи изменений, все действия выполняются в реальном времени, без откладывания. Соответственно, parted требует исключительно аккуратного обращения. Однако в обмен на это предоставляет, во-первых, исключительную гибкость при задании размера и позиционировании раздела. Во-вторых, он делает доступными множество дополнительных манипуляций разделами и файловыми системами (правда, в полном объеме только для ext2fs и FAT16/FAT32, поддержка прочих пока не реализована).


Содержание раздела