Backup

為什麼驅動器圖像顯示不同的起始分區可用大小?

  • July 31, 2021

我製作了 /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

Edit2:在兩者上執行 md5sum 後,它們顯示相同的雜湊

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

這沒什麼好擔心的,這只是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。

引用自:https://unix.stackexchange.com/questions/662720