我正在使用 EC2 映像生成器来自动化为 mongoDB 服务器创建 AMI 映像的过程。
此图像有两卷:
/data
- 100 GB/logs
- 10 GB
为了实现这个设置,我创建了一个附加了 3 个卷的图像构建器配方(一个用于 root /
)。
然后,映像生成器组件格式化并安装卷。以下是执行此操作的步骤片段:
- name: FormatAndMountDataVolume
action: ExecuteBash
inputs:
commands:
- sudo mkdir /data
- sudo mkfs -t xfs /dev/nvme1n1
- echo "/dev/nvme1n1 /data xfs defaults,nofail 0 2" | sudo tee -a /etc/fstab
- sudo mount -a
- sudo chown -R mongodb:mongodb /data
- name: FormatAndMountLogsVolume
action: ExecuteBash
inputs:
commands:
- sudo mkdir /logs
- sudo mkfs -t xfs /dev/nvme2n1
- echo "/dev/nvme2n1 /logs xfs defaults,nofail 0 2" | sudo tee -a /etc/fstab
- sudo mount -a
- sudo chown -R mongodb:mongodb /logs
它工作正常并创建了图像。问题是这些实例使用 Nitro-System,它们的文档说明如下:
设备名称为 /dev/nvme0n1、/dev/nvme1n1 等。您在块设备映射中指定的设备名称使用 NVMe 设备名称 (/dev/nvme[0-26]n1) 重命名。块设备驱动程序可以按照与您为块设备映射中的卷指定的顺序不同的顺序分配 NVMe 设备名称。
因此,上述 AMI 存在潜在问题。它将目录挂载到/data
设备/dev/nvme1n1
和/logs
on 上/dev/nvme2n1
,但亚马逊不保证设备将使用此顺序命名。该实例可能最终拥有一个/logs
容量为 100GB 的文件夹,而/data
只有 10GB。
关于在为此 AMI 运行 EC2 实例时如何确保将卷安装在正确文件夹上的任何想法?