如何配置EC2堡垒机:将根卷设为临时卷并保留EBS卷
将EC2堡垒机根卷改为临时实例存储并保留原EBS卷的方案
可以直接将原EBS卷映射到/dev/sdh,同时把/dev/sda1作为实例存储类型的根卷,但需要满足几个关键条件并调整Terraform配置:
核心前提条件
- 实例类型支持实例存储:确保你选择的EC2实例类型带有实例存储卷(比如
t2.medium、m5.large等,部分微型实例可能没有),实例存储是临时存储,仅依附于实例生命周期。 - 使用实例存储类型的AMI:当前的EBS-backed AMI无法直接切换为实例存储根卷,你需要先创建对应堡垒机系统的实例存储版AMI:
- 启动一个基于原EBS AMI的临时实例。
- 将EBS根卷的内容复制到实例存储卷。
- 基于实例存储卷创建新的AMI。
Terraform配置调整
移除原有的EBS根卷配置,添加实例存储根卷(通过使用实例存储AMI自动关联),同时配置额外的EBS卷映射到/dev/sdh:
resource "aws_instance" "bastion" { ami = "ami-xxxxxx" # 替换为你的实例存储类型AMI ID instance_type = "t2.medium" # 替换为支持实例存储的实例类型 # 配置原EBS卷映射到/dev/sdh,保留持久化数据 ebs_block_device { device_name = "/dev/sdh" volume_size = 20 # 替换为原EBS卷的大小 volume_type = "gp3" # 保持原卷的存储类型 delete_on_termination = false # 确保实例终止时保留该卷 } # 基础配置 key_name = "your-bastion-key" vpc_security_group_ids = ["sg-xxxxxx"] }
关键注意事项
- 实例存储数据生命周期:实例存储在实例停止后启动或终止时会丢失数据,但**重启(reboot)**时数据会保留。如果需要重启也清空根存储,需在
user_data中添加启动脚本,比如重置特定目录、使用只读根文件系统配合临时挂载点。 - 设备名映射:部分Linux系统(如Amazon Linux 2)会将
/dev/sd*自动映射为/dev/xvd*,挂载时注意识别实际设备名,可在user_data中添加自动识别逻辑。 - EBS卷数据保留:只要
delete_on_termination设为false,EBS卷的数据会在实例重启、停止甚至终止时保留,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Timothy Harmon
相关产品推荐
相关产品推荐

