本以为磁盘扩容是个简单的事儿,结果却折腾一个多小时。。搜索引擎的结果各种不靠谱
错误详情
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
1. 先在虚拟机软件上进行常规的扩容操作
服务器关机后,粗暴的先直接扩容完事
2. 使用fdisk
进行分区修改扩容
废话开篇:
在虚拟机操作完扩容后,重启服务器使用fdisk
后便出现错误
fdisk -l
.....
GPT PMBR size mismatch (1439776 != 30031871) will be corrected by write.
这个错误其实可以不用管,大致是gpt分区末尾不在磁盘的末尾的意思(因为扩容了)
然后当时我纠结于此,很多的搜索结果都是用
parted -l
修复分区表错误,然而我试了没有效果,并没有Fix/Ignore?
问我是否修复
这之后尝试了各种工具gparted
gdisk
等因为不会用全都不了了之。其中有教程关于gparted
的图形化软件,可以像 win的diskgenius
一样直接操作,可惜我是服务器版,没有图形桌面,命令行的gparted
又完全不会用。。。
后来看到百度经验的一篇帖子,大致浏览后就是把之前分区都删了,然后建立新分区扩容
当时我还嗤之以鼻,这不会把数据弄没吗?我要扩容根目录又不是空白磁盘,而且看他的操作中没有和我一样的错误,就没在关心了
之后在搜索结果的时候无意中发现这样一句话
修改分区表不会删除分区内实际的数据
突然感觉有点意思,给虚拟机拍了个快照,开始操作
操作
fidsk /dev/sda # 进入目标磁盘
看到以下红色错误,无视
GPT PMBR size mismatch (*** != ***) will be corrected by write.
查看分区表
Command (m for help): p
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 83886046 83881951 40G Linux filesystem
删除根目录分区
磁盘的扇区都是连续的,扩容后新增加的扇区在末尾增加,如果你想扩容的分区后面还有其他AB分区,那只能同时删掉AB等分区。
将要扩容的分区调大后,在末尾空余一定的空间用来建立AB分区。当然如果AB分区之前有文件的话一定会丢失,先拷贝出来,然后放到新建的AB分区就好
删除根目录分区
Command (m for help): d
Partition number (1,2, default 2):2
重新建立根目录分区
Command (m for help): n
Partition number (3-128, default *): 分区编号
First sector (**-**): 起始柱面号 一定要与之前相同
Last sector, +sectors or +size{K,M,G,T,P} (**-**, default *): 结束柱面号 或者 按容量分配:+40g
放心保存,会有红色错误不用管
Command (m for help): w
此时用 fdisk
再次进入硬盘已经看不到之前的红色错误了。重启服务器
3. 使扩容后的分区容量生效
重启后容量依然没变,执行以下命令
resize2fs /dev/sda2
然后df
查看一下挂载容量,已经扩容成功了
总结
此方法适用于没有其他包含数据的分区,需要备份数据很麻烦。
受限于win上一直使用diskgenius
的缘故,以及方便的调整分区自动转移文件,对于Linux的命令行束手无策了
此次额外理解部分:
分区表与分区内数据的关系