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

Вопрос или проблема

Чтобы клонировать раздел с помощью dd.exe, который поставляется с MSYS2 для Windows, нам нужно 3 части информации.

  1. имя физического диска
  2. начальный смещение раздела (в Миб)
  3. размер раздела (в Миб)
dd if=имя_физического_диска of=backup.img bs=1M skip=начальный_смещение count=размер status=progress

Чтобы перечислить доступные физические дисковые накопители, мы можем использовать команду:

wmic diskdrive get Caption,Index,MediaType

На моей системе это выводит:

Caption                    Index    MediaType
PC SN530 NVMe WDC 512GB    0        Fixed hard disk media
PNY USB 3.0 FD USB Device  1        Removable Media

Я заинтересован в своем NVMe-накопителе, поэтому я использую его индекс (0), чтобы найти требование #1, которое является именем физического диска:

wmic diskdrive where "Index=0" get DeviceID,Partitions,Status,MediaLoaded

он выводит:

DeviceID            MediaLoaded  Partitions  Status
\\.\PHYSICALDRIVE0  TRUE         8           OK

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

wmic partition where "DiskIndex=0" get Name,Index,Type,StartingOffset,BlockSize,NumberOfBlocks,Size

Она выводит:

BlockSize  Index  Name                   NumberOfBlocks  Size          StartingOffset  Type
512        0      Disk #0, Partition #0  614400          314572800     1048576         GPT: System
512        1      Disk #0, Partition #1  727875584       372672299008  449839104       GPT: Basic Data
512        2      Disk #0, Partition #2  225282048       115344408576  373123186688    GPT: Basic Data
512        3      Disk #0, Partition #3  102400          52428800      488467595264    GPT: Basic Data
512        4      Disk #0, Partition #4  2123776         1087373312    488520024064    GPT: Unknown
512        5      Disk #0, Partition #5  2027520         1038090240    489609494528    GPT: Unknown
512        6      Disk #0, Partition #6  39032832        19984809984   490647584768    GPT: Unknown
512        7      Disk #0, Partition #7  2883584         1476395008    510633443328    GPT: Unknown

Теперь мы можем использовать начальное смещение и размер выбранного нами раздела с помощью dd.exe, чтобы клонировать его. Однако этот вывод не дает нам подсказки о содержимом разделов. Для этого нам нужно перечислить тома, чтобы мы могли просмотреть файловые системы и метки отформатированных разделов:

wmic volume where "DriveType=3" get Label,DeviceID,DriveLetter,DriveType,SerialNumber,FileSystem,MaximumFileNameLength,BlockSize,Capacity,FreeSpace

Она выводит:

BlockSize  Capacity      DeviceID                                           DriveLetter  DriveType  FileSystem  FreeSpace     Label        MaximumFileNameLength  SerialNumber
4096       372672294912  \\?\Volume{41d21340-a487-4021-9735-3e999ccfc734}\  C:           3          NTFS        232339791872  OS           255                    3295242676
                         \\?\Volume{e5ffe5ea-3596-468c-832f-e5bcf2aeb39e}\               3
512        48234496      \\?\Volume{5792630e-1c80-4d8a-a679-82ec4cd0ecdc}\               3          FAT32       39666176      GRUBX64      255                    716055397
4096       1087369216    \\?\Volume{19df495f-4e17-41fb-bcb0-d33d40588153}\               3          NTFS        161165312                  255                    1445116501
4096       1038086144    \\?\Volume{9e1ca148-9cff-4576-ba37-cad1aab53ba1}\               3          NTFS        501415936     WINRETOOLS   255                    4141927052
4096       19984805888   \\?\Volume{0e8ffde2-0844-4d79-ada2-a3ea534dcc6b}\               3          NTFS        136228864     Image        255                    3940616972
4096       1476390912    \\?\Volume{a847a1f9-be5e-4f38-80ff-e5617868e2a1}\               3          NTFS        505286656     DELLSUPPORT  255                    1554162235
4096       310378496     \\?\Volume{9685da03-f3a8-4f89-88f2-1b9dafc3bd38}\               3          FAT32       203812864     ESP          255                    684405683

Если мы можем определить номер раздела тома, который нас интересует, мы можем обратиться к таблице разделов, чтобы найти начальное смещение и размер, чтобы использовать их с dd.exe, но как мы можем это сделать?

Надежные (уникальные) атрибуты тома – это серийный номер, deviceID и (метка и буква диска, если таковые имеются). Размер, как правило, ненадежен, так как 2 или более разделов могут иметь одинаковый размер.

