드라이브 이미지에 사용 가능한 시작 파티션 크기가 다르게 표시되는 이유는 무엇입니까?

드라이브 이미지에 사용 가능한 시작 파티션 크기가 다르게 표시되는 이유는 무엇입니까?

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

관련 정보