|
||||||||||||||||||||||||||||||||||||||||
|
Parted - разметка дисков в LinuxСодержание
Parted - общая информацияParted - утилита для разметки дисков (HDD, SSD, USB и других носителей информации) в Linux. Используется для создания и удаления разделов, изменения размера (увеличение и уменьшение), изменения места размещения раздела на диске, проверки целостности данных и копирования разделов. В случае ошибки или по незнанию можно безвозвратно удалить все данные на устройстве хранения, так что перед работой с этой утилитой необходимо быть предельно внимательным: "Семь раз отмерь, один раз отрежь". В отличие от утилиты fdisk, все изменения применяются немедленно, после ввода команды и нажатия enter. У parted в Linux есть аналог с графическим интерфейсом: gparted, в котором все действия более наглядны и интуитивно понятнее. Поскольку графический интерфейс доступен далеко не на всех устройствах, под управлением Linux, parted не теряет своей актуальности. Работать с утилитой можно в двух режимах: интерактивном и командном. В интерактивном режиме, после ввода основной команды или запуска parted без параметров, выполняются различные действия над дисками. Выход из интерактивного режима - ввод команды quit (или в сокращенном варианте, буквы q) и нажатие enter. Так же организован интерактивный режим, например, в утилите mysql. Командный режим - после parted указываются параметры, и по завершению выполнения команды можно продолжать работу в терминале Linux в штатном режиме. За один раз в одной строке утилите можно передать несколько различных команд, например: создать таблицу разделов, разметить один раздел, разметить второй раздел и отобразить информацию по разделам. Чтобы не путаться с размерами разделов в parted, следует знать, что по новым стандартам 1 килобайт равен 1 000 байтам, 1 мегабайт равен 1 000 килобайтам, и так далее, а для корректного обозначения степеней двоек введены новые "двоичные" приставки: 1 кибибайт равен 1 024 байтам, 1 мебибайт равен 1 024 кибибайтам и равен 1 048 576 байтам и т.д. Подробнее тут: " Посмотреть справку по утилите разметки дисков parted: # parted -h # man parted # parted /dev/sda help mktable Больше информации по parted можно найти тут: Тестирование работы partedТестирование работы утилиты parted лучше проводить в реальных условиях и на реальных носителях информации, но не всегда есть возможность выделить для экспериментов новый отдельный жесткий диск или немного б.у, лишенный ценных, предварительно зарезервированных, данных. Поскольку в Linux все устройства представлены в виде файлов, в том числе устройства хранения данных, можно создать файл заданного размера и использовать его в качестве HDD для тестов утилиты. # dd if=/dev/zero of=~/testhdd.iso bs=100M count=50 Утилита dd создает "пустой" файл testhdd.iso в пользовательской домашней директории размером 5000Mb (50 раз записывает нулями "куски" по 100 Mb). Далее все тестовые операции parted будут проводится с виртуальным носителем данных - файлом testhdd.iso. После запуска введите 2 команды, чтобы узнать полный путь к файлу, расположенному в директории пользователя: он понадобится для указания parted полного пути к ранее созданному фалу-диску. # cd ~ # pwd /home/site Перед тестированием работы parted настоятельно рекомендую сделать резервную копию, как минимум, с HDD /dev/sda, так как он наиболее подвержен риску быть случайно переразмеченным - выбирается в parted по умолчанию, если явно не указан другой носитель информации. Выбор диска и режимы работыВыбор диска - самая ответственная часть в работе с утилитой parted, так как случайно подключив "не тот" диск можно удалить важные данные. Просмотреть, какие диски/устройства подключены можно при помощи parted и fdsik с опцией -l: # parted -l # fdisk -l Подробную информацию по одному устройству можно просмотреть, добавив путь к нему (только в fdisk, parted все-равно покажет все диски): # fdisk -l /dev/sda Утилита fdisk по функционалу очень схожа с parted, и с её помощью также можно разметить разделы на диске, но это отдельная тема. Не смотря на то, что fdisk уже довольно давно понимает и работает с GPT, до сих пор при обнаружении устройства с GPT fdisk предупреждает, что поддержка GPT - экспериментальная: "WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.". Во многих Linux-дистрибутивах файлы HDD находятся в /dev/sdX, где вместо X - буква диска, начиная с "a": /dev/sda; /dev/sdb и т.д. Ниже, почти все примеры будут выполняться над виртуальным жестким диском - файлом, который был создан при помощи dd. В интерактивном режиме утилита запускается так: # parted GNU Parted 3.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) select /home/site/testhdd.iso Using /home/site/testhdd.iso (parted) print Error: /home/site/testhdd.iso: unrecognised disk label Model: (file) Disk /home/site/testhdd.iso: 5243MB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: (parted) Все, что находится после (parted) - набирается с клавиатуры пользователем, остальной текст - сообщения утилиты в ответ на команду. Внимательные читатели обратили внимание, что сразу после запуска parted, без параметров, по умолчанию был выбран системный диск /dev/sda! И если не сменив устройство командой select путь/к/файлу.iso непреднамеренно совершить деструктивные действия, например ввести mktable, mkpart или др., то можно полностью разрушить системный диск /dev/sda (название выбираемого утилитой диска по умолчанию может отличаться от имени в вашей системе). Выход из интерактивного режима - набрать quit (или первую букву команды - q) и нажать клавишу Enter. Чтобы избежать нелепых ошибок, всегда перед запуском parted, указывайте путь к диску: # parted /home/site/testhdd.iso GNU Parted 3.1 Using /home/site/testhdd.iso Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) Узнать информацию по диску можно и обычной командой, без интерактивного режима: # parted /home/site/testhdd.iso print Error: /home/site/testhdd.iso: unrecognised disk label Model: (file) Disk /home/site/testhdd.iso: 5243MB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: # В командном режиме в parted можно за один раз отправить несколько команд, например сразу выполнить полную разметку файла-хранилища testhdd.iso: parted -s /home/site/testhdd.iso -- mklabel gpt mkpart P1 ext2 1MiB 8MiB mkpart P2 ext4 8MiB -1 set 1 boot on Опция -s нужна для подавления предупреждений parted, из за которых может сработать только часть команд, двойное тире (--) служит для предотвращения ошибки связанной со значением "-1" (invalid option). Какой режим работы с parted выбрать: интерактивный или обычный командный - выбор за пользователем. Выбор типа таблицы разделов - mklabel и mktableВыбор или изменение типа разметки в parted уничтожит все данные на устройстве. Если необходимо конвертировать систему разметки из одного формата в другой без потери данных, тогда нужно искать специальную утилиту для операционной системы, из под которой будет проводиться конвертирование. На большинстве HDD используется одна из двух таблиц разделов: GPT и MBR. Как выбрать систему разметки для диска - читайте тут: MBR или GPT. Выбор способа разметки диска осуществляется командами mklabel или mktable - две идентичные по действию команды, которые отличаются только названием. # parted /home/site/testhdd.iso mktable msdos Этой командой блочное устройство (пустой файл) будет размечено в MBR (msdos - так называется тип разбивки устройства MBR в parted). Если вместо msdos указать gpt, носитель информации будет размечен в GPT. Данные о разделах в MBR занимают один, первый сектор носителя информации, а информация о разделах GPT, как минимум, первые 33. Из-за этого назначать начало раздела можно минимум со 2-го (MBR) или 34 (GPT) сектора, но лучший, универсальный вариант начала первого раздела для большинства ситуаций - 2048 сектор. Выравнивание разделовВыравнивание влияет на скорость работы любых носителей информации и износостойкость (долговечность) SSD накопителей, пренебрегать этим параметром не стоит. В большинстве случаев достаточно знать, что для корректного выравнивания (alignment) вновь создаваемых разделов достаточно запустить parted с опцией "-a opt" (optimal), а единицы измерения указывать в kB, MB или TB (подробнее смотрите в разделе: "Таблица единиц измерений"): # parted -a opt /dev/sda Проверить, насколько корректно и правильно разбит диск можно следующими командами: # parted /dev/sda align-check opt 1 # parted /dev/sda align-check min 1 Цифра в конце команды - номер раздела (посмотреть номера HDD с именем sda - # parted /dev/sda print). Если выравнивание в порядке, в ответ каждая команда вернет сообщение: "1 aligned". Если необходимо точно задать размер раздела, не вдавайсь в подробности, то необходимо знать следующее:
Узнать, сколько байт в секторе у отдельного диска можно на официальном сайте производителя по модели устройства или так: # fdisk -l /dev/sda ... Sector size (logical/physical): 512 bytes / 4096 bytes ... Если хоть один из параметров "Sector size": "logical" или "physical" равен 4096 байт, то выравнивание необходимо проводить по 4096 байт, как написано выше.
Создание разделов - mkpartПеред созданием разделов на реальном HDD, SDD или другом носителе информации, обязательно ознакомьтесь с информацией по выравниванию разделов: "Выравнивание разделов". Для создания раздела нужно указать его тип, файловую систему (не обязательно), стартовую позицию и окончание. Для GPT-разметки в качестве типа раздела возможно указать любое имя, поскольку все разделы равны (нет primary, extended, logical). Изменить имя раздела можно позже, командой name. Количество разделов в GPT можно сказать не ограничено (ограничение 264 - весьма большое число). Более строгие ограничения присутствуют в операционных системах: например, в Linux - максимальное кол-во разделов - 255, а в Windows можно создать не более 128 разделов под GPT. Для MBR возможно задать одно из 3 значений для типа раздела: primary, logical, extended. В MBR существует ограничение - максимум 4 первичных раздела (primary), и для того, чтобы его обойти, создается один расширенный раздел (extended), в котором уже размечается множество логических (logical). Тип файловой системы - необязательный аргумент, который можно опустить, создавая новый раздел. Просмотреть доступные типы можно такой командой в секции FS-TYPE: # parted /home/site/testhdd.iso help mkpart При установке типа файловой системы на разделе, форматирование в выбранный тип ФС произведено не будет, но зато на нем останется пометка, о том, что раздел для такой-то файловой системы. В MBR, при создании раздела extended, указание файловой системы приведет к ошибке, так как этот раздел не форматируется, а служит только оболочкой для логических разделов. Начало и окончание раздела задается целым или десятичным числом, содержащим до трех чисел после запятой (десятичного разделителя). Создать раздел размером 100МБ на носителе информации предварительно размеченном, как GPT, и после этого просмотреть результат, можно при помощи следующих команд: # parted /home/site/testhdd.iso mktable gpt # parted /home/site/testhdd.iso mkpart part1 1 100 # parted /home/site/testhdd.iso print Для удобства можно заменить 3 команды одной: # parted -s /home/site/testhdd.iso mktable gpt mkpart part1 1 100 print По умолчанию, если как в примере, не указать единицы измерения для начала и окончания раздела, будут использованы MB. Список доступных единиц измерения для указания начала и окончания раздела размещен в таблице: "Единицы измерения в parted". Регистр символов (строчные или прописные), в котором будет записана единица измерения - важен, чтобы убедиться в этом достаточно запустить две команды (полная очистка тестового файла-диска от разделов, установка GTP разметки, создание одного нового раздела и вывод данных в секторах): # parted -s /home/site/testhdd.iso -- mktable gpt mkpart part_boot 1MiB 300MiB unit s print # parted -s /home/site/testhdd.iso -- mktable gpt mkpart part_boot 1MiB 300miB unit s print Окончание раздела записанное как 300MiB, создает раздел размером 612352 сектора, а 300miB - 612353 сектора. Разница даже в 1 сектор иногда может быть критична! Отрицательные значения заданные для установки окончания раздела указывают parted, что нужно отступить от окончания доступного пространства носителя информации. Чтобы не возникало ошибок при использовании отрицательных значений - после указания носителя информации, необходимо поставить двойное тире: "--". При необходимости разметить носитель информации с точностью до 512 байт, нужно указывать только следующие единицы измерения: сектора и любые *бибайты. Указав, например, MB, parted "на свое усмотрение" может увеличить или уменьшить на +/-500 KB размер раздела. Всегда, при разметке любого физического носителя информации, следует оставлять в конце несколько мебибайт неразмеченного пространства. Винчестеры даже одного производителя и одной модели могут отличаться по размеру в несколько мебибайт. В ситуации, когда требуется быстро заменить вышедший из строя HDD, размеченный под "край" на новый, резервный, который немного меньше размером, могут возникнуть сложности с переносом данных - уменьшение раздела с данными даже на несколько секторов может занять довольно много веремени. Следующей одной командой можно очистить тестовый диск-файл путем создания на нем типа разметки - GPT и разметить 2 раздела с именами "part_boot" и "part_data". # parted -s /home/site/testhdd.iso -- mktable gpt mkpart part_boot 1MiB 300MiB mkpart part_data 300MiB -1MiB print Удаление разделов - rmПеред удалением раздела, нужно узнать его номер, при помощи команды print, в колонке "Number". parted /home/site/testhdd.iso print После этого, чтобы удалить раздел под номером 1, нужно запустить такую команду: # parted /home/site/testhdd.iso rm 1 Чтобы сразу удалить все разделы в parted, запускается команда на создание типа таблицы разделов. # parted /home/site/testhdd.iso mktable gpt Warning: The existing disk label on /home/site/testhdd.iso will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? После ответа нажатием "y" или "Yes" и Enter на предупреждение, что данная команда разрушит все данные на диске, устройство будет полностью очищено от разделов. Установка флага раздела - setС помощью set устанавливаются флаги на разделы. Эту команду можно использовать для установки раздела, в качестве загрузочного. Сделать раздел загрузочным для материнских плат с BIOS и типом разметки MBR можно так: # parted /home/site/testhdd.iso set 1 bios_grub on Для дисков с GPT и материнских плат с UEFI: # parted /home/site/testhdd.iso set 1 boot on Снять метку загрузочного раздела можно так: # parted /home/site/testhdd.iso set 1 boot off Выбор единиц измерения - unitДля выбора отображаемых единиц измерений в команде print и задания единиц измерения по умолчанию, например для mkpart, используется команда unit. Задать отображение в секторах и посмотреть информацию о разделах можно так: # parted /home/site/testhdd.iso unit s print По умолчанию, команда print отображает границы разделов в универсальных единицах "compact", а mkpart, без указания единицы измерения для границ раздела, воспринимает числа, как Мегабайты. Таблица единиц измерений, доступных в parted
Ошибки и предупрежденияError: You requested a partition from
Error: You requested a partition from XXX MB to YYY MB (sectors XXX..YYY).
The closest location we can manage is XXX kB to YYY MB (sectors XXX..YYY). Эта ошибка возникает, если попытаться создать раздел, поверх существующего раздела или поверх участков диска, в которых располагается служебная информация с данными по разделам (тип MBR занимает первый сектор 1, тип разметки GPT содержится в секторах, как минимум, с первого по 33-ий). Если ошибка возникла при создании первого раздела, рекомендуется отступить от начала диска 1 MiB (указать 1MiB в качестве начала раздела): # parted /dev/sdX mkpart myname 1MiB 200MiB. Если раздел не первый, нужно посмотреть, в каких границах расположены другие разделы, командой print: # parted /dev/sdX print. Во второй строке после ошибки: "The closest location we can manage is ...", содержится рекомендованная граница для создаваемого раздела. Parted: invalid option
parted: invalid option -- XX
Если данная ошибка появилась после задания отрицательной границы раздела от окончания диска, например так: # parted /dev/sdX mkpart Part_Name 1MiB -100s # parted /dev/sdX -- mkpart Part_Name 1MiB -100s В этом случае отрицательное число будет интерпретировано как число со знаком минус, т.е. parted воспримет -100 как отрицательное число 100. Если проблема не в отрицательной границе раздела, следует проверить корректность задания опций для parted. Все доступные опции утилита подсказывает сразу после вывода сообщения об ошибке: "Usage: parted [-hlmsv] [-a # parted -h Warning: The resulting partition is not properly aligned for best performanceПредупреждение: "Warning: The resulting partition is not properly aligned for best performance." появляется после создания раздела с проблемным выравниванием. Что такое выравнивание (alignment) и как нужно выравнивать разделы читайте тут: "Выравнивание разделов". Игнорировать предупреждение: "Warning: The resulting partition is not properly aligned for best performance." не стоит, так как это может повлечь за собой значительное замедление работы накопителя, а в случае с SSD-дисками, дополнительно еще и преждевременный выход его из строя, из-за серьезного увеличения нагрузки на запись. Error: Invalid numberОшибка: "Error: Invalid number" может появится при попытке создания раздела, границы которого заданы некорректно, либо при попытке в типе разметки MBR (msdos), присвоить тип файловой системы для раздела с типом "extended". Детальнее - тут: "Создание разделов - mkpart".
PostscriptumP.S. Весь материал статьи написан на основе работы с утилитой parted версии 3.1, которая идет с актуальным, на дату публикации, дистрибутивом Centos 7. P.P.S. Если вам будет интересно узнать о копировании (parted /device cp) и восстановлении (parted /device rescue) разделов пишите в комментариях, и статья обязательно будет дополнена. Опубликовано: 2017/08/02
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/linux.php?txt=712" target="_blank">Parted - разметка дисков в Linux</a> 25160
Комментарии
Отличная статья! Лучшая из всего. что я читал.
Спасибо за статью. Очень подробно.
Здравствуйте и с Новым годом!А есть ли команд для очистки HDD полностью? Спасибо.
Добавить комментарий
|