ドライブイメージに使用可能な起動パーティションのサイズが異なるように表示されるのはなぜですか?

ドライブイメージに使用可能な起動パーティションのサイズが異なるように表示されるのはなぜですか?

/dev/sdcというイメージを作成しました。最初のパーティションの前の空き領域が同じバイトサイズを報告しないのはなぜですか?

1024Bドライブと16384B画像に開始位置が報告されていますか?

# parted /dev/sdc u b p free
Model: ASMT 2105 (scsi)
Disk /dev/sdc: 500107862016B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start     End            Size           Type     File system  Flags
        1024B     1048575B       1047552B                Free Space
 1      1048576B  500107862015B  500106813440B  primary  btrfs


                                                                          
# parted d1/drive1.sdc.img u b p free
Model:  (file)
Disk /mnt/4/d1/drive1.sdc.img: 500107862016B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start     End            Size           Type     File system  Flags
        16384B    1048575B       1032192B                Free Space
 1      1048576B  500107862015B  500106813440B  primary  btrfs

編集:私はこのようなイメージを作りました

# pv /dev/sdc > d1/drive1.sdc.img

編集2:両方でmd5sumを実行すると、同じハッシュ値が表示されます。

# dd if=/dev/sdc | md5sum; pv d1/drive1.sdc.img | md5sum

ベストアンサー1

心配する必要はありません。parted「ディスク」ジオメトリはディスクではなくファイルなので取得できません。イメージからループファイルを作成する場合は、空き領域を同じ場所で開始する必要があります。

ディスクイメージファイルの使用:

(parted) p free                                                           
Model:  (file)
Disk /home/vtrefny/disk.img: 104857600B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End         Size        Type  File system  Flags
        16384B  104857599B  104841216B        Free Space

ループ機器の使用:

(parted) p free                                                           
Model: Loopback device (loopback)
Disk /dev/loop2: 105MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End    Size   Type  File system  Flags
        1024B  105MB  105MB        Free Space

partedディスクの先頭(そしてGPTの終わり)に「偽」のメタデータパーティションを作成し、新しいパーティションが作成されたときにパーティションテーブルが上書きされるのを防ぎます。最初の空き領域は、このメタデータパーティションの後に始まります。 AFAICTこのメタデータパーティションのディスクサイズは、セクタ1 + sector_size / 512(512Bセクタサイズディスクの場合は2セクタ)としてカウントされ、32ファイルのセクタ(= 16KiB / 16384B)にハードコードされます(ここではおそらく間違っています。結果は次のとおりです) 。私は別のコードを見て、pypartedを使用しています)。

通常、パーティションを作成するときは、最高のパフォーマンスを得るために開始位置がソートされ、セクタサイズ、最適なIOサイズ、またはディスクグレインサイズなどの要素が考慮され、ソートされた「空き容量」が表示されるpartedことがあります。fdisk(「リアル」ディスクを使用しても、空き容量の先頭がfdisk示されているように、1KiBではなく1MiBで印刷されますparted)。

おすすめ記事