我正在运行 Ubuntu Server 12.04 LTS 作为来宾操作系统。
一个实例可以附加多少卷?我正在开展一个项目,该项目要求我们的每个客户都有自己的数量。
Amazon 似乎没有动态卷,因此我们需要从快照创建一个新卷来扩展现有卷。此操作需要服务器停机时间,这是不可接受的。这就是为什么我们需要每个客户端一个卷。对于物理服务器,我将放置一个 2TB 驱动器并使用配额,但我们现在不想这样做。
我正在运行 Ubuntu Server 12.04 LTS 作为来宾操作系统。
一个实例可以附加多少卷?我正在开展一个项目,该项目要求我们的每个客户都有自己的数量。
Amazon 似乎没有动态卷,因此我们需要从快照创建一个新卷来扩展现有卷。此操作需要服务器停机时间,这是不可接受的。这就是为什么我们需要每个客户端一个卷。对于物理服务器,我将放置一个 2TB 驱动器并使用配额,但我们现在不想这样做。
接受的答案是错误的。有一个限制。我现在对在 Amazon Linux 下运行的 EC2 t3.medium、m5a.large、c5.xlarge 有直接的经验,这是我发现的:
亚马逊文档间接说限制是(当前)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* 并想知道它们是如何从您在附件中指定的设备名称映射的-音量命令;您会找到两者,即在上面的示例中,您会找到设备名称 /dev/sdf、/dev/xvdz、/dev/xvdxy,但您也会找到 /dev/nvme* 节点。您可以将您在 attach-volume 命令中指定的设备名称用于 mkfs 之类的内容,我强烈建议您使用 UUID=... 格式在 /etc/fstab 中指定卷,切勿尝试通过 /dev/ 节点名称挂载。
AWS 表示 Linux 的卷限制为 40 个,Windows 的卷限制为 26 或 16 个,每个都有这个警告。仅在尽力而为的基础上支持将超过 * 个卷附加到 * 个实例,并且不能保证。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/volume_limits.html
事实上,如果您坚持使用 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
有关更多信息,请查看文档:将卷附加到实例。
为了建立 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 卷总数的唯一限制。但我从来没有一次尝试过多个。
上面的答案都不是完全正确的,部分原因是两个不同的虚拟化平台的行为。
现实情况是,这种行为在基于Xen的实例(第 4 代及更早版本)和较新的基于Nitro的实例(第 5 代及更高版本)之间有所不同。
该文档在这里并没有很好地消除 Xen 和 Nitro 行为之间的歧义,因此为清楚起见:
对于 Nitro 实例
对于 Xen 实例
还有其他适用的限制: