Fdisk
GPT 磁碟在外部對接托架和內部交換托架中看起來不同
我有一個硬碟,用於通過 USB 2.0 擴展塢進行備份。該磁碟有一個 GPT 和一個單獨的 ext4 分區。通過擴展塢一切都很好,但是如果我將磁碟連接到內部 SATA 埠,或者將其放入 PC 的交換托架中,GPT 就不再存在了。
這是磁碟在擴展塢中時得到的結果,一切正常:
$ sudo fdisk -l /dev/sdg Disk /dev/sdg: 1.8 TiB, 2000398934016 bytes, 488378646 sectors Disk model: 001-1CH164 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 2C0A0696-2318-4BBD-9329-0115AB5AC313 Device Start End Sectors Size Type /dev/sdg1 512 488378367 488377856 1.8T Linux filesystem $ sudo parted /dev/sdg print Model: ST2000DM 001-1CH164 (scsi) Disk /dev/sdg: 2000GB Sector size (logical/physical): 4096B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 2097kB 2000GB 2000GB ext4 MUSICBUP
以下是磁碟位於內部交換托架或任何其他內部 SATA 埠時相同命令的輸出:
$ sudo fdisk -l /dev/sdg GPT PMBR size mismatch (488378645 != 3907029167) will be corrected by write. Disk /dev/sdg: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors Disk model: ST2000DM001-1CH1 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdg1 1 3907029167 3907029167 1.8T ee GPT Partition 1 does not start on physical sector boundary. $ sudo parted /dev/sdg print Error: /dev/sdg: unrecognised disk label Model: ATA ST2000DM001-1CH1 (scsi) Disk /dev/sdg: 2000GB Sector size (logical/physical): 512B/4096B Partition Table: unknown Disk Flags:
版本:
fdisk from util-linux 2.33.1
和parted (GNU parted) 3.2
作業系統:Debian 10 剋星
4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 GNU/Linux
smartctl
資訊(兩種情況相同):=== START OF INFORMATION SECTION === Model Family: Seagate Barracuda 7200.14 (AF) Device Model: ST2000DM001-1CH164 Serial Number: Z1E6Q80D LU WWN Device Id: 5 000c50 065bb1ceb Firmware Version: CC27 User Capacity: 2,000,398,934,016 bytes [2.00 TB] Sector Sizes: 512 bytes logical, 4096 bytes physical Rotation Rate: 7200 rpm Form Factor: 3.5 inches Device is: In smartctl database [for details use: -P show] ATA Version is: ACS-2, ACS-3 T13/2161-D revision 3b SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Sun Mar 28 13:00:17 2021 CEST SMART support is: Available - device has SMART capability. SMART support is: Enabled
我已經嘗試過:將分區向右移動,
gparted
以確保它與 MiB 對齊。這沒有幫助,實際上parted
已經告訴我分區已最佳對齊(在對接時)。我注意到的一件事是,在外部對接(4096)和內部(512)中,邏輯扇區大小不同。
當然,我將數據複製到其他地方,我可以在它連接到 PC 時重新格式化它,但我想從中學到一些東西,看看是否有辦法糾正目前的 GPT。有任何想法嗎?
不幸的是,GPT 仍然取決於邏輯扇區大小,在您的情況下它會有所不同:
Sector size (logical/physical): 4096 bytes / 4096 bytes Sector size (logical/physical): 4096B/4096B
對比
Sector size (logical/physical): 512 bytes / 4096 bytes Sector size (logical/physical): 512B/4096B
差異通常是因為某些控制器/USB 橋接器模擬了錯誤的扇區大小。
losetup
您可以通過使用with--sector-size
參數來解決它:losetup --find --show --partscan --sector-size 4096 /dev/sdg
然後檢查
/dev/loopXpY
設備。如果您獲得另一個不強制使用 4K 邏輯扇區大小的 USB 機箱,則必須為 512 字節扇區重新創建分區表。不可能創建一個適用於兩種扇區大小的分區表 - 您可以使用 LVM 來創建,但 LVM 不是分區表格式。