问题描述
我正在使用 EC2 Image Builder Service 来构建黄金 AMI。
用例:
我想在实例中附加额外的 EBS 卷,我将在那里安装第三方组件并将所有内容存储在那里,而不是对我的根设备进行所有操作。此后,我想为其构建 AMI,因此我目前正在使用 EC2 Image Builder 服务。
问题陈述:
我想将额外的 EBS 卷安装到实例(正在构建 AMI)。为了实现这一点,我已经包含了 mounting
设备命令并将它们包含在自定义构建组件中。
name: DeployComponents
description: This is to deploycomponents.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: DeploymentStep
action: ExecuteBash
inputs:
commands:
- echo "Attaching Additional EBS Volume."
- lsblk
- sudo useradd -m abc -p abc
- sudo groupadd cloud
- sudo usermod -a -G cloud cloud
- sudo umount -f /dev/sdb
- sudo mkfs -t ext4 /dev/sdb
- sudo mkdir /cloud
- mount /dev/sdb /cloud
- echo /dev/sdb /cloud ext4 defaults,nofail 0 2 >> /etc/fstab
- sed -i 's+/opt/mount1+/cloud+' /etc/fstab
- sudo chown -R cloud:cloud /cloud
还在配方中包含相同的设备,即/dev/sdb
。
当我查看 EC2 Image Builder 日志时,我看到了:
日志:
umount: /dev/sdb: mountpoint not found
mke2fs 1.42.9 (28-Dec-2013)
Could not stat /dev/sdb --- No such file or directory
The device apparently does not exist; did you specify it correctly?
mount: special device /dev/sdb does not exist
umount: /dev/sdb: mountpoint not found
mke2fs 1.42.9 (28-Dec-2013)
Could not stat /dev/sdb --- No such file or directory
The device apparently does not exist; did you specify it correctly?
mount: special device /dev/sdb does not exist
我错过了什么?
感谢任何帮助。
非常感谢。
解决方法
我发现了这个问题。
这是由于 naming convention
上的 AWS
设备
我在机器上运行了 lsblk
命令(将用于创建 AMI)并且输出是这样的
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:1 0 100G 0 disk
└─nvme0n1p1 259:2 0 100G 0 part /
nvme1n1 259:0 0 100G 0 disk
然后我发现 /dev/sdb
的命名约定是 /dev/nvme1n1
参考资料:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html