首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用ebs卷id自动装载ebs卷

仅使用ebs卷id自动装载ebs卷
EN

Stack Overflow用户
提问于 2014-10-08 19:49:01
回答 2查看 2.3K关注 0票数 1

假设您有一组用于存储数据的EBS卷,并且您经常将这组EBS卷装载到随时间变化的ec2节点(因为每次您不再需要它时将其销毁,并在再次需要它时创建一个新的),但是在每个创建的ec2实例上可能具有不同的病毒类型、操作系统、实例类型等(无论出于何种原因),当您拥有的全部是ebs卷id和访问ec2 api以获取ebs设备名称时,在给定的ec2实例上自动装载这些ebs卷的最佳方法是什么?

有没有程序可以做到这一点?

顺便说一句,我并不是在谈论附加卷和在创建实例时自动挂载到os文件系统上的已知目录,因为当与ec2上的设备名称进行比较时,设备名称在不同的os上是不同的,而且最好在/etc/fstab中使用UUID而不是设备名称。

EN

回答 2

Stack Overflow用户

发布于 2014-10-10 09:11:12

使用文件系统标签:

代码语言:javascript
复制
$ tune2fs -L "disk1" /dev/xvdf
$ tune2fs -L "disk2" /dev/xvdg

在/etc/fstab中:

代码语言:javascript
复制
LABEL=disk1 /disk1 auto defaults 0 2
LABEL=disk2 /disk2 auto defaults 0 2

在您的/etc/rc.local中:

代码语言:javascript
复制
# Note: You could store the volume-ids and devices in the ec2 tags of your instance.

INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
export AWS_DEFAULT_REGION=$(curl http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/[a-z]$//')

aws ec2 attach-volume --volume-id vol-1234abcd --instance-id $INSTANCE_ID --device /dev/xvdf
aws ec2 attach-volume --volume-id vol-1234abcf --instance-id $INSTANCE_ID --device /dev/xvdg

# wait for them to mount
until [ "$(aws ec2 describe-volume-status --volume-id vol-1234abcd --query 'VolumeStatuses[0].VolumeStatus.Status' --output text)" = ok ]; do sleep 5; done

until [ "$(aws ec2 describe-volume-status --volume-id vol-1234abcf --query 'VolumeStatuses[0].VolumeStatus.Status' --output text)" = ok ]; do sleep 5; done

# mount /etc/fstab entries
mount -a

# I also store the EIP as a tag
EIP="$(aws ec2 describe-instances --instance-id $INSTANCE_ID --query 'Reservations[*].Instances[*].[Tags[?Key==`EIP`]|[0].Value]' --output text)"
if [ $? -eq 0 ] && [ "$EIP" != "" ] && [ "$EIP" != "None" ]; then
  aws ec2 associate-address --instance-id $INSTANCE_ID --public-ip "$EIP" --query 'return' --output text
fi
票数 5
EN

Stack Overflow用户

发布于 2014-10-08 20:29:58

您可以使用AWS CLIattach-volume命令编写脚本。

在AWS CLI示例中,您的命令将类似于:

代码语言:javascript
复制
aws ec2 attach-volume --volume-id vol-1234abcd --instance-id i-abcd1234 --device /dev/sdf

我还建议创建一个IAM role并将其附加到您启动的ec2实例上,这样您就不必在该实例上放置任何IAM用户的凭据。

您提到,您可能会在ec2启动时将卷附加到不同的操作系统,在这种情况下,所有操作系统都必须支持它们希望挂载的卷上分区的文件系统类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26256213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档