![使用 sfdisk 缩小分区后恢复 GPT](https://linux22.com/image/907757/%E4%BD%BF%E7%94%A8%20sfdisk%20%E7%BC%A9%E5%B0%8F%E5%88%86%E5%8C%BA%E5%90%8E%E6%81%A2%E5%A4%8D%20GPT.png)
一年前,我的硬盘在 Windows 上可用,但无法在 Ubuntu 上安装。我在 Ubuntu 上使用了一些表修复工具,但它只是破坏了 GUID 表。我在 Windows 上使用分区向导修复了表并继续使用它,除了逻辑分区的结束位置大于磁盘扇区数(来自 gparted 和 sfdisk 输出的信息)之外,没有任何变化。
因此,获得 sfdisk 的此输出并遵循此(混合 GPT 和 MBR)操作说明
磁盘 /dev/sdb:1.8 TiB,2000397852160 字节,3907027055 个扇区 单位:扇区 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标签类型:gpt 磁盘标识符:9F126AEE-463C-394E-A817-2AD9C33C6946 设备 起始 结束 扇区 大小 类型 /dev/sdb1 264192 3907028992 3906764800 1.8T 微软基础数据
我修改了 sdb1 大小的值,使最后一个扇区的编号为 [sfdisk 给出的最大可能值] = 3907027021,并使用 sfdisk 将其重写为 /dev/sdb。之后,ntfs 分区在 Ubuntu 和 Windows 中可见,但无法挂载。
现在我有了来自 sfdisk 的备份文件:
标签: gpt 标签 ID:9F126AEE-463C-394E-A817-2AD9C33C6946 设备:/dev/sdb 单位:部门 首发-lba: 34 最后一个 lba:3907027021 /dev/sdb1:起始=264192,大小=3906764800,类型=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7,uuid=B5CAA620-E5FD-3343-B7A6-135065D0AD95
但是不能通过同样的过程 [sfdisk /dev/sdb < backup.txt] 将其写入 /dev/sdb,因为它不允许将结束扇区的值设置为大于磁盘扇区的数量:
/dev/sdb1:最后可用的 GPT 扇区是 3907027021,但请求 3907028991。 无法添加 #1 分区:参数无效
sfdisk 的版本是 2.31.1。gpart 给出的信息:
GPT fdisk (gdisk) version 1.0.3
Type device filename, or press to exit: /dev/sdb
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sdb: 3907027055 sectors, 1.8 TiB
Model: ST2000DM001-9YN1
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 9F126AEE-463C-394E-A817-2AD9C33C6946
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3907027021
Partitions will be aligned on 2048-sector boundaries
Total free space is 264158 sectors (129.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 264192 3907027021 1.8 TiB 0700
Command (? for help): v
No problems found. 264158 free sectors (129.0 MiB) available in 1
segments, the largest of which is 264158 (129.0 MiB) in size.
是否可以使用剩余信息修复 GUID 表?
答案1
好的,就我而言,实用程序 testdisk 自动修复了分区属性,现在至少在 Windows 上硬盘再次可见了。
PS 在向最后一个分区末尾添加几兆字节(重叠块的数量乘以块的大小应该是可以接受的)后,即通过 Windows 上的实用程序缩小一点,它也可以从 Ubuntu 中使用。