最近线上日志服务器磁盘告警,于是做了磁盘扩容。我们用的是阿里云ecs实例,上阿里云平台磁盘管理做了配置升级。
数据盘扩容。原来是1t,直接扩容到2t。阿里云支持在线扩容,在不启动实例的情况做到磁盘容量自动扩容。开始我以为提交了在线扩容,交了钱就完事了。结果付完钱后,发现磁盘容量增加了,但是分区容量还是原来的1g。于是仔细看了一下在线扩容文档,发现还是需要手动做分区扩展。
```
在线扩容操作时,ECS实例无需经过控制台或者API RebootInstance重启,便可以直接看到云盘容量扩展。扩容的操作方式区别点在于:
在线扩容:实例处于运行中(Running)状态即可扩容,扩容后无需重启ECS实例。
离线扩容:实例处于运行中(Running)状态和已停止(Stopped)状态均可以扩容,扩容后需要重启ECS实例。详细步骤请参见离线扩容云盘。
在线扩容云盘的使用限制如下:
系统限制
云盘的扩容上限请参见扩容概述。
扩容云盘只是扩大存储容量,而不是扩容文件系统,扩容后您必须自行分配存储空间。详细步骤请参见后续步骤。
扩容云盘后,不支持通过回滚云盘等其他方式实现云盘缩容。
```
担心扩展过程中,遇到坑,就在阿里云提交了工单。结果还真有一个坑,差点掉进去。
```
售后工程师 : 您好,这边核实您的扩容目前已经生效,升级配置后需要重启后才可生效,您是否已经重启实例呢
2019-11-25 16:10:25
****** : 在线扩容 还需要重启吗
2019-11-25 16:10:54
售后工程师 : 您好,建议您重启后核实一下是否生效,如还是为生效辛苦您在反馈下,谢谢
2019-11-25 16:17:22
****** : 这是个在线运行发服务,不能重启啊。
磁盘容量已经扩容了,但是逻辑分区没有扩容。
2019-11-25 16:19:23
售后工程师 : 您好,您的问题已经转交相关专员稍后继续处理,请您暂时不要关闭工单,等待我们的进一步答复。
2019-11-25 16:22:49
售后工程师 : 您好,如果一个已有分区采用了MBR分区格式,则不支持扩容到2 TiB及以上。为避免造成数据丢失,建议您创建一块大于2 TiB的云盘,格式化一个GPT分区,再将MBR分区中的数据拷贝到GPT分区中。具体操作,请参见https://help.aliyun.com/document_detail/34377.html?spm=a2c4g.11186623.2.26.536a1b25ewT7Ze#concept-i15-qpc-ydb
2019-11-25 16:57:25
****** : 新建2tib云盘,意思是再购买一个云盘吗
2019-11-25 17:18:32
售后工程师 : 是的,您当前数据盘存在多大的数据量呢,如果不到1T,您可以创建一个1T的按量付费云盘,然后将数据盘中的数据转移到按量付费云盘中,再对数据盘格式化GPT分区,分区完成后将按量云盘中的数据再转移到数据盘中,确认数据没有问题后您再取消按量云盘挂载并且释放这块按量云盘即可。
```
阿里云的售后答复还是很及时的,虽然他的方案我们没有用,毕竟还要额外花钱,但是从中也了解到一个知识点“MBR分区格式对容量上限有限制,GPT相对上限要高”
在服务器上果断fdisk -l 发现该数据盘是dos格式
```
Disk label type: dos
```
百度了一下dos 和mbr
```
主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、...
```
意思就是我们ecs磁盘分区是mbr,所以要格式化成gpt。下面就是gpt格式化过程。
###前提
我们的日志文件是放在了/home/data下,这个目录是数据盘的挂载目录。因为要格式化分区,所以要先将该目录的日志备份到其他服务器(https://www.threeperson.com/users/zld406504302/articles/2263)
将logstash 日志目录指定到系统盘目录,并重启。
```
unmount /dev/vdb1 /home/data
```
如果提示 xxx is busy,可以通过lsof 查找使用的进程,并kill,然后再次unmount
```
lsof | grep "/home/data"
```
df 确认挂载目录是否已经umount。接下来就可以删除原来的逻辑分区/dev/vdb1.
```
fdisk /dev/vdb
m
d
w
```
fdisk -l 查看磁盘信息,vdb下已经无逻辑分区,接下来创建分区
parted /dev/vdb
```
(parted) mklabel gpt
(parted) mkpart primary 1 100%
(parted) align-check optimal 1
1 aligned
(parted) print
Disk /dev/vdb: 2199.0 GB, 2199023255552 bytes, 4294967296 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
Disk label type: gpt
Disk identifier: C2ED0315-8109-4BE5-BB63-287C0B5DBC50
# Start End Size Type Name
1 2048 4294965247 2T Microsoft basic primary
quit
```
partprobe,使系统重读分区表。
mkfs -t ext4 /dev/vdb1 创建信息的逻辑分区
mount /dev/vdb1 /home/data 挂载日志目录
df 查看挂载情况 ,一切顺利。最后一步将挂载卸任fstab中,设置成开机挂载。
```
echo "/dev/vdb1 /home/data ext4 defaults 0 0" >> /etc/fstab
```
最后将logstash 日志目录重新指回/home/data/ 即可