使用boto附加EBS卷

时间:2014-08-11 14:30:25

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

我试图将几个EBS添加到EC2实例,我使用类似的东西:

  block_map = BlockDeviceMapping()
  xvdf = EBSBlockDeviceType()
  xvdf.delete_on_termination = True
  xvdf.size = opts.ebs_vol_size
  block_map['/dev/xvdf'] = xvdf
  req = conn.request_spot_instances(key_name=opts.key_pair,
                                  price=opts.price,
                                  image_id=ami,
                                  security_groups=[instance_group],
                                  instance_type=opts.instance_type,
                                  block_device_map=block_map,
                                  count=count
                                  )

创建EBS,因为我可以在AWS控制台的EC2实例中看到它们。除此之外,我100%确定它们已创建,因为我可以在登录EC2实例后使用lsblk命令列出它们。我还在/ etc / fstab中添加了几个条目,以便在创建时挂载EBS卷。

但是,它们没有安装。如果我运行命令mount -a,则会出现以下错误: mount:错误的fs类型,错误的选项,/ dev / xvdf上的错误超级块,        丢失代码页或帮助程序,或其他错误        在某些情况下,在syslog中找到有用的信息 - 试试        dmesg |尾巴左右

因此,似乎已创建EBS卷但未使用EBSBlockDeviceType格式化。格式化之后,我可以再次运行mount -a并且它们已经安装。

我的问题是,如果可以在EBSBlockDeviceType()构造函数中创建和格式化卷,以便我可以挂载它。

我认为我可能拥有的另一个选项是附加已经格式化的EBS快照,使用boto.ec2.blockdevicemapping.BlockDeviceType类中的snapshot_id字段。

谢谢!

1 个答案:

答案 0 :(得分:1)

对于新分配的卷,

mount命令失败,因为它上面没有文件系统。 BlockDeviceType(或EBSBlockDeviceType)没有为基础EBS卷选择文件系统的选项。分配卷后,用户可以创建一个选择的文件系统。

但是,对于从格式化EBS快照(从具有文件系统的卷创建)创建的卷,无需再次创建文件系统。您可以使用file -s <device name>查看设备是否已有文件系统。

更多详情请见:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html