EC2卷附件错误(Unix)

时间:2015-08-07 19:52:45

标签: mongodb amazon-web-services amazon-ec2 attachment volume

我正在尝试关注10gen documentation for standing up MongoDB on an EC2 instance。我在尝试将新创建的卷附加到我的实例时遇到错误。

我正在尝试运行命令

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

我收到的错误如下

Client.InvalidParameterValue:参数设备的值(/ 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

如果有人能够指出我可能做错了什么,我将非常感激。

-James

1 个答案:

答案 0 :(得分:0)

根据虚拟化的类型,连接到实例的设备将映射到不同的设备名称。

如果实例是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卷的推荐值"列。

*编辑* 为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卷附件与设备的内核寻址相匹配。