这是我的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.
答案 0 :(得分:1)
您正尝试将不同的卷附加到同一个“xvdg”设备。
你也应该使用不同的设备 - xvdh,xvdi,... xvdp 然后在实例内部,您将看到它们为/ dev / xvdg,/ dev / xvdh等。
答案 1 :(得分:1)
您只能使用一个EC2设备附加一个EBS卷。有多个设备可用,例如xvdg,xvdh,/ dev / sdf。在代码中,您正在尝试将不同的EBS卷附加到同一设备,这是AWS不允许的。所以您只能在一台设备上附加一个EBS卷。
您可以使用此功能
保存EBS卷的IDCreateVolumeResult createRes = makeEBSVolume(volSize, availabilityZone, "taghere");
createRes.getVolume().getVolumeId() // to save the volume ID
保存此ID后,您可以在每次需要时将此ID附加到EC2(实例ID)。