External-Hdd

從 USB3 移動到 SATA 時 (GPT) 分區表位置是否會發生變化?

  • October 29, 2015

我剛剛打開了一個外部 USB 3.0 硬碟盒並通過 SATA 將磁碟安裝在 PC 內部。現在,Linux 系統停止查找肯定存在的 GPT。由於磁碟上已經有 2 TB 的數據,因此很高興找到已經存在的分區表。

使用不同的介面(USB、SATA)時,GPT 的位置可以改變嗎?如何修復?

這是安裝在 PC (SATA) 中的 gdisk 輸出:

# gdisk /dev/disk/by-id/ata-TOSHIBA_DT01ABA300_123456890
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
 MBR: protective
 BSD: not present
 APM: not present
 GPT: not present

Creating new GPT entries.

Command (? for help): q

該磁碟是東芝 DT01ABA300(如上所示),位於東芝 Canvio USB3 機箱中。

以下是 的相關部分dmesg

[    1.618441] scsi host9: ahci
[    1.618485] ata9: SATA max UDMA/133 abar m512@0xfd1ff000 port 0xfd1ff100 irq 42
[    2.106001] ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.107329] ata9.00: ATA-8: TOSHIBA DT01ACA300, MX6OABB0, max UDMA/133
[    2.107332] ata9.00: 5860533168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[    2.108712] ata9.00: configured for UDMA/133
[    2.609553] scsi 9:0:0:0: Direct-Access     ATA      TOSHIBA DT01ABA3 ABB0 PQ: 0 ANSI: 5
[    2.609699] sd 9:0:0:0: [sdg] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    2.609703] sd 9:0:0:0: [sdg] 4096-byte physical blocks
[    2.609785] sd 9:0:0:0: [sdg] Write Protect is off
[    2.609788] sd 9:0:0:0: [sdg] Mode Sense: 00 3a 00 00
[    2.609825] sd 9:0:0:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.637653] sd 9:0:0:0: [sdg] Attached SCSI disk

這是我在原始磁碟上找到 EFI (GPT?!) 簽名的地方:

dd if=/dev/sdg bs=2M count=32 | hexdump -C | grep -w EFI
32+0 records in
32+0 records out
67108864 bytes (67 MB) copied, 0.447864 s, 150 MB/s
00001000  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|

我沒有找到gdisk從特定偏移量讀取 GPT 的參數。我該如何閱讀它?

# parted /dev/sdg
GNU Parted 3.2
Using /dev/sdg
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b                                                           
(parted) print                                                            
Error: /dev/sdg: unrecognised disk label
Model: ATA TOSHIBA DT01ABA3 (scsi)                                        
Disk /dev/sdg: 3000592982016B
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags: 
(parted) q

和:

# losetup --find --show /dev/sdg
/dev/loop0
# parted /dev/loop0
GNU Parted 3.2
Using /dev/loop0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b                                                           
(parted) print                                                            
Error: /dev/loop0: unrecognised disk label
Model: Loopback device (loopback)                                         
Disk /dev/loop0: 3000592982016B
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 
(parted)

使用不同的介面(USB、SATA)時,GPT 的位置可以改變嗎?

是的,因為 GPT 是愚蠢的並且取決於扇區大小,並且一些 USB 機箱512b在它真的是扇區時聲稱扇區,4096b反之亦然。

是的,因為 Linux 很愚蠢並且不支持 GPT 用於不同的塊大小,即使它應該可以自動檢測到這一點。

您可能必須重新創建分區表才能從 GPT-512 轉換為 GPT-4096,並希望這些分區與 MiB 對齊以首先允許此類轉換。

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