每个 Amazon EC2 实例的最大附加卷数是多少?
Posted
技术标签:
【中文标题】每个 Amazon EC2 实例的最大附加卷数是多少?【英文标题】:What is the max number of attached volumes per Amazon EC2 instance? 【发布时间】:2012-06-18 00:51:54 【问题描述】:我正在运行 Ubuntu Server 12.04 LTS 作为客户操作系统。
我可以将多少卷附加到一个实例?我正在开展一个项目,该项目要求我们的每个客户都有自己的数量。
Amazon 似乎没有动态卷,因此我们需要从快照创建一个新卷来扩展现有卷。此操作需要服务器停机时间,这是不可接受的。这就是为什么我们需要每个客户端一个卷。对于物理服务器,我将放置一个 2TB 的驱动器并使用配额,但我们暂时不想这样做。
【问题讨论】:
可能重复:serverfault.com/questions/359705/… 【参考方案1】:接受的答案是错误的。有一个限制。我现在对在 Amazon Linux 下运行的 EC2 t3.medium、m5a.large、c5.xlarge 有直接的经验,这是我发现的:
似乎有 26 卷的硬性限制 设备名称为 /dev/sd[a-z]、/dev/xvd[a-z]、/dev/xvd[a-z][a-z]Amazon Documentation 间接表示限制是(当前)26 台设备:
EBS 卷作为基于 Nitro 的 NVMe 块设备公开 实例。设备名称为 /dev/nvme0n1、/dev/nvme1n1 等。 您在块储存设备映射中指定的设备名称是 使用 NVMe 设备名称 (/dev/nvme[0-26]n1) 重命名。块设备 驱动程序可以按与您不同的顺序分配 NVMe 设备名称 为块设备映射中的卷指定。
所以,虽然您可以使用 /dev/xvd 生成大量设备名称?这实际上会起作用,并且它们不必按任何顺序排列,您可以混合和匹配所有组合,例如 /dev/sdf、/dev/xvdz、/dev/xvdxy,仍然有一个限制26 台设备。
如果超出此限制会发生什么?两件事:
如果实例正在运行,您尝试附加的卷将保持在“附加”状态。 如果实例停止,卷附加没有问题,但是当您尝试启动实例时,它会卡在“挂起”状态。由于这种行为,我怀疑问题与操作系统、Linux、Windows、FreeBSD 等有关。如果是关于操作系统,实例将进入“运行”状态,然后在启动时卡住,但不会卡在“待处理”。
此外,您可能希望列出您的 /dev/ 目录以供自己查看,但您不必担心那些硝基设备名称 /dev/nvme* 并想知道它们是如何从您指定的设备名称映射的在 attach-volume 命令中;您会找到两者,即在上面的示例中,您会找到设备名称 /dev/sdf、/dev/xvdz、/dev/xvdxy,但您也会找到 /dev/nvme* 节点。您可以将您在 attach-volume 命令中指定的设备名称用于 mkfs 之类的内容,我强烈建议您使用 UUID=... 格式在 /etc/fstab 中指定卷,切勿尝试通过 /dev/ 节点名挂载。
【讨论】:
如果您遇到过这种情况,是否意味着 AWS 文档不正确? docs.aws.amazon.com/AWSEC2/latest/UserGuide/volume_limits.html 在我写这个答案时它是正确的,因为我将所有实例都作为普通的 Amazon Linux 运行。您无法超过 26 岁。由于问题是虚拟机之一,而不是操作系统(无论如何都是 Unix),亚马逊总是可以同时改变这些限制。我还检查了我在docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 引用的文档,它还没有更新。 我回到这里在 Google 上搜索我遇到的 EC2 无法启动(卡在挂起状态)的问题,结果发现我在 2 年前遇到了同样的问题。这是为了确认 26 台设备的限制今天仍然存在。【参考方案2】:AWS 表示对于 linux 有 40 个卷的限制,对于 Windows 有 26 或 16 个卷的限制,每个都有这个警告。 仅在尽力而为的基础上支持将超过 * 个卷附加到 * 个实例,并且不能保证。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/volume_limits.html
【讨论】:
不是真的,是 26 岁。我在 2 年前试过,一个月前又试了一次。【参考方案3】:事实上,如果您坚持使用 Linux,则没有限制(Windows 实例限制为 16 个 EBS 卷)。您可能需要更改设备的命名,然后您可以轻松获得多达 24 个卷:
/dev/sdf1 /dev/sdf5 /dev/sdf9 /dev/sdg4 /dev/sdg8 /dev/sdh3
/dev/sdf2 /dev/sdf6 /dev/sdg1 /dev/sdg5 /dev/sdg9 /dev/sdh4
/dev/sdf3 /dev/sdf7 /dev/sdg2 /dev/sdg6 /dev/sdh1 /dev/sdh5
/dev/sdf4 /dev/sdf8 /dev/sdg3 /dev/sdg7 /dev/sdh2 /dev/sdh6
有关更多信息,请查看文档:Attaching the Volume to an Instance。
【讨论】:
在 windows2003 中我可以附加多个 ebs 卷吗?我已经将 1 TB ebs 卷附加到我的 ec2 实例。现在我尝试将第二个大小为 1 TB 的 ebs 卷附加到 ec2 实例,但它显示为动态磁盘,当我右键单击设备时它只显示两个选项。 1. 导入外部磁盘 2. 转换为基本磁盘 那么,知道如何附加从快照创建的秒 ebs 吗?。 @loganathan 我不知道......对不起,但我不再使用 Windows 了。您应该为您的问题打开一个新问题。 根据当前docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html,此信息仅对虚拟化类型为准虚拟化的实例有效。对于 HVM,方案略有不同。【参考方案4】:为了构建 moosgummi 的答案,AWS 允许使用多种块设备名称。请参阅此处“指定块设备映射”下的相关文档。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html
EBS 卷挂载点必须以 /dev/ 开头,然后指定“hd”或“sd”(2),然后是 a 到 z (26),然后是 1 到 15,或无编号 (16) .这些选择产生 2 x 26 x 16 = 832 个名称选项。 (超过 moosgummi 建议的 24 个。)但要小心避免与根设备 (sda1) 或其他默认值 (sda[1-15]) 冲突。
设备名称限制是我所知道的对附加 EBS 卷总数的唯一限制。但我从来没有一次尝试过多个。
【讨论】:
您可能不知道其他约束,但有一个硬性 26 设备约束。试试看,你会看到。快速启动一个 AMZ Linux 实例并将 27 个 EBS 设备连接到它,并注意到它不会启动(卡在“挂起”状态)。然后将设备附件一一移除,你会看到它会从 26 开始。 这仅适用于 Nitro 实例,最多支持 28 个附件。这意味着每个附加的 ENI 都会减少可以附加的卷数量并让实例成功启动。 Xen 的情况并非如此,它不使用共享设备池,并且软限制为 40 个卷(不受网络接口连接的影响)。【参考方案5】:以上答案都不是完全正确的,部分原因是两个不同虚拟化平台的行为。
现实情况是,这种行为在基于 Xen 的实例(第 4 代及更早版本)和较新的基于 Nitro 的实例(第 5 代及以后)之间有所不同。
documentation 在这里并没有很好地区分 Xen 和 Nitro 行为,所以为了清楚起见:
对于 Nitro 实例
最多支持 28 个附件。请注意,这是所有设备,不仅仅是卷。文档很好地涵盖了这一点。 从技术上讲,这意味着在具有单个 ENI 的实例上最多有 27 个卷。对于 Xen 实例
最多支持 40 个卷。您肯定可以附加比这更多的卷(我已经看到 98 个卷附加到实例,但不能保证可靠,我强烈建议不要走这条路)。 Xen 没有与 Nitro 相同的共享设备池模型还有其他适用的限制:
可以同时附加的加密 EBS 卷的最大数量(我找不到任何公开文档来解决这个问题,但我已经看到了这个限制) 基于可用带宽和附加卷数的性能限制(文档建议限制为 8 个卷,这对我来说似乎很合理)【讨论】:
以上是关于每个 Amazon EC2 实例的最大附加卷数是多少?的主要内容,如果未能解决你的问题,请参考以下文章
在启动 Amazon EC2 Linux 实例时自动挂载 EBS 卷
Amazon EC2 - 将根实例存储设备与 EBS 设备交换