为什么驱动器映像显示不同的起始分区可用大小?

为什么驱动器映像显示不同的起始分区可用大小?

我制作了 /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(512 B 扇区大小的磁盘为 2 个扇区),并硬编码为32文件的扇区(= 16 KiB/16384 B)(我在这里可能是错的,这是我凝视的结果分开代码并使用 pyparted)。

一般来说,在创建分区时,其起始位置会对齐以实现最佳性能,并且会考虑扇区大小、最佳 IO 大小或磁盘颗粒大小等因素,并且parted有时fdisk会显示已对齐的“可用空间”等工具(即使使用“真实”磁盘,fdisk会将可用空间的开头打印为 1 MiB,而不是parted) 所示的 1 KiB。

相关内容