GPT PMBR size mismatch 解决方法

本文记录了在Debian系统中遇到的GPT分区表不匹配及损坏问题,并详细展示了使用fdisk和parted工具进行诊断和修复的过程,包括调整分区大小以利用全部磁盘空间。
部署运行你感兴趣的模型镜像

https://blog.youkuaiyun.com/agave7/article/details/83177858

root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# fdisk -l /dev/sdb
GPT PMBR size mismatch (60062499 != 60995327) will be corrected by w(rite).
The backup GPT table is corrupt, but the primary appears OK, so that will be used.

Disk /dev/sdb: 29.1 GiB, 31229607936 bytes, 60995328 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: gpt
Disk identifier: BE4B4A96-2EDA-4A01-886E-97A3523426A3

Device       Start      End Sectors  Size Type
/dev/sdb1     2048   104447  102400   50M EFI System
/dev/sdb2   104448   299007  194560   95M Linux filesystem
/dev/sdb3   299008  2252799 1953792  954M Linux filesystem
/dev/sdb4  2252800 10854399 8601600  4.1G Linux filesystem

root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# parted -l 
Model: ATA ST3500413AS (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size    Type      File system     Flags
 1      1049kB  496GB  496GB   primary   ext4            boot
 2      496GB   500GB  4218MB  extended
 5      496GB   500GB  4218MB  logical   linux-swap(v1)


Error: The backup GPT table is corrupt, but the primary appears OK, so that will
be used.
OK/Cancel? ok                                                             
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 932828 blocks) or continue with the current setting? 
Fix/Ignore? fix                                                           
Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sdb: 31.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name              Flags
 1      1049kB  53.5MB  52.4MB  fat16        Linux filesystem  boot, esp
 2      53.5MB  153MB   99.6MB  ext4
 3      153MB   1153MB  1000MB  ext4
 4      1153MB  5557MB  4404MB  ext4


Error: The backup GPT table is corrupt, but the primary appears OK, so that will be used.
OK/Cancel? ok                                                             
Model: SanDisk Ultra USB 3.0 (scsi)
Disk /dev/sdc: 30.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name              Flags
 1      1049kB  53.5MB  52.4MB  fat16        Linux filesystem  boot, esp
 2      53.5MB  153MB   99.6MB  ext4
 3      153MB   1153MB  1000MB  ext4
 4      1153MB  5557MB  4404MB  ext4


root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# 
root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# 
root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# 
root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# fdisk -l /dev/sdb

Disk /dev/sdb: 29.1 GiB, 31229607936 bytes, 60995328 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: gpt
Disk identifier: BE4B4A96-2EDA-4A01-886E-97A3523426A3

Device       Start      End Sectors  Size Type
/dev/sdb1     2048   104447  102400   50M EFI System
/dev/sdb2   104448   299007  194560   95M Linux filesystem
/dev/sdb3   299008  2252799 1953792  954M Linux filesystem
/dev/sdb4  2252800 10854399 8601600  4.1G Linux filesystem

root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# mount /dev/sdb4 /mnt/usb
mount: wrong fs type, bad option, bad superblock on /dev/sdb4,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# 
root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# 
root@debian:/home/liyezhen/src/sbk_debian_32bit/build/product_tools# fsck.ext4 /dev/sdb4 
e2fsck 1.42.12 (29-Aug-2014)
Superblock has an invalid journal (inode 8).
Clear<y>? yes
*** ext3 journal has been deleted - filesystem is now ext2 only ***
 

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

<think>我们面对的是三个相互关联的问题: 1. `sudo growpart /dev/sda 1` 提示分区无法增长(NOCHANGE) 2. `sudo resize2fs /dev/sda1` 提示找不到有效文件系统超级块 3. `sudo fdisk -l /dev/sda` 提示GPT PMBR大小不匹配 根据引用内容,我们已经有了一些操作提示,但需要整合并针对这三个问题给出解决方案。 问题分析: 1. GPT PMBR大小不匹配:这通常是因为磁盘的分区表是GPT格式,但是MBR备份(PMBR)中的磁盘大小信息与实际的GPT头中记录的大小不一致。这可能是由于磁盘被扩展后,PMBR没有更新导致的。 2. 分区无法增长:可能是因为分区表存在问题,或者分区已经占用了所有空间(但实际磁盘已扩展,所以可能是分区表未更新)。 3. 文件系统超级块错误:可能是文件系统损坏,或者分区并没有被正确格式化为ext文件系统(或者文件系统损坏)。 解决步骤: 步骤1:修复GPT PMBR大小不匹配 使用`gdisk`工具修复: ```bash sudo gdisk /dev/sda ``` 在gdisk交互界面中: - 输入`v`进行验证,会提示发现GPT PMBR大小不匹配。 - 输入`w`写入更改(它会自动修复这个不一致)?注意:它会提示是否写入,选择`Y`。 - 退出。 步骤2:重新调整分区大小 由于之前`growpart`无法调整,可能是因为分区表不一致导致。修复后,我们再次尝试使用`growpart`或者使用`parted`手动调整。 方法A:使用`growpart`(推荐) ```bash sudo growpart /dev/sda 1 ``` 方法B:使用`parted`手动调整(如果growpart仍然不行) ```bash sudo parted /dev/sda ``` 在parted交互界面: - `print free` 查看可用空间和分区情况。 - 选择分区1:`resizepart 1` - 输入结束位置为100%(或者具体的结束位置,但100%表示到磁盘末尾) - `quit` 步骤3:检查并修复文件系统 在调整分区大小后,我们需要检查文件系统是否有问题(因为之前提示超级块错误)。 首先,尝试使用`fsck`修复: ```bash sudo fsck -y /dev/sda1 ``` 如果修复成功,那么我们就可以进行文件系统大小的调整: ```bash sudo resize2fs /dev/sda1 ``` 如果`fsck`无法修复(比如找不到超级块),那么可能需要从备份超级块中恢复。首先尝试查找备份超级块: ```bash sudo mke2fs -n /dev/sda1 # 注意:这里使用-n选项,表示不真正创建文件系统,只是显示信息 ``` 输出中会显示备份超级块的位置(如32768, 98304等)。然后使用备份超级块进行修复: ```bash sudo fsck -b 32768 /dev/sda1 # 将32768替换为实际查看到的备份超级块位置 ``` 步骤4:调整文件系统大小 在文件系统修复后,使用`resize2fs`调整: ```bash sudo resize2fs /dev/sda1 ``` 步骤5:验证 ```bash sudo fdisk -l /dev/sda # 查看分区大小 df -h # 查看文件系统大小 ``` 注意事项: - 操作前建议备份重要数据。 - 如果分区是系统分区(如根分区),最好在救援模式下操作,或者使用Live CD/USB启动,以确保分区未被挂载。 根据引用[2]中的操作,如果分区表操作复杂(比如删除重建分区),那么需要注意分区重建后可能会导致文件系统损坏,所以操作前必须备份。 但是,我们这里先尝试不删除分区,而是修复GPT表并调整分区大小。 如果上述步骤无法解决,可能需要考虑重建分区表(但这样风险较大,需要备份): 1. 备份分区表(使用sfdisk) 2. 删除分区并重建(确保起始扇区相同,结束扇区到100%) 3. 然后执行文件系统修复和扩展。 不过,我们首先尝试用安全的方式修复。 生成的相关问题: 1. 如何备份和恢复磁盘分区表? 2. 在Linux中如何修复损坏的ext4文件系统? 3. 使用parted调整分区大小时有哪些注意事项? 4. 如何避免GPT PMBR大小不匹配的问题? 5. 在调整分区大小时如何确保数据安全? </think> ### 解决分区扩展、超级块错误和GPT PMBR不匹配问题 以下是一步一步的解决方案,整合了三个相互关联的问题: #### 🔧 步骤1:修复GPT PMBR大小不匹配 ```bash sudo gdisk /dev/sda ``` 在gdisk交互界面: 1. 输入 `r` 进入恢复菜单 2. 输入 `e` 将GPT数据写入MBR(修复PMBR不匹配) 3. 输入 `w` 写入更改并退出 4. 输入 `y` 确认操作 5. 更新内核分区表: ```bash sudo partprobe /dev/sda ``` #### 📊 步骤2:验证磁盘状态 ```bash sudo fdisk -l /dev/sda ``` 检查输出: - 确认磁盘总大小(如200GB) - 检查分区1结束位置是否接近磁盘末尾 - 查看是否有未分配空间 #### ⚙️ 步骤3:手动扩展分区(解决growpart失败) ```bash sudo parted /dev/sda ``` 在parted交互界面: ```parted (parted) resizepart 1 # 选择分区1 End? [当前值]? 100% # 扩展到磁盘末尾 (parted) quit ``` 更新分区表: ```bash sudo partprobe /dev/sda ``` #### 🛠 步骤4:修复文件系统超级块错误 1. **查找备用超级块**: ```bash sudo mke2fs -n /dev/sda1 # 注意:-n参数表示模拟操作 ``` 输出中查找类似信息: ``` Superblock backups stored on blocks: 32768, 98304, 163840, ... ``` 2. **使用备用超级块修复**: ```bash sudo fsck -b 32768 -y /dev/sda1 # 使用第一个备用超级块 ``` 3. **完整文件系统检查**: ```bash sudo fsck -fy /dev/sda1 # 强制修复所有错误 ``` #### 📈 步骤5:扩展文件系统 ```bash sudo resize2fs /dev/sda1 ``` #### ✅ 步骤6:验证结果 ```bash # 检查分区大小 sudo parted /dev/sda print # 检查文件系统状态 sudo dumpe2fs /dev/sda1 | grep -i superblock # 查看实际使用空间 df -h /dev/sda1 ``` #### ⚠️ 关键注意事项 1. **操作风险**: - 重要数据备份:`sudo dd if=/dev/sda1 of=/path/to/backup.img bs=4M` - 操作前卸载分区:`sudo umount /dev/sda1` 2. **GPT/MBR区别**: - 如果磁盘<2TB,可考虑转MBR:`sudo gdisk /dev/sda` → `r` → `g` 创建MBR副本 - GPT磁盘分区号从1开始,MBR从0开始 3. **虚拟机特殊处理**: ```bash # VMware磁盘工具整理 sudo vmware-toolbox-cmd disk shrink / ``` #### 问题原因总结 | 问题 | 根本原因 | 解决方案 | |------|----------|----------| | `growpart`失败 | 分区表损坏/未更新 | 使用`parted`手动扩展分区 | | 超级块错误 | 文件系统元数据损坏 | `fsck -b`恢复备用超级块 | | GPT PMBR不匹配 | GPT与MBR备份不一致 | `gdisk`修复分区表一致性 | --- ### 🔍 相关问题 1. 如何无损将 MBR 分区表转换为 GPT 分区表? 2. Linux 下如何恢复损坏的 ext4 文件系统数据? 3. 使用 LVM 扩展磁盘容量的正确步骤是什么? 4. 如何检测硬盘是否存在物理坏道? 5. 在虚拟机环境中扩展磁盘后需要特别注意什么?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值