我需要创建多个 EBS 卷并使用 python+boto3 将一些数据放在那里。
总的来说,我的流程是:
- 创建卷。
- 等待他们的
available
状态。 - 附上一卷。
- 等待它的
attached
状态。 - 列出 NVMe 设备,检测卷的设备。<-- 问题发生在这里。
- 挂载 NVMe 设备。
- 复制数据。
- 卸载并分离卷。
- ...下一卷。
大多数时候它工作正常。卷正确附加并链接到 NVMe 设备(如/dev/nvme2p1
)。但是在某些时候linux没有为卷设置块设备:卷状态是attached
但nvme list
不显示它。
如果使用 boto3 或在 AWS 控制台中手动重新附加此类卷,则它将具有块设备。
例如,它发生在us-east-2
region 但不在ap-south-1
.
我尝试在单线程和多线程模式下附加/分离。在多线程模式下,我为每个线程使用了单独的 boto3 客户端和一个锁来顺序附加。还尝试了不同的boto3版本并在附加后等待一段时间。没有任何帮助。
我的环境:
- EC2 实例:
t3a.small
,AMI:ubuntu 20.04.2
。 python2
(是的,我们仍在使用它)。botocore==1.12.253
boto3==1.9.199
有没有人遇到过同样的问题?