Linux. Команда parted

06.08.2023

Теги: CLILinuxКоманда

Команда parted предназначена для создания, удаления и изменения размеров разделов диска. Умеет работать в командном или интерактивном режиме. В интерактивной режиме есть справка по всем командам + справка по каждой команде — это существенно упрощает работу.

Блочные устройства

Наиболее известным блочным устройством, вероятно, будет первый диск IDE в системе, который будет называться /dev/hda. Если в системе есть SCSI диски, то первый из них будет называться /dev/sda. Как нетрудно догадаться, второй IDE диск будет называться /dev/hdb, второй SCSI диск — /dev/sdb.

Блочные устройства представляют абстрактный интерфейс к диску. Пользовательские программы могут использовать эти блочные устройства для взаимодействия с диском, не беспокоясь о том, что у вас за диски — IDE, SCSI или какие-то другие. Программы могут легко адресовать место на диске, как последовательность блоков по 512 байт с произвольным доступом.

Посмотреть диски в системе можно с помощью команды parted.

$ sudo parted -l
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sda: 26,8GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало  Конец   Размер  Файловая система  Имя                   Флаги
 1     1049kB  2097kB  1049kB                                          bios_grub
 2     2097kB  540MB   538MB   fat32             EFI System Partition  загрузочный, esp
 3     540MB   26,8GB  26,3GB  ext4

Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало  Конец   Размер  Файловая система  Имя   Флаги
 1     1049kB  1074MB  1073MB                    home
 2     1074MB  2146MB  1073MB                    data

Разделы диска

В Linux файловые системы создаются с помощью команды mkfs, указывая в качестве аргумента конкретное блочное устройство.

Хотя возможно использовать блочные устройства, представляющие весь диск целиком, такие как /dev/hda или /dev/sda, для единственной файловой системы, это редко применяется на практике. Вместо этого дисковые блочные устройства разделяются на более удобные блочные устройства меньшего размера, называемые разделами.

Таблица разделов определяет, как именно разбито пространство на целом диске. На данный момент существует два стандарта таблицы разделов — MBR (основная загрузочная запись) и GPT (таблица разделов GUID). MBR был первым стандартом, на смену которому приходит GPT. MBR имеет ограничение в том, что позволяет конфигурировать не более четырех основных разделов и максимальный размер раздела не может превышать 2TB.

Для таблиц типа MBR существует три вида разделов — основной, расширенный и логический. Для MBR возможно создать только четыре основных раздела, поэтому, если необходимо создать более четырех разделов, то один из основных разделов необходимо определить в качестве расширенного. Расширенный раздел является, по сути, контейнером для одного или нескольких логических разделов, и к тому же диск может содержать только один расширенный раздел.

Внутри же расширенного раздела все данные хранятся в логических разделах. Чтобы можно было хранить данные внутри расширенного раздела, необходимо сначала создать внутри него логический раздел. В Linux основные или расширенные разделы нумеруются от 1 до 4.

Таким образом, устройство /dev/sda может иметь четыре основных раздела — /dev/sda1, /dev/sda2, /dev/sda3 и /dev/sda4. Или, может иметь один основной раздел — /dev/sda1 и один расширенный – /dev/sda2.

Если определены логические разделы, то их нумерация начинается с 5, то есть первый логический раздел на устройстве /dev/sda будет называться /dev/sda5, даже если на диске не определен основной раздел, а определен только один расширенный /dev/sda1.

Получается, что если нужно иметь на диске с MBR таблицей больше четырех разделов, необходимо создать один расширенный раздел за счет основного.

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

Команда parted

В командном режиме можно сразу выполнить нужное действие с диском и вернуться к работе в терминале. Например, создаем на диске таблицу разделов GPT, создаем раздел с именем data и типом файловой системы ext4, выделяем под этот раздел все место на диске.

$ sudo parted --align opt /dev/sdb mktable gpt mkpart data ext4 0% 100%

Справка по команде

$ parted --help
Использование: parted [КЛЮЧ]... [УСТРОЙСТВО [КОМАНДА [ПАРАМЕТРЫ]...]...]
Применяет КОМАНДУ с ПАРАМЕТРАМИ к УСТРОЙСТВУ.  Если ни одной КОМАНДЫ не задано,
программа работает в интерактивном режиме.

КЛЮЧИ:
  -h, --help                      отображает это справочное сообщение
  -l, --list                      выводит раскладку разделов всех блочных устройств
  -m, --machine                   отображает вывод для обработки компьютером
  -s, --script                    никогда не запрашивает вмешательство пользователя
  -v, --version                   отображает версию
  -a, --align=[none|cyl|min|opt]  выравнивание новых разделов

КОМАНДЫ:
  align-check ТИП N                проверить, что раздел N выровнен согласно ТИПУ(min|opt)
  help [КОМАНДА]                   распечатать общую справку или справку по КОМАНДЕ
  mklabel,mktable ТИП_МЕТКИ        создать новую метку диска (таблицу раздела)
  mkpart ТИП_РАЗД [ТИП_ФС] НАЧ КОН создать раздел
  name НОМЕР ИМЯ                   назначить ИМЯ разделу с НОМЕРом
  print [devices|free|list,all|НОМЕР] отобразить таблицу разделов, доступные устройства, свободное
                                      место, все найденные разделы или определённый раздел
  quit                             выйти из программы
  rescue НАЧАЛО КОНЕЦ              восстановить потерянный раздел в промежутке от НАЧАЛА до КОНЦА
  resizepart НОМЕР КОНЕЦ           изменить размер раздела НОМЕР
  rm НОМЕР                         удалить раздел НОМЕР
  select УСТРОЙСТВО                выбор устройства для редактирования
  disk_set ФЛАГ СОСТОЯНИЕ          изменить ФЛАГ на выбранном устройстве
  disk_toggle [ФЛАГ]               переключить состояние ФЛАГА на выбранном устройстве
  set НОМЕР ФЛАГ СОСТОЯНИЕ         изменить ФЛАГ на разделе НОМЕР
  toggle [НОМЕР [ФЛАГ]]            переключить состояние ФЛАГА на разделе НОМЕР
  unit ЕДИНИЦА                     использовать для измерений данную ЕДИНИЦУ
  version                          отображает текущую версию GNU Parted и информацию о лицензии

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

