VM-Import 导入 Debian 12 系统

介绍

之前介绍过使用 VM-Import 导入 Windows 系统到 AWS 环境启动 EC2 实例, 本文将介绍如何导入 Debian 12 系统. 本地虚拟化使用 VMWare Workstation 创建虚拟机安装和准备 Debian 12 系统, 导出 OVA 文件后上传到 S3 存储桶中再使用 AWSCLI 执行 VM-Import 命令实现导入过程.

准备工作

  1. 创建或选择一个 S3 存储桶, 建议创建个新的, 专门用来存储要导入的本地 VM 磁盘文件
  2. 参考之前文档 本地VM导入至AWS EC2 创建IAM角色进行授权 部分内容创建名为 vmimport 的 IAM Role (如果之前创建过就无需再建)
  3. 安装 AWSCLI 工具并配置好 AK/SK 建议使用管理员权限的 IAM User 身份
    https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/install-cliv2.html
  4. 下载系统 ISO, 可以从清华镜像站下载, 速度快:
    https://mirrors.tuna.tsinghua.edu.cn/debian-cd/current-live/amd64/iso-hybrid/debian-live-12.5.0-amd64-standard.iso

本地 VM 准备

VMWare Workstation 中创建一台新的虚拟机, 使用下载好的 Debian 12 ISO 文件正常安装系统.

主要需要留意的就是创建磁盘时大小给 8GB 就行, 注意选择 将虚拟磁盘存储为单个文件

系统安装按照正常的流程配置即可, 为了保证导入的成功率, 建议磁盘分区时使用整个磁盘, 不用 LVM

单个分区

其余选项正常配置就行, 安装完成后进入等待登录界面

打开虚拟机设置, 删掉 CD/DVD 光驱设备

由于安装的是最基础的系统, 所以是不包含 SSH 服务的, 使用 root 账号登录系统后安装必要的软件包和配置系统:

bash 复制代码
# 安装包
apt install -y openssh-server amazon-ec2-utils amazon-ec2-net-utils cloud-init

# 配置 GRUB 支持 Serial Console
vi /etc/default/grub.d/50-cloudimg-settings.cfg

50-cloudimg-settings.cfg 粘贴以下内容后保存关闭.

ini 复制代码
GRUB_RECORDFAIL_TIMEOUT=0
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=menu
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed 115200"
bash 复制代码
# GRUB 更新配置
update-grub

# 关机
init 0

上面修改 GRUB 配置是为了预防导入后如果出现问题还可以通过 Serial Console 方式访问实例

虚拟机关闭后点击菜单 > 文件 > 导出为 OVF

将导出后最大的的 .vmdk 虚拟机磁盘文件上传到 S3 桶

上传可以用浏览器访问 S3 控制台或者在本地执行 AWS CLI 命令:

powershell 复制代码
aws s3 cp Debian12-disk1.vmdk s3://lpwm/vm/

VM Import 导入

等待 S3 上传完成后, 继续在本地创建导入任务的 json 配置文件:

json 复制代码
{
    "Description": "Deibian 12 import",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "lpwm",
        "S3Key": "vm/Debian12-disk1.vmdk"
    }
}

继续执行 AWS CLI 命令:

powershell 复制代码
aws ec2 import-snapshot --description "Debian12" --disk-container "file://config.json"

复制命令输出中的 ImportTaskId 用于查看任务状态:

powershell 复制代码
aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-098eb6a74f12cb0fb

观察 Status 变成 "completed" 导入完成, 大概耗时 3 分钟左右. 记录 SnapshotId.

启动测试实例

在 EC2 控制台 > Snapshots 搜索上面记录的 SnapshotId 找到对应资源 > Actions > Create image from snapshot

起个名字, 写上 Description, 其他配置保持默认 > Create image

打开创建好的 AMI > Launch instance from AMI

和普通启动实例过程一样完成向导配置, 启动后观察实例屏幕截图确认启动过程:

启动完成后进入等待登录界面:

此时从本地即可使用用户名密码方式 SSH 访问实例.

补充说明

和之前导入 Windows 系统的操作不同, 这里使用的命令是 aws ec2 import-snapshot 导入 Snapshot, 再将 Snapshot 封装成 AMI 启动实例. 如果用 aws ec2 import-image 导入时会出现卡在进度 27% 走不动的情况, 可能和安装的 Debian 最小系统环境有关, 后台在进行某些任务时出现了问题, 不过暂无法确认具体原因.

相关推荐
小小的木头人几秒前
Nginx 访问控制及安全配置文档
运维·nginx·安全
菱玖2 分钟前
K8s集群部署与应用运维实战
运维·容器·kubernetes
Elastic 中国社区官方博客8 分钟前
自动化可靠性:自愈型企业的架构
运维·elasticsearch·搜索引擎·云原生·架构·自动化·serverless
枕布响丸辣9 分钟前
万字详解 GlusterFS 分布式文件系统:原理 + 卷类型 + CentOS 7 集群部署
linux·运维·centos
程序员大辉11 分钟前
开源客户端SSH Netcatty:免费替代Termius,带AI的现代化运维工具
运维·开源·ssh
Elivs.Xiang14 分钟前
ubuntu20中安装Jenkins
linux·运维·ubuntu·jenkins
说再见再也见不到15 分钟前
Ubuntu 将阿里云 OSS 对象存储挂载为本地硬盘(含开机自启)
linux·运维·服务器·ubuntu·阿里云·云计算
坚持就完事了17 分钟前
Linux的重定向符
运维·服务器·前端
艾莉丝努力练剑25 分钟前
【Linux网络】计算机网络入门:从背景到协议,理解网络通信基础
linux·运维·服务器·c++·学习·计算机网络
艾莉丝努力练剑25 分钟前
【Linux线程】Linux系统多线程(十):线程安全和重入、死锁相关话题
java·linux·运维·服务器·c++·学习·安全