Мне нужно создать образ диска, содержащий MBR и один основной раздел. Раздел содержит файловую систему ext3, размер которой был минимален с помощью resize2fs -M /dev/sdc1 . Я получил вывод, что файловая система теперь N блоков больших, где один блок 4K. Теперь я думаю, что мне нужны первые N * 4K байт раздела. Но сколько байтов перед этим разделом (я думаю, что MBR и таблица разделов сами по себе имеют некоторый размер) также необходимы?

Компоновка - это только один основной раздел, начинающийся в начале диска.

Итак, вопрос в том, как я могу получить от количества блоков N до реального требуемого количества байтов?

1 ответ1

1

MBR находится в самом начале дискового блочного устройства ("в нулевом секторе"). Вы можете использовать fdisk чтобы узнать смещение раздела (то есть, где первый блок файловой системы относительно начала диска). Обратите внимание, что я использую u для переключения единиц измерения на сектора, которые, как показано в выводе, составляют 512 байт для этого диска.

# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): p

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bbac4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         1026048   167772159    83373056   8e  Linux LVM

Command (m for help): q
#

(Чтобы избежать путаницы, я должен уточнить, что блоки в столбце Blocks fdisk - это блоки размером 1 КБ, а не блоки любого размера, которые может использовать ваша файловая система или блочное устройство.)

В этом примере с виртуальной машины /dev/sda1 , который является разделом my /boot , начинается с сектора 2048, который является 256-м блоком 4k (2048 секторов * 512 байт / 4096 байт = 256 блоков 4k).

Если бы я знал, что только что изменил размер файловой системы в /dev/sda1 до 100000 блоков 4k, я мог бы скопировать первые 256 + 100000 = 100256 блоков 4k из /dev/sda в образ, чтобы получить MBR и все /boot раздел.

например

dd if=/dev/sda of=my_backup.img bs=4096 count=100256

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .