使用ebs音量附加ec2

时间:2014-03-25 22:33:18

标签: java amazon-web-services amazon-ec2

这是我的EC2与EBS卷附件的代码。

 private static AttachVolumeResult attachEBSVolume(String volumeId, String instanceId, String device){
     AttachVolumeRequest attachVolReq = new AttachVolumeRequest(volumeId, instanceId, device);
     return ec2.attachVolume(attachVolReq);
 }

它第一次工作正常,但是当我再次运行它时它给出了以下异常。 请告诉我如何解决它,并请告诉我参数中的deviceName(第三个参数)参数是什么,它可能是什么值。感谢

This is function call shown below 
attachEBSVolume(createRes.getVolume().getVolumeId(), "InstanceIDhere", "xvdg");

以下是Exception Arise ::

AWS Error Code: InvalidParameterValue, AWS Error Message: Invalid value 'xvdg' for unixDevice. Attachment point xvdg is already in use.

2 个答案:

答案 0 :(得分:1)

您正尝试将不同的卷附加到同一个“xvdg”设备。

你也应该使用不同的设备 - xvdh,xvdi,... xvdp 然后在实例内部,您将看到它们为/ dev / xvdg,/ dev / xvdh等。

答案 1 :(得分:1)

您只能使用一个EC2设备附加一个EBS卷。有多个设备可用,例如xvdg,xvdh,/ dev / sdf。在代码中,您正在尝试将不同的EBS卷附加到同一设备,这是AWS不允许的。所以您只能在一台设备上附加一个EBS卷。

您可以使用此功能

保存EBS卷的ID
CreateVolumeResult createRes = makeEBSVolume(volSize, availabilityZone, "taghere");
 createRes.getVolume().getVolumeId()     // to save the volume ID

保存此ID后,您可以在每次需要时将此ID附加到EC2(实例ID)。