Как я могу написать сценарий создания одного раздела, который использует все устройство?

9

Я специально использую это для разделения и монтирования томов EBS на экземплярах Amazon EC2, но на самом деле это должно быть применимо к инициализации любого нового диска.

Как говорится в вопросе, я хочу создать сценарий для создания одного основного раздела, который использует все доступное пространство на данном устройстве. Я не буду знать заранее, насколько велико устройство, и оно может быть очень большим (т. Е. Несколько ТБ).

В исследовании этого, кажется, partedлучшая команда для сценариев. Я думаю, что-то вроде того parted /dev/sdf mkpart primary 0 END, что я хочу, но мне трудно найти элегантный способ определить, каким должен быть END. Кто-нибудь знает простой способ сделать это?

Майк Дек
источник

Ответы:

11

Вы можете сделать это так:

parted /dev/sdf --script -- mkpart primary 0 -1
Жиль Квено
источник
5

Я столкнулся с проблемами, когда попытался использовать другой ответ. Для меня работало использование процентного подхода, такого как этот:

$ parted /dev/sdf --script -- mkpart primary 0% 100%

Существует проблема parted, связанная с выравниванием разделов. Эти 2 статьи обсуждают проблему немного:

Математика, изложенная в этих статьях, просто не работала в моих сценариях. Похоронен в одном из комментариев ко второму, кто-то по ссылке предложил использовать проценты, и это сработало.

Между прочим, вам, как правило, нужно также маркировать жесткий диск. Чтобы сделать это через CLI с parted:

$ parted /dev/sde --script -- mklabel msdos

-или-

$ parted /dev/sde --script -- mklabel gpt

В зависимости от вашего жесткого диска.

SLM
источник
gdiskвыравнивается правильно. На мой взгляд, partedэто бардак. Это делает слишком много - и вещи, которые это делает, только слабо связаны. Странно, как он создает файловые системы и таблицы разделов вместе - дисковые локации для данных, которые он записывает, совсем не похожи на те же окрестности. Я начал понимать, как работают диски, когда понял, что таблица разделов - это небольшая карта, расположенная в ее начале, и она сообщает операционной системе, где она может искать файловую систему, если захочет. Когда это щелкнуло, я понял, суперблоки и мегамен и все это. Ну, мне все равно нравится так думать.
mikeserv
Спасибо, сайт инструментов в этом пространстве всегда был для меня беспорядком. Я постоянно смешиваю sfdisk, fdisk, cfdisk, parted и т. Д. Я попробую fdisk и посмотрю, проще ли это. В основном ищем легкий для запуска вариант из cli для включения в скрипты.
SLM
По сути [gf]disk, не различайте их stdin - им все равно, если это из терминологии. Таким образом, любая последовательность команд, которую вы вводите в интерактивном режиме, чтобы получить то, что вы хотите, может быть напрямую переведена в printfскрипт. Все новые строки в моем ответе - только (or press enter for default)варианты. Это довольно легко. Когда я поиграться ж / них я просто пойти /tmpи , fallocate -l1g imgа затем просто использовать мой новый /tmp/imgфайл как мой диск - они не заботятся. Они просто хотят написать таблицу разделов. Если вы делаете то же самое, посмотрите, что происходит время от strings -1 imgвремени.
mikeserv
Но я лгал раньше - мегаман остается для меня загадкой. Может быть, он всегда будет.
mikeserv
1
с parted /dev/sdf --script -- mkpart primary 0 -1я получил предупреждение за не выравнивание для лучшей производительности. Все прошло нормально с процентами
nachoparker
2

Ты можешь сделать...

printf 'n\n\n\n\n\nw\n' | fdisk /dev/disk

... для типа MSDOS. Практически то же самое работает для gpt ...

printf 'n\n\n\n\n\nw\ny\n' | gdisk /dev/disk

И вы можете маркировать свой диск во время создания файловой системы.

mikeserv
источник