我使用Ubunto获得了EC 2服务器设置的运行实例。在没有停机时间和最小风险的情况下增加磁盘大小的最佳方法是什么?

通读指南,一种方法是创建新磁盘,迁移数据,关闭实例交换磁盘并关闭磁盘。重新开始。这种方法听起来有点风险,将需要一些停机时间。我想知道是否有更好的方法?

#1 楼

Amazon AWS刚刚于2017年2月13日发布了一项新功能,该功能允许更改EBS卷的大小。

来源:https://aws.amazon.com/blogs/aws/amazon- ebs-update-new-elastic-volumes-change-everything /

这样可以增加现有实例在运行时的EBS卷的大小。

重要的是要注意,更改卷大小并不会更改卷上文件系统的大小(对于大多数文件系统)。操作系统本身可能需要其他步骤(取决于文件系统)。例如,当今大多数Linux操作系统使用的resizefs文件系统上的ext4

来自AWS的完整文档(描述了该过程)可以在http://docs.aws.amazon.com/AWSEC2/latest/UserGuide中找到。 /ebs-expand-volume.html

在某些情况下,块设备具有映射的分区,然后只有一个(或多个)分区包含文件系统。在这种情况下,首先需要调整分区的大小,然后才需要调整文件系统的大小。文档中也描述了此过程。

博客中描述的新的“在线”调整大小功能仅适用于当前实例,并且还需要检查一些其他注意事项和限制。尝试调整卷大小。

评论


在调整文件系统大小之前,您还必须重新调整基础分区的大小,这实际上阻止了物理分区上的热调整。

–滕西拜
17 Mar 1 '17 at 9:03



@Tensibai对不起,我不明白“阻塞物理分区以进行热调整”是什么意思。您是否意味着使用AWS API修改卷大小将阻止对卷的写入/读取?

– Evgeny Zislis
17年1月1日在9:05

不,我的意思是磁盘会更大,但是磁盘上的分区将保持不变,您必须使用fdisk调整其大小,关于根分区,通常在挂载磁盘时无法写入磁盘分区表,而且您无法卸载它。您必须在某一时刻重启:)

–滕西拜
17 Mar 1 '17 at 9:08



正确,如果在添加文件系统层之前使用了多个分区,则需要首先调整分区的大小。谢谢,我将尝试将其添加到答案中,并提供一些有关其完成方法的指南。

– Evgeny Zislis
17年1月1日在9:09

提到的问题没有停机时间。但是,要重新调整根卷的大小,您似乎需要将实例断开以执行此步骤?

–克里斯·斯特里钦斯基(Chris Stryczynski)
17年7月21日在12:35

#2 楼

我要做的事情(并不能完全回答您的问题)如下:


创建EBS卷并将其附加到实例文档在这里

重新扫描scsi总线echo '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(您可能必须修改主机号)
在找到的新磁盘上使用pvcreate创建一个物理卷(fdisk -l列出所有磁盘)
在其上创建一个卷组,然后进行逻辑卷(vgcreatelvcreate
使用所需的文件系统格式化逻辑卷

tar将目标安装点还原以恢复它。
将该卷安装在需要新空间的地方。
将tar还原到此新安装的空间中。

如果在安装某些东西之前使用新空间,则步骤6和8是可选的。如果要替换现有目录,则必须避免在存档末尾和还原之间写一些东西。

您可以对不同的安装点重复步骤4到8,这可以扩展需要的空间,然后在不中断的情况下在线调整这些卷的大小。

#3 楼

在AWS(或其他地方)上的ZFS零宕机时间文件系统存储扩展

upsize



在EC2上安装ZFS。

http://serverascode.com/2016/09/05/aws-zfs-user-data.html

使用EBS卷为您的批量数据创建zpool。
添加另一个EBS获得更多的块存储。 (或将池设置为autoexpand = true并增加您的EBS)
将新的EBS添加到您的zpool中以使空间可用。 (除非您使用了autoexpand并增加了EBS的大小)

减小尺寸


在新的EBS上创建一个新的zpool,使其足以容纳缩小的数据。 (甚至不需要挂载,甚至不需要安装在同一EC2上)
快照旧的太大的zpool
zfs-将快照发送到新的zpool
,将接收到的快照升级到新池并安装
销毁旧池
销毁旧池的EBS


#4 楼

调整EBS卷的大小之后,这是我需要扩展ZFS池时刚刚执行的操作:

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds