Алексей Федорчук
Программа parted (и
ли, точнее, GNU parted, как подчеркивается в заголовке man-страницы) предлагается в рамках проекта GNU как универсальное средство для работы не только с дисковыми разделами, но и с файловыми системами. И действительно, она позволяет не только выполнить разметку диска, но и создать на разделах файловые системы, а также осуществляет проверку их целостности, удаление, перемещение, копирование и изменение размера разделов существующих.
Интерактивный режим
Использоваться parted
может двояким образом — в интерактивном и в командном режиме. Начнём с первого, то есть просто запустим программу одноимённой командой, без опций и аргументов. В ответ она выдаст нам предупреждение об отсутствии гарантии, информацию о первом физическом диске системы, данные о геометрии (цилиндры/сектора/головки), предупреждение о том, где кончается 1024 цилиндр, — и выведет приглашение командной строки в виде
(parted)
Интерактивный интерфейс утилиты построен по принципу sh-совместимых оболочек. Поддерживаются, в частности, редактирование командной строки (обычными управляющими последовательностями, например, Control+D — удаление символа в позиции курсора, Control+H — перед оной), просмотр истории команд, автодополнение (клавишей Tab). Действия по организации диска выполняется с помощью мнемонически прозрачных команд (print
— просмотр, mkpart
— создание раздела, rm — его удаление, и т.д.). Синтаксис команд — также shell-подобный: обычно требуется указание аргумента — номера устройства (Minor, в терминологии программы) и некоторых дополнительных опций (в зависимости от команды). Выход из программы — командой exit
или комбинацией Control+D.
Полный список доступных команд с возможными опциями и аргументами, а также краткими, но внятными комментариями (в правильно локализованной системе — на языке установленной локали, например, русском) можно получить, введя в командной строке
(parted) help
или просто нажав Enter в ответ на приглашение. Список этот включает команды для:
- выбора устройства для редактирования (
select /dev/sd?
); - действий с существующими разделами (
print
— просмотр таблицы разбиения,check
— проверка целостности файловой системы раздела,rm
— удаление раздела,cp
— копирование файловой системы в другой раздел,resize
— изменение размера раздела,move
— перемещение раздела в пределах диска); - манипуляций по разбиению диска (
mkpart
— создание раздела,mkpartfs
— создание раздела с файловой системой заданного типа,mkfs
— создание файловой системы на существующем разделе).
Подробную справку по каждой команде можно получить, введя
(parted) help имя_команды
Кроме того, справка по использованию команды будет выведена, если дать её
без аргументов и опций. И, разумеется, программа parted
сопровождается документацией в форматах man
и info
, из которой можно получить исчерпывающие сведения о её использовании.
В отличие от fdisk
или cfdisk
, в parted
не предусмотрено специальной команды для записи изменений, все действия выполняются в реальном времени, без откладывания. То есть, например, команда
(parted) rm #
приведёт к немедленному удалению раздела с указанным номером. Соответственно, parted
требует исключительно аккуратного обращения. Однако в обмен на это предоставляет, во-первых, исключительную гибкость при задании размера раздела и его позиционировании. Во-вторых, он делает доступными множество дополнительных манипуляций разделами и файловыми системами.
Пример применения: разметка диска
Чтобы оценить возможности parted
, рассмотрим для примера процесс разбиения вновь приобретённого диска. Для чего после запуска программы сначала выбираем соответствующее устройство:
(parted) select /dev/sd?
затем командой
(parted) print
убеждаемся, что устройство это разбиению не подвергнуто, и даём команду
для создания раздела:
(parted) mkpart type_part type_fs start end
Под типом раздела здесь могут выступать значения primary
(для первичного раздела), extended
(для расширенного) или logical
(для логического раздела в последнем). Возможные значения для типа файловой системы — ext2
, ext3
, reiserfs
, linux-swap или FAT. Можно указать также и иные поддерживаемые Linux файловые системы — xfs
или jfs
. Или даже hp-ufs
и sun-ufs
— версии файловой системы проприетарных Unix для платформ HP-PA и Sun Sparc, соответственно. Однако это лишь задаст для раздела соответствующие идентификаторы типа — само по себе создание файловых систем при этом выполнено командой part
не будет, о чем я скажу чуть ниже.
Начало (start
) и конец (end
) раздела указываются в мегабайтах, например, 0 и 3000 при создании раздела в 3 Гбайт от начала диска. И начало, и конец можно задать дробными (с точностью до третьего знака и разделителем — десятичной точкой) числами, что обеспечивает необходимую точность разбиения (при наличии калькулятора или способности к счёту в уме).
Как легко понять из формата команды, раздел заданного размера может быть создан в любом месте диска (не обязательно в начале его или в конце). И раздел, созданный первым по времени (вне зависимости от положения на диске), получит номер (Minor) 1, созданный вторым (пусть и в начале диска) — Minor 2, и так далее. То есть по гибкости команда mkpart
из parted
ничуть не уступает программе fdisk
.
Далее на дисковых разделах должны быть созданы файловые системы. Вообще-то, это отдельная тема. Однако поскольку именно эта возможность делает программу parted
столь универсальной, затрону её здесь вскользь. Создание файловой системы осуществляется командой
(parted) mkfs # type_fs
где под # выступает тот самый номер (Minor) раздела, который был присвоен
ему при создании, а type_fs
— доступные для создания файловые системы: — ext2
, ext3
, reiserfs
, linux-swap
и FAT
.
Дисковый раздел и файловая система на нем могут быть созданы также одной
командой:
(parted) mkpartfs type_part type_fs start end
К опциям её относится все то, что было сказано чуть выше о командах mkpart
и mkfs
.
Командный режим
Таким образом, создание разделов (и, добавлю, файловых систем) средствами утилиты parted
в интерактивном режиме весьма просто и удобно (при должной, естественно, аккуратности). Однако основные её преимущества проявляются при использовании в командном режиме. Чтобы прибегнуть к нему, программу parted
следует запустить с указанием аргумента (имени файла дискового устройства), одной из его встроенных команд и необходимых последней опций. В итоге одной строкой типа
$ parted /dev/sda mkpartfs primary ext2 0 100 && parted /dev/sda mkpartfs primary linux-swap 101 1124 && parted /dev/sda mkpartfs primary ext2 1125 ###
можно создать полностью готовый к использованию в Linux диск — никаких
дальнейших действий в этом направлении не потребуется.