Форматирование диска и создание раздела с использованием максимального количества цилиндров через bash

Обычно мы используем parted или fdisk для создания нового раздела, но в моем случае я хочу сделать это не интерактивно в скрипте. Интерактивная сессия fdisk будет выглядеть так:

# fdisk /dev/sdb
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1): [[ENTER]]
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): [[ENTER]]
Using default value 13054

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
# fdisk -l /dev/sdb

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7a0ce571

    Device Boot      Start         End      Blocks   Id  System
/dev/sdb1                1       13054   104856223+  83  Linux

Самое близкое, что я могу получить, это следующее, где цилиндры не совпадают до 13054, указанного максимума:

# parted -s -- /dev/sdb mklabel msdos
# parted -s -- /dev/sdb mkpart primary ext3 1 -1
# fdisk -l /dev/xvdb

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d3807

    Device Boot      Start         End      Blocks   Id  System
/dev/sdb1                1       13055   104856576   83  Linux

Таким образом, стандартные способы сделать это - использовать parted, выводить команды для fdisk или использовать здесь документ, переданный в sfdisk. Есть ли другие способы создать один раздел, используя максимальное количество цилиндров?

РЕДАКТИРОВАТЬ: похоже, передача '-a цилиндр' приводит к тому, что parted ведет себя так же, как fdisk. Но передача -a оптимальна... оптимально основана на топологии диска? Кто-нибудь может объяснить это? Почему fdisk выравнивается по цилиндрам, а не "оптимально"?

1 ответ

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

fdisk "$DISK" <файл_инструкций

Я должен предупредить, что у этого есть большой потенциал, чтобы пойти ужасно неправильно, проявить крайнюю осторожность.

Другие вопросы по тегам