AWS :: EC2 :: VolumeAttachment工作堆栈到数据堆栈中的磁盘不能被彻底删除

时间:2016-03-27 15:02:48

标签: amazon-web-services amazon-ec2 amazon-cloudformation amazon-ebs

我有两个堆栈:myDatamyWorker。工人使用数据。删除工作程序时出错。错误抱怨他对数据的依恋仍然有效。

myData是长寿的,包含myVolumeAWS::EC2::Volume

myWorker仅偶尔出现,包含myServermyMountPointAWS::EC2::InstanceAWS::EC2::VolumeAttachment

这没有成功。 delete-stack报告myWorker

DELETE_FAILED Volume detachment between volume-id vol-XXXX and instance-id i-YYYY at device /dev/sdX is in busy state

这似乎很合理。序列可能是:

create myWorker
  create myServer
  create myMountPoint
... later ...
delete-stack myWorker
   delete myMountPoint
   delete myServer

在这种情况下,服务器仍在运行,可能还在使用挂载点。

但这似乎不太可能。

create myWorker
  create myServer
  create myMountPoint
  start up myServer
     mount that mount point
     start services including disk mounting
... later ...
delete-stack myWorker
   stop up myServer
     stop services & unmount disk
   delete myMountPoint
   delete myServer

那么,帮帮忙?这个序列实际记录在哪里,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

这个序列实际记录在哪里[...]

您所描述的AWS::EC2::VolumeAttachment行为会在资源的CloudFormation文档开头注明:

  

重要

     

在删除此资源(因此分离卷)之前,必须首先卸载实例中的卷。如果不这样做会导致卷在尝试分离时陷入忙碌状态,这可能会损坏文件系统或其包含的数据。

     

如果Amazon EBS卷是实例的根设备,则当实例位于"运行"时,它不能被分离。州。要分离根卷,请先停止实例。

  

[...]我该如何解决这个问题?

对于像您这样的典型用例,EC2实例在整个实例的生命周期中使用附加的EBS卷,您可以使用Volumes上的AWS::EC2::Instance属性声明您的EBS卷附件资源而不是单独的AWS::EC2::VolumeAttachment资源。在从EC2实例分离卷之前,Volumes属性允许实例首先正确关闭(卸载任何已安装的卷是关闭过程的一部分)。