Предположим, что нас интересует том DELLSUPPORT, как мы можем узнать номер его раздела, чтобы мы могли найти его начальное смещение и размер для использования с dd.exe?

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

Если вы хотите сделать резервную копию раздела, вам нужно указать логическое имя для этого раздела. Чтобы получить их, вам нужно использовать стандартный инструмент fdisk:

# чтобы получить все разделы всех физических дисков:
fdisk -l 
# чтобы получить разделы только для основного жесткого диска:
fdisk -l /dev/sda

Еще одно неверное предположение о dd: вам не нужно указывать начало раздела и размер. Если вы хотите весь раздел – вам нужно только имя. Если вы укажете начало и размер, вы получите только сегмент этого раздела.
Таким образом, чтобы сделать резервную копию загрузочного раздела, вам нужно только:

dd if=/dev/sda1 of=backup.img

Также не рекомендуется смешивать цепочки инструментов (dd из msys2, wmic из управления windows). Это возможно, но приводит к множеству путаницы и ненужной конверсии данных. Если вы начали использовать инструменты msys2 – используйте их. Если wmic вам больше по душе – используйте собственные инструменты резервного копирования Windows.

Ответ или решение

Чтобы успешно клонировать раздел с помощью dd.exe, который поставляется с MSYS2 для Windows, необходимо получить три важных элемента информации: физическое имя диска, начальный смещение раздела (в Мбайтах) и размер раздела (в Мбайтах). Давайте рассмотрим, как можно получить эти данные.

1. Получение физического имени диска

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

wmic diskdrive get Caption,Index,MediaType

Эта команда покажет список всех доступных физических дисков. Например, вы можете получить следующий вывод:

Caption                    Index    MediaType
PC SN530 NVMe WDC 512GB    0        Fixed hard disk media
PNY USB 3.0 FD USB Device  1        Removable Media

В этом примере мы заинтересованы в NVMe диске, индекс которого равен 0.

2. Получение информации о разделе

Чтобы получить информацию о разделах на выбранном диске, выполните следующую команду:

wmic partition where "DiskIndex=0" get Name,Index,Type,StartingOffset,BlockSize,NumberOfBlocks,Size

Результат может выглядеть следующим образом:

BlockSize  Index  Name                   NumberOfBlocks  Size          StartingOffset  Type
512        0      Disk #0, Partition #0  614400          314572800     1048576         GPT: System
512        1      Disk #0, Partition #1  727875584       372672299008  449839104       GPT: Basic Data
512        2      Disk #0, Partition #2  225282048       115344408576  373123186688    GPT: Basic Data
...

Здесь вы можете найти StartingOffset и Size для каждого раздела. Для дальнейшего клонирования нам эти параметры будут необходимы.

3. Получение информации о логических томах

Для того чтобы понять, какие разделы содержат данные, посмотрите информацию о логических томах с помощью следующей команды:

wmic volume where "DriveType=3" get Label,DeviceID,DriveLetter,DriveType,SerialNumber,FileSystem,MaximumFileNameLength,BlockSize,Capacity,FreeSpace

Вывод будет содержать информацию о каждом логическом томе, включая его метку, файловую систему и доступное пространство. Пример вывода:

BlockSize  Capacity      DeviceID                                           DriveLetter  DriveType  FileSystem  FreeSpace     Label
4096       372672294912  \\?\Volume{41d21340-a487-4021-9735-3e999ccfc734}\  C:           3          NTFS        232339791872  OS
...

4. Связывание тома с разделом

Теперь, имея все необходимые данные, определите номер раздела, соответствующий интересующему вас логическому тому. Если, например, вас интересует том с меткой DELLSUPPORT, вам нужно найти его информацию в выводе, а затем сопоставить её с информацией о разделах.

Чтобы это сделать более надёжно, используйте серийный номер тома, DeviceID или метку (если она доступна) как уникальный идентификатор для сопоставления.

5. Создание резервной копии с помощью dd.exe

После того как вы получили StartingOffset и Size (в Мбайтах) нужного вам раздела, вы можете использовать следующую команду для клонирования:

dd if=\\.\PHYSICALDRIVE0 of=backup.img bs=1M skip=starting_offset count=size status=progress

Это создаст образ раздела. Убедитесь, что вы правильно указали параметры starting_offset и size для получения полного или частичного образа нужного вам раздела.

Заключение

Клонирование разделов и управление дисками — это ответственные операции, требующие точности в работе с данными. Следуя приведённым шагам, вы сможете успешно получить информацию о разделе и выполнить его клонирование с использованием dd.exe. Обязательно создавайте резервные копии важных данных перед выполнением операций, которые могут повредить информацию.

Оцените материал
Добавить комментарий

Капча загружается...