EC2卷附件错误(Unix)



我正试图遵循在EC2实例上站立MongoDB的10gen文档。当尝试将新创建的卷附加到我的实例时,我遇到了一个错误。

我正在尝试运行命令

$ ec2-attach-volume vol-dac9c92f  -i i-19f359db -d /dev/sdh2

我收到的错误如下

客户端。InvalidParameterValue:参数device的值(/dev/sdh2)无效。/dev/sdh2不是一个有效的EBS设备名

文档的相关部分是这个

$ (i=0; 
> for vol in $(awk '{print $2}' vols.txt); do 
>   i=$((i+1)); 
>   ec2-attach-volume $vol -i i-11eee072 -d /dev/sdh${i}; 
> done)

命令执行成功(注意没有id号)

$ ec2-attach-volume vol-dac9c92f  -i i-19f359db -d /dev/sdh

如果有人能指出我可能做错了什么,我将不胜感激。

头脑

附加到实例的设备根据虚拟化类型映射到不同的设备名称。

如果实例是PV(半虚拟),那么卷可以映射为/dev/sdXY,其中X是一个设备字母,Y是一个数字(分区使用)—因此您可以使用/dev/sdh2

然而,对于HVM实例,Y数字格式是不可接受的——它需要是一个没有分区号命名语法的卷ID,即/dev/sdh/dev/sdi等。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html -参见"EBS卷的推荐值"专栏。

* edit *为HVM实例提供一个bash代码片段,相当于:

$ (i=0; 
> for vol in $(awk '{print $2}' vols.txt); do 
>   i=$((i+1)); 
>   ec2-attach-volume $vol -i i-11eee072 -d /dev/sdh${i}; 
> done)

您可以使用基于字母的增量循环(将volmap设置为fi的字母集合/数组,并遍历该数组,而不仅仅是增加计数器)

$ (volmap=({f..i}); i=0; 
> for vol in $(awk '{print $2}' vols.txt); do 
>   ec2-attach-volume $vol -i i-11eee072 -d /dev/xvd${volmap[i++]}; 
> done)

这将把/dev/xvdf连接到/dev/xvdi。我使用xvdX而不是sdX,因此AWS卷附件与设备的内核寻址相匹配。

最新更新