每天进步一点点:在Amazon AWS的EBS卷上使用GPT分区方案

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@oflyhigh·
0.000 HBD
每天进步一点点:在Amazon AWS的EBS卷上使用GPT分区方案
因为工作关系,需要在Amazon AWS的EBS卷上使用GPT分区方案,最初我想的比较简单,以为直接把MBR转换成GPT就中了。结果在测试机上一试,擦,连系统带数据都搞没了。

![image.png](https://images.hive.blog/DQmeXqRS5YJFSDQ58ztLeryhT52MbvKxjvkBDU8VqHCDuhX/image.png)
(图源 :[pixabay](https://pixabay.com/))

接下来就试了几种办法,无一例外的失败,最后想到的方案就是使用两个EBS卷:一个用作系统继续用MBR方案,另外一个做数据盘使用GPT方案。这样比直接使用一个EBS卷更加灵活方便,毕竟不用考虑启动分区等诸多问题。

首先创建个EC2实例,这个按自己的需求来就可以,使用的EBS卷不用很大,能装系统就行,唯一需要注意的就是要记录或者选择一下区域,新的EBS卷要建到同一个区域下。

# 附加GPT分区方案的EBS卷

接下来创建一个新的EBS卷,注意一下空间和区域:
>![image.png](https://images.hive.blog/DQmTBuLkkYtms6pct6SK2UUfmwJmWxMSKoenqc8b29G8uHq/image.png)

创建完之后,我们就会多出来一个可用的EBS卷:
>![image.png](https://images.hive.blog/DQmXPwvgTGboD3yt8uAuCpUpGvEaxXTAUUwNZ9TBPwpGQ7E/image.png)

然后将其挂载到之前建立的EC2实例上:
>![image.png](https://images.hive.blog/DQmQJHVxYSxMWrwpTVjGAfFJcfkWJLZuYUwwa2z2TktPqQg/image.png)

之后使用`sudo fdisk -l`就会发现我们新挂载的EBS卷:
>![image.png](https://images.hive.blog/DQmce2YNJznNVEtWmsyYz2n4nusNQeYm7qNeBNcY2tNX6tX/image.png)

接下来我使用`sudo fdisk /dev/xvdf`的`g`指令来创建GPT分区表:
>![image.png](https://images.hive.blog/DQmTc7zuJXWYcaajT68Q2bHVRguiSnmHM4uJTFCAcmVuP2G/image.png)

用`w`写入,看起来一切正常,再使用`sudo fdisk -l`查看实例上的两个EBS卷:
>![image.png](https://images.hive.blog/DQmdXADmDMSRky5zepPFSLu5fygyHPojWSNBnSiaYwwZfJZ/image.png)

再用`fdisk`创建个新的分区并写入,之后是这个样子:
>![image.png](https://images.hive.blog/DQmRCqx1VYXyBkwei71f6T3fKz7VuJg66XKRXZ5tDUMbgwd/image.png)

如果这时我们尝试将其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`创建文件系统后一切正常。
>![image.png](https://images.hive.blog/DQmb9KXJhgfihUzosT4dzQaQVzLEruw4KKbCGCd3gJiyiyP/image.png)

记录一下文件系统的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`的问题:
>![image.png](https://images.hive.blog/DQmde9NZynBnpVybEofSj7ysCT62ZV2WkEgZT5ChWzAqxwq/image.png)

使用`w`指令写入后,出现如下错误:
>`fdisk: failed to write disklabel: Invalid argument`

使用`sudo gdisk /dev/xvdf`解决,早知如此,早使用`gdisk`就好了,哎:
>![image.png](https://images.hive.blog/DQmY6dyuxBSWJACtTfvo4oDB6WC6NB7tUrQ1uK53v8UQDXa/image.png)

然后扩容分区空间:
>`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`查看文件系统空间占用:
>![image.png](https://images.hive.blog/DQmQk4p9VWXJGGogxGTYKoxWrJ75qRSqXvkfmkS5RuMvBgK/image.png)

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

# 相关链接
* [Extending a Linux file system after resizing a volume](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html)
* [How do I convert my EC2 Ubuntu instance's default MBR partitioning scheme to GPT in order to bypass the 2 TiB limit for MBR partitions on my EBS volume?](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-ubuntu-convert-mbr-to-gpt/)
* [How to correct GPT table and GPT PMBR](https://ubuntuforums.org/showthread.php?t=2277232)
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,