不断增长的Amazon EBS卷大小


154

亚马逊的EC2和EBS服务给我留下了深刻的印象。我想知道是否有可能增加EBS量。

例如:如果我有50 GB的卷,并且开始用完空间,是否可以在需要时将其增加到100 GB?


2
我已经写了一个教程在成长的EBS卷的大小- aws-musings.com/how-to-expand-your-ebs-volume
Vaibhav的Puranik

8
好问题(+1)。不过更适合服务器故障吗?
Jonik

1
请更新此答案,因为它是最新的:stackoverflow.com/a/15229477/163461
David

1
@Jonik我完全同意。对于那些可以(也同意)的人,请投票重新提出该问题,以便将其迁移。除非有些mod阅读可以做到这一点?
Yuck

这应该被迁移到服务器故障,如果没有其他原因,而不是让更多的电流答案(如一个引用AWS对这个话题文档docs.aws.amazon.com/AWSEC2/latest/UserGuide/...
杰罗米法国

Answers:



103

您可以扩展存储,但不能即时完成。您需要为当前块拍摄快照,添加一个更大的新块,然后重新附加快照。

有一个简单的演练在这里基于使用亚马逊的EC2命令行工具


2
您还需要调整文件系统的大小。您可能正在寻找“ resize2fs-ext2 / ext3 / ext4文件系统大小调整器”。
James Moore

8
我只需要谷歌这个。我同时打了这个问题和这个视频。这是一个非常不错的选择,非常感谢创建者:youtube.com/watch? v=ouYjQ3_I3BA (我自己弄清了所有内容,除了调整器位,就像James Moore提到的一样。)
克里斯·艾伦·莱恩

通过首先查询其快照的VolumeSize作为使用EBS的好处的灵活性之一,还有一种使用AWS-SDK设置EBS卷大小的方法
Chetabahana '16

实际上可以立即从AWS控制台调整活动卷的大小。似乎仅适用于SSD实例(gp2,io1),您甚至可以从一种类型切换到另一种类型。我不确定何时添加它,但这解决了一个主要的痛点。
STRML

44

如果需要,您不能简单地即时“增加”更多空间,而是可以使用快照调整分区的大小。

为此执行步骤:

  1. 卸载ebs量
  2. 创建一个ebs快照
  3. 添加更多空间的新卷
  4. 重新创建分区表并调整文件系统大小
  5. 挂载新的ebs卷

查看http://aws.amazon.com/ebs/-EBS快照:

快照还可以用于实例化多个新卷,扩展卷的大小或在可用区之间移动卷。创建新卷后,可以选择根据现有的Amazon S3快照来创建它。在这种情况下,新卷将作为原始卷的精确副本开始。通过选择指定不同的卷大小或不同的可用区,此功能可以用作增加现有卷大小或在新的可用区中创建重复卷的方法。如果选择使用快照来调整卷大小,则需要确保文件系统或应用程序支持调整设备大小。


22

我遵循了所有的答案,都怀着敬畏的心情缺失了一些东西。

如果执行这些步骤,则可以增加EBS卷并保留数据(这不是针对根卷的)。为简单起见,我建议使用AWS领事来创建快照,...也可以使用AWS命令行工具来做到这一点。

我们在这里没有触及根卷。

转到您的AWS控制台:

  1. 关闭您的实例(仅几分钟)
  2. 分离您计划增长的卷(例如/ dev / xvdf)
  3. 创建该卷的快照。
  4. 使用刚创建的快照制作更大尺寸的新卷
  5. 将新卷附加到您的实例
  6. 启动您的实例

SSH到您的实例:

 $ sudo fdisk -l

这给你这样的东西:

Disk /dev/xvdf: 21.5 GB, 21474836480 bytes
12 heads, 7 sectors/track, 499321 cylinders, total 41943040 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 identifier: 0xd3a8abe4

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdf1            2048    41943039    20970496   83  Linux

写下开始ID值。(在这种情况下为2048和83)

使用fdisk删除分区xvdf1并创建一个完全从同一块开始的新分区(2048)。我们将给它相同的ID(83):

$ sudo fdisk /dev/xvdf 

Command (m for help): d
Selected partition 1

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

此步骤在此处得到了很好的解释:http : //litwol.com/content/fdisk-resizegrow-physical-partition-without-losing-data-linodecom

差不多完成了,我们只需要挂载卷并运行resize2fs:

装入ebs音量:(我的位置在/ mnt / ebs1)

$ sudo mount /dev/xvdf1 /mnt/ebs1

并调整大小:

$ sudo resize2fs -p /dev/xvdf1

resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/xvdf1 is mounted on /mnt/ebs1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvdf1 to 5242624 (4k) blocks.
The filesystem on /dev/xvdf1 is now 5242624 blocks long.

ubuntu@ip-xxxxxxx:~$ 

做完了!使用df -h验证新的大小。



5

您现在可以通过AWS管理控制台执行此操作。该过程与其他答案相同,但是您不再需要转到命令行。


7
您可以通过网络控制台发布有关此操作的更多信息吗?控制台可以调整卷的大小,但是它如何处理卷内部分区的大小调整,特别是如果它是XFS,BRTFS等类型的呢?
里亚德·卡拉

这本来应该是一条评论,因为它只会增加现有的答案,而不会增加任何新内容。
Yuck

1
有关使用Web控制台的说明,请参见:docs.aws.amazon.com/AWSEC2/latest/UserGuide/…–
Dan Osipov

4

顺便说一句:与物理磁盘一样,使用LVM可能很方便。例如:

http://www.davelachapelle.ca/guides/ubuntu-lvm-guide/ http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/

最大的优势:它允许动态添加(或删除)空间。

它也可以轻松地在实例之间/之间移动。

注意事项:

  • 必须提前配置
  • 一个简单的JBOD设置意味着,如果丢失一个“磁盘”,则将丢失所有内容

4

我的步骤:

  1. 停止实例
  2. 找到附加到实例的ebs卷并为其创建快照
  3. 使用上面的快照创建一个具有更大磁盘空间的新卷。不幸的是,aws控制台上用于创建快照的UI几乎无法使用,因为它列出了aws上的所有快照。使用命令行工具要容易得多,如下所示:

    ec2-create-volume -s 100 --snapshot snap-a31fage -z us-east-1c
    
  4. 从实例分离现有的ebs(较小)卷

  5. 将新的(更大)卷附加到实例,并确保将其附加到实例所需的同一设备(在我的情况下为/ dev / sda1)
  6. 启动实例

大功告成!

除了上面的步骤3,您可以使用aws管理控制台执行所有操作。

还要注意这里提到的:

/server/365605/how-do-i-access-the-attached-volume-in-amazon-ec2

您的ec2实例上的设备可能是/ dev / xv *,而aws Web控制台告诉您它是/ dev / s *。


2
自2013年11月起,您可以选择新创建的快照,然后单击页面顶部的“创建卷”。这将根据快照创建一个卷,您可以避免从命令行执行上述步骤3。
Matt C

1
请注意,您应确保在与实例相同的可用区中创建卷,否则将无法附加该卷。
codecowboy 2014年

3

对于Windows操作系统,使用命令“ diskpart”,请在此处查看:使用http://support.microsoft.com/kb/300415 以下是我对非根磁盘(基本不是动态磁盘)执行的步骤

拍摄快照后,卸下旧的EBS卷(例如600GB)并创建较大的EBS卷(例如1TB)并安装此新的EBS卷-您必须让Windows知道其大小调整(从600GB到1TB),因此在命令提示符下(以管理员身份运行)

磁盘程序

选择磁盘= 9

选择音量= Z

延伸

[我的磁盘9(标记为Z的卷)是从大小为600GB的ec2快照创建的大小为1TB的卷-我想将600GB的大小调整为1TB,因此可以按照上述步骤进行操作。


非常适合我的Win Server 2003 R2数据中心系统。谢谢你的提示!
杰夫·海伊

很棒的帖子,对我帮助很大!
user1326293 2013年

0

如果您的操作系统支持,我强烈建议所有EBS卷都使用逻辑卷管理器(LVM)。Linux发行版通常可以。这很棒,有几个原因。

  1. 逻辑卷的大小调整和移动可以实时完成,因此无需添加整个离线快照(这需要停机),您只需添加创建另一个更大的EBS卷,将其作为物理卷(PV)添加到LVM池中,逻辑卷(LV),从池中删除旧的物理卷,然后删除旧的EBS卷。然后,您只需调整逻辑卷的大小,并调整其上的文件系统的大小。这根本不需要停机!

  2. 它从“物理”设备中提取您的存储。跨设备移动分区而无需停机或更改安装点/ fstab非常方便。

如果Amazon能够即时调整EBS卷的大小会很好,但是使用LVM则没有必要。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.