亚马逊云自动发货 AWS亚马逊云服务器重装系统教程

亚马逊aws / 2026-04-25 15:57:33

别急着删实例!AWS上重装系统,其实可以像换衬衫一样轻松

听说你要重装AWS服务器系统?先别手抖点那个红色的「Terminate Instance」按钮——那不是重装,那是给EC2办火化手续。很多新手以为AWS只能靠「删了重建」来换系统,结果一通操作猛如虎,回头发现:网站挂了、数据库丢了、SSL证书过期了、连自己当初设的root密码都记不清……然后默默打开工单,附赠一句「求救,我好像把生产环境格式化了」。

其实,AWS EC2完全支持「原地重装系统」——不删实例、不丢IP、不改安全组、不重配VPC路由,就像给电脑换系统盘却不拆机箱。只是官方没把这事儿写在首页,而是一直藏在AMI和EBS的交叉路口,等着你拐个弯去发现。

第一步:搞清「重装」的本质——其实是「换根EBS卷」

AWS里没有传统意义上的「C盘重装」按钮,但有更优雅的替代方案:用新的AMI启动一个干净系统盘,再把旧实例的数据盘(/dev/xvdf 或 /dev/nvme1n1)挂过去。说白了,就是「换大脑,留身体」——操作系统是大脑,你的网站代码、MySQL数据、Nginx配置全在身体(数据盘)里躺着呢。

所以,重装前第一问:你有没有把业务数据放在根卷(/)?如果答案是「yes」,请立刻暂停阅读,先执行:sudo mkdir /data && sudo rsync -av /var/www /data/ && sudo rsync -av /var/lib/mysql /data/——这是保命操作。根卷一旦被新AMI覆盖,就真·从零开始。

第二步:选对AMI——别让Ubuntu 24.04装进CentOS老内核里

AMI(Amazon Machine Image)不是ISO,它自带完整启动环境+预装驱动+云初始化脚本。选错AMI,轻则ssh连不上,重则网卡变「失踪人口」。实测避坑指南:

  • Linux用户:优先选「Amazon Linux 2023」或「Ubuntu Server 22.04 LTS」——前者对AWS生态最友好,后者文档最多;慎用社区版CentOS Stream(已停更),也别贪新装Fedora Cloud(可能缺nvme驱动);
  • Windows用户:必须选带「Desktop Experience」后缀的AMI(如 Windows_Server-2022-English-Full-Base-2024.05.08),否则远程桌面会黑屏——这不是你显卡坏了,是微软故意阉割了GUI;
  • 关键动作:进入EC2控制台 → Launch Instance → 在AMI筛选栏输入关键词(如ubuntu-server-22),点击右侧「Details」确认架构(x86_64 or arm64)、虚拟化类型(HVM)、根设备类型(EBS only)。别信「Free Tier Eligible」标签——有些免费AMI根本不支持你的实例类型。

第三步:四步无损重装——不关机、不换IP、不改DNS

  1. 停实例(不是终止!):选中目标实例 → Actions → Instance State → Stop。注意:只有EBS启动的实例才能停机;Instance Store型实例停了就凉透,别试。
  2. 亚马逊云自动发货 解绑并保存根卷:进入Volumes页,找到该实例的根卷(看Attachment信息里的「/dev/xvda」或「/dev/sda1」)→ Actions → Create Snapshot。快照命名建议含日期+原系统(如web-prod-root-20240615-centos7),花2分钟,救你三小时。
  3. 启动新AMI,但「跳过」自动挂载根卷:Launch Instance → 选好AMI → 配置安全组/IP地址时,关键一步来了:点击「Configure Storage」→ 找到默认的根卷(通常是8GB gp3)→ 点击垃圾桶图标删掉它!→ 再点击「Add New Volume」→ 类型选「Existing Volume」→ 从下拉菜单选你刚备份的快照(或直接选未挂载的旧根卷)→ 设备名填/dev/xvda(Linux)或sda1(Windows)→ 注意:勾选「Delete on Termination」务必取消!否则重启后卷又没了。
  4. 启动后验证+迁移数据:实例启动成功后,用新AMI的登录方式连接(Ubuntu用ubuntu用户+密钥,Windows用Administrator+随机密码)。接着执行:sudo file -s /dev/xvdf(确认数据盘存在)→ sudo mkdir /mnt/old-data && sudo mount /dev/xvdf /mnt/old-data→ 把/mnt/old-data/var/www/* 同步回新系统的/var/www/,记得chown -R www-data:www-data

第四步:那些让你凌晨三点骂AWS的隐藏雷区

① Windows激活失效:微软云授权绑定的是实例ID+硬件指纹。换AMI后ID不变,但内核/驱动变了,触发反盗版检测。解决方案:远程桌面进去后,以管理员身份运行slmgr /ato;若失败,执行slmgr /ipk <你的KMS密钥>(企业客户可联系AWS支持获取合规激活通道)。

② SSH密钥对丢失:新AMI不会继承旧密钥。如果你没提前导出公钥,现在只能:a) 进入EC2 Serial Console(需IAM权限)重置密码;b) 挂载旧根卷到另一台Linux实例,手动修改/etc/ssh/sshd_config启用PasswordAuthentication,再用临时密码登录。别问为什么不用密钥——问就是AWS设计哲学:「安全第一,方便第二,你猜我选哪个?」

③ 安全组「自动继承」是假象:新实例会沿用原安全组,但如果你之前用「Launch Wizard」创建过自定义规则,某些端口(比如8080)可能被漏掉。建议重装后立即检查:Security Groups → 找到对应组 → Inbound Rules → 对比旧实例的实际开放端口(用sudo ss -tuln验证)。

④ EBS快照不是备份,是时间胶囊:快照只存变更块,但如果你在创建快照时实例正在写数据库,可能产生不一致状态。生产环境务必先mysql -e "FLUSH TABLES WITH READ LOCK;"(或用mysqldump锁表),再创建快照——或者直接用RDS,省心。

终极彩蛋:一行命令自动化重装(适合运维老司机)

如果你管理10+实例,手动点控台会秃头。试试这个AWS CLI组合拳(需提前配置好profile):

# 停实例 + 创建根卷快照 + 启动新AMI(复用旧卷)
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 create-snapshot --volume-id vol-0abcdef1234567890 --description "pre-reinstall-$(date +%Y%m%d)"
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t3.micro \
  --key-name MyKeyPair \
  --security-group-ids sg-0123456789abcdef0 \
  --subnet-id subnet-0123456789abcdef0 \
  --block-device-mappings '[{"DeviceName":"/dev/xvda","Ebs":{"SnapshotId":"snap-0abcdef1234567890","VolumeType":"gp3"}}]'

当然,这行命令不能代替思考——比如你得确保AMI支持你的实例架构,快照ID正确,安全组允许SSH。把它当螺丝刀,不是魔法棒。

结语:重装不是归零,而是升级的序章

在AWS上重装系统,从来不是技术问题,而是认知问题。删实例是懒人捷径,保数据才是工程师本能。当你熟练掌握「停机→快照→换AMI→挂旧盘」这套组合技,你会发现:所谓云迁移、系统升级、漏洞修复,都不再是提心吊胆的高危操作,而是一次次精准可控的外科手术。

最后送一句AWS老司机私藏口诀:「根卷可换,数据不丢;快照常备,密钥常备;安全组别忘,日志多留两份。」——毕竟,云上没有后悔键,但有快照、有日志、有你清醒的头脑。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系