我试图将几个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字段。
谢谢!
答案 0 :(得分:1)
mount
命令失败,因为它上面没有文件系统。 BlockDeviceType(或EBSBlockDeviceType)没有为基础EBS卷选择文件系统的选项。分配卷后,用户可以创建一个选择的文件系统。
但是,对于从格式化EBS快照(从具有文件系统的卷创建)创建的卷,无需再次创建文件系统。您可以使用file -s <device name>
查看设备是否已有文件系统。
更多详情请见:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html