Управление дисками из командной строки. Часть 2

Управление дисками из командной строки. Часть 2

В первой части этой серии мы изучили основы управления дисками и разделами через командную строку. Далее мы увидим, как мы можем выполнять разбиение диска, а также как разделять, объединять и стирать созданные.

Практическое использование

Когда я работал в Crosshaven Computers, то использовал командную строку для создания внешних диагностических дисков, содержащих несколько томов. Обычно нам требовалось не менее 5-10 таких дисков одновременно, и все они должны были быть идентичными, поэтому каждый месяц каждый диск сбрасывался.

Чтобы автоматизировать процесс и гарантировать, что каждый созданный диск был точно таким же, сценарий оболочки автоматически разбивал диск на нужное количество разделов, а затем автоматически восстанавливал различные версии OS X и диагностического программного обеспечения.

Такой уровень автоматизации просто невозможен с помощью Дисковой утилиты, но посмотрим, как командная строка может быть нам более полезной.

Разметка диска

Чтобы разбить диск, мы используем:

diskutil partitionDisk /dev/disk2 GPT JHFS+ New 0b

 partitiondisk

Первые три части команды говорят сами за себя, это фактическая команда diskutil, за которой следует параметр partitionDisk и идентификатор диска /dev/disk(n). Вы также узнаете JHFS+ как файловую систему, за которой следует метка, обозначающая только что созданный том.

Схема раздела

GPT — это вариант схемы разделов. Вы можете использовать три из них:

  • GPT: GUID Partition Table
  • APM: Apple Partition Map
  • MBR: Master Boot Records

Если вы не собираетесь загружать Mac на базе PowerPC или ПК с Windows с помощью жесткого диска, нет причин выбирать что-либо, кроме GPT. Компьютеры Intel Mac могут загружаться только с разделов GUID.

Размер раздела

В конце команды находится аргумент 0b. Это представляет собой размер создаваемого раздела. Вы можете указать любой желаемый размер, вплоть до максимального размера доступного свободного места, используя b (байты), m (мегабайты), g (гигабайты) и так далее.

Указание 0b говорит команде просто использовать все доступное свободное пространство.

Таким образом, команда для запуска переразметит жесткий диск, идентифицированный как disk2, с таблицей разделов GUID, содержащей один том с именем New, который охватывает весь диск.

Множество разделов

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

diskutil partitionDisk /dev/disk2 GPT JHFS+ First 10g JHFS+ Second 10g JHFS+ Third 10g JHFS+ Fourth 10g JHFS+ Fifth 0b

 multipartitions

Для каждого дополнительного раздела, который вы хотите добавить, соглашение об использовании следующее:

Volume1Format Volume1Name Volume1Size Volume2Format Volume2Name Volume2Size Volume3Format Volume3Name Volume3Size...

Если общий размер всех томов меньше места на жестком диске, которое вы хотите разделить, оставшееся пространство останется свободным.

Если бы мы попытались выполнить ту же задачу в Дисковой утилите, нам сначала нужно было бы указать количество разделов в раскрывающемся меню. Затем выберите каждый и назовите его, убедившись, что мы указали требуемый размер.

Одним из ограничений Disk Utility является то, что графический интерфейс может разбить диск только на 16 разделов. Командная строка, однако, не имеет таких ограничений и может использоваться для создания любого количества разделов.

diskutil16limit

Разделение разделов

Дисковые разделы можно разделить на несколько меньших с помощью splitPartition с помощью команды, аналогичной разделению диска.

Параметр требует использования идентификатора диска раздела перед созданием разделов с упомянутым ранее соглашением об использовании:

diskutil splitPartition /dev/disk2s6 JHFS+ Test 10GB JHFS+ Test2 0b

 diskpartsplit

Эта команда разделит раздел /dev/disk2s6 на два меньших, помеченных как Test и Test2.

Объединение разделов

Чтобы объединить два или более разделов вместе, мы можем использовать параметр «Объединить разделы». Разделы, которые вы хотите объединить, должны располагаться в последовательном порядке в соответствии с идентификатором диска каждого раздела.

diskutil mergePartitions JHFS+ NewName {first disk identifier in range} {last disk identifier in range}

Например:

diskutil mergePartitions JHFS+ NewName disk2s4 disk2s6

 diskutilmerge

Первый идентификатор диска выбирает раздел, в который вы хотите объединить остальные, второй указывает диапазон. Только данные на первом разделе диска не будут стерты, остальные разделы будут стерты и объединены с ним.

Файловая система и имя тома все равно должны быть указаны в том случае, если первый указанный вами раздел не может быть расширен. В этом случае команда спросит, хотите ли вы стереть все разделы в диапазоне и создать новый.

Подведение итогов

Управление разделами через командную строку не так сложно, как вы могли бы ожидать, и это может быть намного проще сделать вместо использования Дисковой утилиты.

В следующей части этой серии мы рассмотрим создание и восстановление образов дисков на тома и обратно.

Обо мне

bottom-logo

Я дизайнер. Здесь вы можете увидеть мои работы. Хорошо я делаю свою работу или не очень — судить вам.

Главное правило — вы никогда не увидите незаконченной работы. Только досконально отточенный проект можно выпускать в жизнь.

Калькулятор упаковки