Backup
為什麼驅動器圖像顯示不同的起始分區可用大小?
我製作了 /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。