亚马逊AWS官方博客
新功能 – 适用于预置 IOPS (io1) Amazon EBS 卷的多挂载功能
从今天开始,在 Amazon Elastic Compute Cloud (EC2) 上运行 Linux 的客户可以利用新的支持功能,将预置 IOPS (io1) Amazon Elastic Block Store (EBS) 卷挂载到多个 EC2 实例。每个 EBS 卷在配置了新的“多挂载”选项后,在单个可用区中最多可以挂载到 16 个 EC2 实例。此外,每个基于 Nitro 的 EC2 实例都可以支持挂载多个启用了多挂载选项的 EBS 卷。借助多挂载功能,提供顺序写入以保持存储一致性的应用程序更容易获得更高的可用性。
通过完全读写权限,应用程序可以将多挂载卷作为非引导数据卷进行挂载。与常规卷一样,可以为配置了“多挂载”选项的卷拍摄快照,但是也可以从该卷挂载到的任何实例中启动快照,并且多挂载卷也支持加密。可以使用 Amazon CloudWatch 指标监控启用了多挂载功能的卷,要监控每个实例的性能,可以使用 Linux iostat 工具。
开始使用多挂载 EBS 卷
使用 AWS 命令行界面 (CLI) 或 AWS 管理控制台,配置和使用多挂载卷对于新卷而言是一个简单的过程。在本博文的一个简单示例中,我将创建一个已配置“多挂载”选项的卷,并将其挂载到两个 Linux EC2 实例。在其中一个实例中,我将写入一个简单的文本文件,在另一个实例中,我将读取相应内容。让我们开始吧!
在 AWS 管理控制台中,首先导航到 EC2 主页,从导航面板中选择卷,然后单击创建卷。为卷类型选择预置 IOPS SSD (io1),输入所需的大小和 IOPS,然后选中多挂载选项。
要改用 AWS 命令行界面 (CLI) 执行此操作,只需使用 ec2 create-volume 命令和 --multi-attach-enabled
选项,如下所示。
aws ec2 create-volume --volume-type io1 --multi-attach-enabled --size 4 --iops 100 --availability-zone us-east-1a
选择卷后,我可以在描述选项卡中验证我的卷上是否启用了多挂载功能。卷表中还包含一列已启用多挂载,该列中显示一个简单的“yes/no”值,我能够一目了然地检查多个卷中是否启用了多挂载功能。
创建该卷并可以使用后,接下来我将启动两个运行 Linux 的 T3 EC2 实例。请记住,多挂载功能需要基于 AWS Nitro 系统的实例类型,并且必须在与我的卷相同的可用区中创建实例。我的实例正在运行 Amazon Linux 2,并已放置在 us-east-1a 可用区中,与启用了多挂载功能的新卷的位置一致。
实例运行后,就可以将我的卷挂载到这两个实例了。在 EC2 控制面板中单击卷,然后选择我创建的多挂载卷。在操作菜单中,单击挂载卷。在下面的屏幕截图中,您可以看到我已经将卷挂载到一个实例,并且正在挂载到第二个实例。
如果我要使用 AWS 命令行界面 (CLI) 挂载卷,则可以使用 ec2 attach-volume 命令,就像处理其他任何卷类型一样:
aws ec2 attach-volume --device /dev/sdf --instance-id i-0c44a... --volume-id vol-012721da...
对于给定的卷,当我选择该卷时,AWS 管理控制台会向我显示该卷已挂载到的实例或当前正在挂载的实例:
当该卷已挂载到这两个实例后,我们可以通过一个简单的测试来使用它。在 EC2 控制面板的实例视图中选择我的第一个实例,单击连接,然后使用 AWS Systems Manager 的 Session Manager 在该实例上打开一个 Shell 会话。按照此处的说明,我在挂载为 /dev/sdf 的新卷上创建了文件系统,将其安装为 /data,并使用 vi 将一些文本写入文件。
sudo mkfs -t xfs /dev/sdf
sudo mkdir /data
sudo mount /dev/sdf /data
cd /data
sudo vi file.txt
在 AWS 管理控制台中选择我的第二个实例,重复连接步骤。这次我不需要创建文件系统,但我需要再次将 /dev/sdf 卷安装为 /data(如果选择的话,我可以使用其他安装点)。将目录更改为 /data 后,我看到我从第一个实例中写入的文件已经有了,并且文件中包含我预期的文本。
创建和使用多挂载卷很简单! 只需记住,这些卷需要挂载到,并且与它们要挂载到的实例处于同一可用区中。显然,本博文使用了一个简单的用例,但是对于任何实际的应用程序使用情况,您可能还需要考虑实现某种形式的顺序写入,以确保保持一致性。
将“终止时删除”用于“多挂载”卷
如果您希望使用该选项在 EC2 实例终止时删除已挂载的卷,则建议您在多挂载卷已挂载到的所有实例上统一设置该选项 – 使用“全部删除”或“全部保留”,以允许可预测的终止行为。如果将卷挂载到具有终止时删除不同值的实例集,则删除卷取决于是否将要分离的最后一个实例设置为“删除”。统一设置显然可以避免任何疑问!
可用性
有关更多信息,请参阅 Amazon Elastic Block Store (EBS) 技术文档。适用于 Amazon Elastic Block Store (EBS) 上的预置 IOPS (io1) 卷的多挂载功能现已面向以下区域的客户免费推出:美国东部(弗吉尼亚北部和俄亥俄)、美国西部(俄勒冈)、欧洲(爱尔兰)和亚太地区(首尔)。