撰于 阅读 105

Linux 使用 LVM 在 PVE 增加硬盘空间后更新分区表和扩容虚拟机磁盘目录

PVE虚拟机增加硬盘空间后,输入fdisk -l后出现以下错误解决方法

GPT PMBR size mismatch (67108863 != 83886079) will be corrected by write.
The backup GPT table is not on the end of the device.

备份数据:在进行任何磁盘操作之前,确保已备份虚拟机中的重要数据

使用parted修复

安装parted工具(如果尚未安装):

apt install parted

最简单快捷的办法就是直接输入

sudo parted -l

然后输入

fix

就好了
或者使用以下方式
运行以下命令,替换 /dev/sdX 为你的虚拟磁盘(例如 /dev/sda):

sudo parted /dev/sdX

在 parted 提示符下,输入以下命令:

print

输入以下命令来检查分区表:

mklabel gpt

parted将会提示你确认。如果你确认要修复GPT表,请输入yes,这一步会重新创建分区表,但不会删除数据
如果mklabel步骤后需要重新添加分区,请记录下每个分区的起始位置和大小,并使用以下命令重新添加分区:

mkpart primary ext4 <start> <end>

用你记录的起始和结束位置替换<start><end>,确保类型(如ext4)与原分区相同
完成所有操作后,输入quit退出parted
这将显示当前的分区表,确保你可以看到所有分区的起始和结束位置

使用gdisk修复

安装 gdisk 工具(如果尚未安装):

apt install gdisk

运行gdisk,替换/dev/sdX为你的虚拟磁盘(例如/dev/sda):

sudo gdisk /dev/sdX

在提示符下,输入v进行验证。gdisk将会检查并报告任何错误
如果发现错误,输入w来写入更正后的分区表,确认时,输入Y
完成上述步骤后,使用fdisk -l再次检查分区表,确保没有错误
或者使用下面方法重新建立分区表
运行 gdisk:

sudo gdisk /dev/sdX

gdisk提示符下,输入p来打印当前的分区表
输入d,然后输入要删除的分区号,然后确认
输入n创建新分区
按提示输入分区号、起始扇区和结束扇区。通常,起始扇区可以使用默认值,结束扇区可以设置为分区的最大值(通常使用 +size 语法)
在完成所有更改后,输入w将更改写入磁盘,输入 Y 确认
输入q退出gdisk

使用fdisk修复

打开终端并运行以下命令,替换 /dev/sdX 为你的虚拟磁盘(例如 /dev/sda):

fdisk /dev/sdX

打印当前分区表:

  • 输入p命令打印当前分区表
    删除并重新创建分区:
  • 先记录下当前分区的起始扇区和大小
  • 输入d命令删除当前分区,选择要删除的分区号
  • 输入n命令创建一个新分区,使用之前记录的起始扇区
  • 使用p命令确认分区设置无误
    写入分区表:
  • 输入w命令写入更改
    重新检查分区表:
  • 重新运行fdisk -l来确认没有错误信息

如果上面步骤修复完分区表后没有自动出现在自己的分区里请看下面

更新分区表并把容量加到想要加的磁盘分区里

如果使用parted -l发现硬盘空间容量显示正常但是分区里没有增加的容量请使用以下命令

使用parted更新分区表

运行 parted:

sudo parted /dev/sdX

输入 resizepart 命令:

resizepart <partition_number> <end>

<partition_number>是要扩展的分区号,<end>是要设置的新结束位置,通常使用100%来扩展到最大
输入quit退出parted

重新扫描物理卷

sudo pvresize /dev/sdX

把容量增加到 LVM 逻辑卷

sudo lvextend -l +100%FREE /dev/vg_data/lv_data

扩展文件系统

扩展逻辑卷后,你需要扩展文件系统以利用新空间,根据你使用的文件系统类型,使用不同的命令
对于ext4文件系统:

sudo resize2fs /dev/vg_data/lv_data