$ sudo parted --align opt /dev/sdb
GNU Parted 3.4
Используется /dev/sdb
Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд.

(parted) help
  align-check ТИП N                проверить, что раздел N выровнен согласно ТИПУ(min|opt)
  help [КОМАНДА]                   распечатать общую справку или справку по КОМАНДЕ
  mklabel,mktable ТИП_МЕТКИ        создать новую метку диска (таблицу раздела)
  mkpart ТИП_РАЗД [ТИП_ФС] НАЧ КОН создать раздел
  name НОМЕР ИМЯ                   назначить ИМЯ разделу с НОМЕРом
  print [devices|free|list,all|НОМЕР] отобразить таблицу разделов, доступные устройства, свободное
                                      место, все найденные разделы или определённый раздел
  quit                             выйти из программы
  rescue НАЧАЛО КОНЕЦ              восстановить потерянный раздел в промежутке от НАЧАЛА до КОНЦА
  resizepart НОМЕР КОНЕЦ           изменить размер раздела НОМЕР
  rm НОМЕР                         удалить раздел НОМЕР
  select УСТРОЙСТВО                выбор устройства для редактирования
  disk_set ФЛАГ СОСТОЯНИЕ          изменить ФЛАГ на выбранном устройстве
  disk_toggle [ФЛАГ]               переключить состояние ФЛАГА на выбранном устройстве
  set НОМЕР ФЛАГ СОСТОЯНИЕ         изменить ФЛАГ на разделе НОМЕР
  toggle [НОМЕР [ФЛАГ]]            переключить состояние ФЛАГА на разделе НОМЕР
  unit ЕДИНИЦА                     использовать для измерений данную ЕДИНИЦУ
  version                          отображает текущую версию GNU Parted и информацию о лицензии

Если планируется создание или изменение разделов диска — команду лучше запускать с опцией --align opt. Это позволит избежать предупреждения о необходимости выравнивания раздела для лучшей производительности. Опция позволяет не выравнивать раздел вручную, а доверить это утилите parted.

Warning: The resulting partition is not properly aligned for best performance.

Создание разделов MBR

У меня есть диск размером 2Гб, давайте создадим таблицу разделов MBR и несколько разделов — основной, расширенный и два логических внутри расширенного.

$ sudo parted --align opt /dev/sdb
GNU Parted 3.4
Используется /dev/sdb
Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд.

Создаем таблицу разделов

(parted) mktable msdos

Смотрим, что получилось

(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало  Конец  Размер  Тип  Файловая система  Флаги

Создаем primary раздел

(parted) mkpart primary 0% 50%
(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска:

Номер  Начало  Конец   Размер  Тип      Файловая система  Флаги
 1     1049kB  1074MB  1073MB  primary                    lba

Создаем extended раздел

(parted) mkpart extended 50% 100%
(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало  Конец   Размер  Тип       Файловая система  Флаги
 1     1049kB  1074MB  1073MB  primary                     lba
 2     1074MB  2147MB  1074MB  extended                    lba

Создаем логические разделы

(parted) mkpart logical 50% 75%
(parted) mkpart logical 75% 100%
(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало  Конец   Размер  Тип       Файловая система  Флаги
 1     1049kB  1074MB  1073MB  primary                     lba
 2     1074MB  2147MB  1074MB  extended                    lba
 5     1075MB  1611MB  536MB   logical                     lba
 6     1612MB  2147MB  536MB   logical                     lba
Флаг по умолчанию lba говорит о том, что доступ к разделу осуществляется с использованием адресации LBA (Logical Block Addressing), вместо устаревшей адресации CHS (Cylinder-Head-Sector).

Сделаем основной раздел загрузочным

(parted) set 1 boot on
(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало  Конец   Размер  Тип       Файловая система  Флаги
 1     1049kB  1074MB  1073MB  primary                     загрузочный
 2     1074MB  2147MB  1074MB  extended                    lba
 5     1075MB  1611MB  536MB   logical                     lba
 6     1612MB  2147MB  536MB   logical                     lba

Создание разделов GPT

Давайте теперь создадим таблицу GTP и несколько разделов на диске /dev/sdb размером 2Гб.

$ sudo parted --align opt /dev/sdb
GNU Parted 3.4
Используется /dev/sdb
Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд.

Создаем таблицу разделов

(parted) mktable gpt

Смотрим, что получилось

(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало  Конец  Размер  Файловая система  Имя  Флаги

Создаем разделы (все разделы в GPT первичные)

(parted) mkpart home 0% 50%
(parted) mkpart data 50% 100%
(parted) print
Модель: ATA VBOX HARDDISK (scsi)
Диск /dev/sdb: 2147MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало  Конец   Размер  Файловая система  Имя   Флаги
 1     1049kB  1074MB  1073MB                    home
 2     1074MB  2146MB  1073MB                    data

Обратите внимание, что когда мы работаем с таблицей разделов GPT — в качестве первого аргумента указывается имя раздела, а не его тип — primary, extended, logical.

Поиск: CLI • Linux • Команда • диск • parted • GPT • MBR

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.