如何修复 GPT 磁盘 (/dev/sdaX) 上的分区数量

如何修复 GPT 磁盘 (/dev/sdaX) 上的分区数量

我使用 Gparted 删除了辅助驱动器上的 EFI (/dev/sda1) 和 Ubuntu (/dev/sda2) 分区。第三个分区 (/dev/sda3) 用于存储数据,因此我调整了它的大小,以便通过删除前两个分区来使用我获得的所有未分配空间。现在,磁盘上只有一个唯一分区,我想修复它的编号,以便获取 /dev/sda1。对于具有 GPT 分区表的磁盘,最简单的方法是什么?谢谢!

答案1

您可以使用gdisk以下方法来重写分区表:

sudo gdisk /dev/sda
p(p 命令在屏幕上打印最近的分区表)
s(s 命令对分区表条目进行排序)
p(再次使用 p 命令即可在屏幕上查看结果)
w(将改变的分区表写入磁盘)
q(退出 gdisk)

gdisk您将找到有关http://www.rodsbooks.com/gdisk/

答案2

发现最后一个链接后,我非常感兴趣,也非常想学习一些新东西,于是我使用 32GB USB 驱动器在我的系统上重现了 Generoso 的分区情况。以下是我的发现,但首先是我的:

结论:由于我的示例针对的是 1(最终)分区,因此在接近尾声时我只是更改了它的名称。我没有触及实际的扇区。在我上面评论的链接中,显示了一个移动扇区号的示例。我照做了,结果搞砸了,毁掉了 USB 磁盘,证明了玩弄分区是多么危险!!
也许我的方案也适用于多个分区,请随意尝试。我敢让你用你的主分区来做它。哈哈。
好的,这是我的:

发现:我使用 Gparted 创建了 3 个分区,每个分区 1 GB。

# fdisk -l /dev/sdc
Disk /dev/sdc: 30 GiB, 32176472064 bytes, 62844672 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf33657fc

Device     Boot   Start     End Sectors Size Id Type
/dev/sdc1          2048 2099199 2097152   1G 83 Linux
/dev/sdc2       2099200 4196351 2097152   1G 83 Linux
/dev/sdc3       4196352 6293503 2097152   1G 83 Linux

使用磁盘安装分区 3。
手动在其上放置文件。

# ls -l /media/willem/cd4746ac-6d9f-4057-9396-a593ce2f301d/
total 21436
drwx------ 2 root root    16384 May 27 00:12 lost+found
-rw-r--r-- 1 root root 21930117 May 27 00:14 SomeFile.txt

使用磁盘卸载分区 3。
使用 Gparted 删除分区 1 和 2,并扩大分区 3 以使用整个磁盘。

# fdisk -l /dev/sdc
Disk /dev/sdc: 30 GiB, 32176472064 bytes, 62844672 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf33657fc

Device     Boot Start      End  Sectors Size Id Type
/dev/sdc3        8192 62844671 62836480  30G 83 Linux

使用磁盘挂载分区 3。
检查分区 3 上的文件。

# ls -l /media/willem/cd4746ac-6d9f-4057-9396-a593ce2f301d/
total 21436
drwx------ 2 root root    16384 May 27 00:12 lost+found
-rw-r--r-- 1 root root 21930117 May 27 00:14 SomeFile.txt

使用磁盘卸载分区 3.
从驱动器复制分区表。
显示分区表。

# sfdisk -d /dev/sdc > sdc.tab
# cat sdc.tab
label: dos
label-id: 0xf33657fc
device: /dev/sdc
unit: sectors

/dev/sdc3 : start=        8192, size=    62836480, type=83

使用 将vi sdc.tabsdc3 更改为 sdc1。
应用更改后的分区表。

# sfdisk --no-reread -f /dev/sdc < sdc.tab
Disk /dev/sdc: 30 GiB, 32176472064 bytes, 62844672 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf33657fc

Old situation:

Device     Boot Start      End  Sectors Size Id Type
/dev/sdc3        8192 62844671 62836480  30G 83 Linux

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0xf33657fc.
Created a new partition 1 of type 'Linux' and of size 30 GiB.
/dev/sdc2: 
New situation:

Device     Boot Start      End  Sectors Size Id Type
/dev/sdc1        8192 62844671 62836480  30G 83 Linux

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

命令完成后,分区 1 将自动挂载。
检查文件。

# ls -l /media/willem/cd4746ac-6d9f-4057-9396-a593ce2f301d/
total 21436
drwx------ 2 root root    16384 May 27 00:12 lost+found
-rw-r--r-- 1 root root 21930117 May 27 00:14 SomeFile.txt

使用磁盘卸载分区 1。
完成。

PS. 我cat SomeFile.txt每次都这么做,但我觉得没有必要包含该输出。

答案3

您应该已经将 /dev/sda1 的大小调整为大于 /dev/sda3。然后将 sda3 复制到 sda1 上。检查 sda1 文件,如果没有问题,删除 sda3,并相应地调整 sda1 的大小。

相关内容