
/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
)。