因为工作关系,需要在Amazon AWS的EBS卷上使用GPT分区方案,最初我想的比较简单,以为直接把MBR转换成GPT就中了。结果在测试机上一试,擦,连系统带数据都搞没了。

(图源 :pixabay)
接下来就试了几种办法,无一例外的失败,最后想到的方案就是使用两个EBS卷:一个用作系统继续用MBR方案,另外一个做数据盘使用GPT方案。这样比直接使用一个EBS卷更加灵活方便,毕竟不用考虑启动分区等诸多问题。
首先创建个EC2实例,这个按自己的需求来就可以,使用的EBS卷不用很大,能装系统就行,唯一需要注意的就是要记录或者选择一下区域,新的EBS卷要建到同一个区域下。
附加GPT分区方案的EBS卷
接下来创建一个新的EBS卷,注意一下空间和区域:
Reveal spoiler

创建完之后,我们就会多出来一个可用的EBS卷:
Reveal spoiler

然后将其挂载到之前建立的EC2实例上:
Reveal spoiler

之后使用sudo fdisk -l就会发现我们新挂载的EBS卷:
Reveal spoiler

接下来我使用sudo fdisk /dev/xvdf的g指令来创建GPT分区表:
Reveal spoiler

用w写入,看起来一切正常,再使用sudo fdisk -l查看实例上的两个EBS卷:
Reveal spoiler

再用fdisk创建个新的分区并写入,之后是这个样子:
Reveal spoiler

如果这时我们尝试将其mount到目录上:
sudo mkdir /home2
sudo mount /dev/xvdf1 /home2
就会出类似如下错误:
mount: /home2: wrong fs type, bad option, bad superblock on /dev/xvdf1, missing codepage or helper program, or other error.
原因是我们有磁盘有分区,但是分区上还没有文件系统呢(相当于Windows的还没格式化)。
创建文件系统 & 自动mount
解决之前的问题很简单,使用sudo mkfs.ext4 /dev/xvdf1创建文件系统后一切正常。
Reveal spoiler

记录一下文件系统的UUID(如若忘记,可用使用sudo blkid找回。
然后为了避免我们每次都需要手工挂载,我们编辑一下fstab文件实现自动挂载:
sudo vi /etc/fstab
添加如下内容:
UUID=6e3fc6a2-b24c-43d6-befc-0b92a4297bfe /backup ext4 defaults 0 0
这样就一切OK啦。
扩容
在EBS上将空间调整喂100G以后,回到系统中,出现GPT PMBR size mismatch的问题:
Reveal spoiler

使用w指令写入后,出现如下错误:
fdisk: failed to write disklabel: Invalid argument
使用sudo gdisk /dev/xvdf解决,早知如此,早使用gdisk就好了,哎:
Reveal spoiler

然后扩容分区空间:
sudo growpart /dev/xvdf 1
提示如下:
CHANGED: partition=1 start=2048 old: size=20969439 end=20971487 new: size=209713119,end=209715167
再扩容文件系统:
sudo resize2fs /dev/xvdf1
再使用df -lh查看文件系统空间占用:
Reveal spoiler

虽然搞不懂那5G空间哪里去了,不过貌似这样已经很完美了。
慌…… 看不懂😂😂😂
Nice animation