Amazon Linux 深度技术解析:从基础到实践的全面指南

在云计算时代,操作系统作为基础设施的核心组件,其性能、安全性和云服务集成能力直接影响业务稳定性。Amazon Linux 是由 AWS 官方开发并维护的 Linux 发行版,专为云环境优化,旨在提供与 AWS 服务的无缝集成、卓越的安全性和高性能。自 2010 年首次发布以来,Amazon Linux 已成为 AWS 上最受欢迎的操作系统之一,广泛应用于 EC2 实例、容器、无服务器等场景。

本文将从基础概念出发,详细介绍 Amazon Linux 的版本特性、安装配置、包管理、安全最佳实践、性能优化、AWS 服务集成等核心内容,并提供实用示例和故障排查技巧,帮助读者全面掌握这一云原生操作系统。

目录#

  1. Amazon Linux 概述

    • 1.1 什么是 Amazon Linux?
    • 1.2 版本演进与特性对比
    • 1.3 核心优势:为何选择 Amazon Linux?
  2. 安装与初始配置

    • 2.1 在 EC2 上启动 Amazon Linux 实例
    • 2.2 连接实例:SSH 与 AWS Systems Manager
    • 2.3 初始化配置:用户、时区与更新
  3. 包管理:YUM 与 DNF 的实践

    • 3.1 基础命令:安装、更新与卸载
    • 3.2 仓库管理:启用 EPEL 与 AWS 专用仓库
    • 3.3 版本锁定与依赖解决
  4. 系统配置与管理

    • 4.1 用户与权限管理
    • 4.2 网络配置:VPC、安全组与静态 IP
    • 4.3 存储管理:EBS 卷挂载与自动扩容
    • 4.4 服务管理:systemd 与进程监控
  5. 安全最佳实践

    • 5.1 最小权限原则:IAM 实例角色
    • 5.2 网络安全:SSH 加固与安全组策略
    • 5.3 漏洞防护:自动更新与漏洞扫描
    • 5.4 数据加密:EBS 与传输中数据
  6. 性能优化指南

    • 6.1 实例类型与资源匹配
    • 6.2 EBS 优化与存储性能
    • 6.3 内存与 CPU 资源调优
    • 6.4 CloudWatch 监控与性能分析
  7. AWS 服务集成实践

    • 7.1 EC2 用户数据:实例初始化自动化
    • 7.2 SSM Agent:无 SSH 远程管理
    • 7.3 CloudWatch Logs:集中式日志管理
    • 7.4 容器化支持:ECS/EKS 与 Amazon Linux 2023
  8. 常见问题与故障排查

    • 8.1 包安装失败:依赖冲突与仓库问题
    • 8.2 网络不通:VPC 路由与安全组排查
    • 8.3 服务启动失败:日志分析与配置修复
    • 8.4 磁盘空间不足:清理与扩容方案
  9. 从 Amazon Linux 2 迁移到 2023

    • 9.1 迁移背景:AL2 生命周期与 AL2023 新特性
    • 9.2 迁移步骤:评估、测试与部署
    • 9.3 工具支持:AWS MGN 与手动迁移对比
  10. 总结

  11. 参考资料

1. Amazon Linux 概述#

1.1 什么是 Amazon Linux?#

Amazon Linux 是云原生的 Linux 发行版,基于 Red Hat Enterprise Linux (RHEL) 和 CentOS 源码构建,由 AWS 完全控制开发、测试和维护流程。其设计目标是:

  • 与 AWS 服务(如 S3、RDS、ECS、CloudWatch)深度集成;
  • 提供长期支持(LTS)与定期安全更新;
  • 优化内存、CPU 和网络资源,降低云环境开销。

1.2 版本演进与特性对比#

Amazon Linux 历经多个版本迭代,目前主流版本为 Amazon Linux 2Amazon Linux 2023(AL2023)。以下是主要版本的核心特性对比:

特性Amazon Linux 1Amazon Linux 2Amazon Linux 2023
发布时间2010 年2017 年2023 年
生命周期结束(EOL)2020 年2025 年 6 月 30 日至少到 2028 年
内核版本3.10.x4.14.x(可升级至 5.15)6.1.x(滚动更新)
包管理器YUMYUMDNF(YUM v4)
默认 Python 版本2.72.7/3.7(可选)3.9+(仅 Python 3)
系统初始化Upstartsystemdsystemd
安全更新频率每月每周每周(支持漏洞修复回溯)
容器支持有限原生支持 Docker/Kubernetes优化 Podman/containerd

注意:Amazon Linux 1 已停止维护,强烈建议迁移至 AL2 或 AL2023。AL2 的 EOL 为 2025 年,目前 AWS 主推 AL2023 作为下一代长期支持版本。

1.3 核心优势:为何选择 Amazon Linux?#

  • AWS 原生集成:预装 SSM Agent、CloudWatch Agent 等工具,无需手动配置即可对接 AWS 服务;
  • 安全优先:默认禁用 root SSH 登录、启用 SELinux,提供 CIS 基准合规性,且安全更新速度快于社区发行版;
  • 性能优化:内核针对 EC2 实例类型(如 Graviton 处理器)优化,降低网络延迟和 I/O 开销;
  • 长期支持:AL2023 提供 5 年主流支持 + 2 年维护支持,适合企业级应用;
  • 成本效益:作为 AWS 免费提供的操作系统,无额外许可费用,且资源利用率更高。

2. 安装与初始配置#

2.1 在 EC2 上启动 Amazon Linux 实例#

Amazon Linux 实例的启动流程与其他 EC2 实例类似,但需选择官方 AMI(Amazon Machine Image)。以下是三种常用方式:

方式 1:通过 AWS 控制台手动启动#

  1. 登录 AWS 控制台,进入 EC2 服务实例启动实例
  2. 在「选择 Amazon 系统镜像 (AMI)」步骤中,搜索 Amazon Linux,选择对应版本(如 Amazon Linux 2023 AMI);
  3. 选择实例类型(如 t3.micro,符合免费套餐),配置网络(VPC、子网)、存储(EBS 卷)等参数;
  4. 在「安全组」配置中,开放必要端口(如 SSH:22、HTTP:80);
  5. 选择密钥对(用于 SSH 登录),点击「启动实例」。

方式 2:通过 AWS CLI 启动#

使用 AWS CLI 快速创建 AL2023 实例(需提前配置 CLI 凭证):

aws ec2 run-instances \
  --image-id ami-0c55b159cbfafe1f0  # AL2023 最新 AMI(需替换为目标区域 AMI ID) \
  --instance-type t3.micro \
  --key-name my-key-pair \          # 密钥对名称
  --security-group-ids sg-123456 \  # 安全组 ID
  --subnet-id subnet-123456 \       # 子网 ID
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=amazon-linux-demo}]'

提示:可通过 aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2023-ami-*" 获取目标区域的最新 AL2023 AMI ID。

方式 3:通过 Terraform 自动化部署#

使用 Infrastructure as Code (IaC) 工具 Terraform 定义实例配置,确保环境一致性:

resource "aws_instance" "amazon_linux_demo" {
  ami           = data.aws_ami.amazon_linux_2023.id  # 动态获取最新 AMI
  instance_type = "t3.micro"
  key_name      = "my-key-pair"
  vpc_security_group_ids = [aws_security_group.allow_ssh_http.id]
 
  tags = {
    Name = "amazon-linux-demo"
  }
}
 
# 动态查询 AL2023 AMI
data "aws_ami" "amazon_linux_2023" {
  most_recent = true
  owners      = ["amazon"]
  filter {
    name   = "name"
    values = ["amzn2023-ami-*-x86_64"]  # x86_64 架构,Graviton 需用 arm64
  }
}

2.2 连接实例:SSH 与 AWS Systems Manager#

启动实例后,需通过以下方式连接:

方式 1:传统 SSH 连接(需开放 22 端口)#

# 格式:ssh -i <密钥文件> <用户名>@<实例公网 IP>
ssh -i "my-key-pair.pem" [email protected]

注意:Amazon Linux 的默认用户为 ec2-user(AL1/AL2/AL2023 通用),而非 rootubuntu

方式 2:AWS Systems Manager(无端口开放,更安全)#

通过 SSM Session Manager 连接,无需开放 SSH 端口,适合生产环境:

  1. 确保实例已附加包含 AmazonSSMManagedInstanceCore 权限的 IAM 角色;
  2. 安装 AWS CLI 并配置权限后,执行:
aws ssm start-session --target <实例 ID>  # 如 i-0123456789abcdef0

2.3 初始化配置:用户、时区与更新#

首次登录后,建议完成以下初始化操作:

1. 更新系统包#

# AL2:使用 yum
sudo yum update -y
 
# AL2023:使用 dnf(YUM 的升级版,命令兼容)
sudo dnf update -y

2. 配置时区#

默认时区为 UTC,可根据业务需求修改(如上海时区):

sudo timedatectl set-timezone Asia/Shanghai
timedatectl  # 验证配置

3. 创建普通用户并授予 sudo 权限#

避免直接使用 ec2-user 进行日常操作,创建专用用户:

# 创建用户
sudo useradd appuser
# 设置密码(可选,建议使用 SSH 密钥登录)
sudo passwd appuser
# 授予 sudo 权限(无需密码)
sudo echo "appuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/appuser
sudo chmod 0440 /etc/sudoers.d/appuser

3. 包管理:YUM 与 DNF 的实践#

包管理器是 Linux 系统的核心工具,Amazon Linux 2 使用 YUM,而 AL2023 升级为 DNF(YUM v4)。两者命令语法基本兼容,但 DNF 提供更快的依赖解析和并行下载能力。

3.1 基础命令:安装、更新与卸载#

以下是常用包管理命令(AL2 用 yum,AL2023 用 dnf):

操作YUM(AL2)DNF(AL2023)
安装包sudo yum install <包名>sudo dnf install <包名>
卸载包sudo yum remove <包名>sudo dnf remove <包名>
搜索包yum search <关键词>dnf search <关键词>
查看包信息yum info <包名>dnf info <包名>
更新所有包sudo yum update -ysudo dnf update -y
清理缓存sudo yum clean allsudo dnf clean all
查看已安装包yum list installeddnf list installed

示例:安装 Apache 服务#

# AL2
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd  # 设置开机自启
 
# AL2023(命令完全兼容)
sudo dnf install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd

3.2 仓库管理:启用 EPEL 与 AWS 专用仓库#

Amazon Linux 默认启用官方仓库,但部分第三方包需通过 EPEL(Extra Packages for Enterprise Linux) 或 AWS 专用仓库获取。

启用 EPEL 仓库#

EPEL 提供大量社区维护的包(如 htopnodejs),安装方式:

# AL2:直接安装 EPEL 源
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
 
# AL2023:EPEL 已预集成,直接启用
sudo dnf install -y epel-release

启用 AWS 专用仓库#

AWS 提供部分专有服务的客户端包(如 awscli2amazon-ssm-agent),可通过以下命令启用:

# 查看已启用仓库
dnf repolist enabled
 
# 启用 AWS 工具仓库(AL2023 示例)
sudo dnf config-manager --set-enabled amazonlinux-development-tools

3.3 版本锁定与依赖解决#

在生产环境中,需避免包版本意外升级导致兼容性问题,可通过 versionlock 插件锁定版本:

# AL2:安装 versionlock 插件
sudo yum install -y yum-plugin-versionlock
# 锁定 httpd 版本为 2.4.6-97.amzn2
sudo yum versionlock httpd-2.4.6-97.amzn2
 
# AL2023:dnf 内置 versionlock 功能
sudo dnf install -y python3-dnf-plugin-versionlock
sudo dnf versionlock add httpd-2.4.57-1.amzn2023

若安装包时出现依赖冲突,可使用 dnf deplist 分析依赖链,或添加 --skip-broken 忽略无法解决的依赖(谨慎使用):

dnf deplist httpd  # 查看 httpd 的依赖项
sudo dnf install -y httpd --skip-broken  # 跳过冲突依赖

4. 系统配置与管理#

4.1 用户与权限管理#

除了初始化时创建的用户,Amazon Linux 的权限管理需重点关注以下方面:

SSH 密钥登录配置#

为增强安全性,建议禁用密码登录,仅允许 SSH 密钥认证:

  1. 编辑 /etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config
  1. 确保以下配置:
PasswordAuthentication no  # 禁用密码登录
ChallengeResponseAuthentication no
PubkeyAuthentication yes   # 启用密钥登录
  1. 重启 sshd 服务:
sudo systemctl restart sshd

文件权限控制#

使用 chmodchown 管理文件权限,遵循最小权限原则:

# 限制敏感文件权限(如私钥)
chmod 600 ~/.ssh/id_rsa
# 递归修改目录所有者
sudo chown -R appuser:appuser /opt/app

4.2 网络配置:VPC、安全组与静态 IP#

Amazon Linux 的网络配置需结合 VPC 环境,核心要点包括:

查看网络信息#

ip addr  # 查看网卡与 IP
ip route  # 查看路由表
netstat -tuln  # 查看监听端口(需安装 net-tools:sudo dnf install -y net-tools)

配置静态 IP(高级场景)#

EC2 实例默认通过 DHCP 获取 IP,但部分场景(如数据库服务器)需静态 IP:

  1. 登录 AWS 控制台,为实例分配 弹性 IP(EIP)
  2. 在实例内编辑网卡配置文件(AL2023 路径为 /etc/NetworkManager/system-connections/):
sudo vim /etc/NetworkManager/system-connections/eth0.nmconnection
  1. 添加静态 IP 配置(需与 VPC 子网 CIDR 匹配):
[ipv4]
method=manual
addresses=10.0.1.100/24  # 静态 IP/子网掩码
gateway=10.0.1.1         # 子网网关(VPC 路由表中查看)
dns=8.8.8.8;8.8.4.4      # DNS 服务器
  1. 重启网络服务:
sudo systemctl restart NetworkManager

4.3 存储管理:EBS 卷挂载与自动扩容#

EBS 卷是 EC2 实例的持久化存储,需正确挂载并配置自动扩容以避免磁盘空间不足。

挂载新 EBS 卷#

  1. 控制台附加 EBS 卷后,查看设备名称(如 /dev/xvdf):
lsblk  # 列出所有块设备,未挂载的卷通常显示为 "xvdf"
  1. 格式化并挂载:
sudo mkfs.xfs /dev/xvdf  # 格式化为 XFS 文件系统(AL 推荐)
sudo mkdir /data
sudo mount /dev/xvdf /data
  1. 设置开机自动挂载,编辑 /etc/fstab
# 获取卷的 UUID(避免设备名称变动导致挂载失败)
sudo blkid /dev/xvdf  # 输出类似 UUID="abc123..." TYPE="xfs"
# 编辑 fstab,添加 UUID 配置
sudo echo 'UUID=abc123... /data xfs defaults,noatime 0 0' >> /etc/fstab
# 验证 fstab 配置(避免语法错误导致无法开机)
sudo mount -a

自动扩容文件系统#

当 EBS 卷容量不足时,可通过控制台扩容后,在实例内扩展文件系统:

# 确认卷已扩容(如从 20GB 扩容到 50GB)
lsblk /dev/xvdf  # 查看物理卷大小是否更新
# 扩展 XFS 文件系统(AL 常用)
sudo xfs_growfs /data  # /data 为挂载点
 
# 若使用 ext4 文件系统(较少见)
sudo resize2fs /dev/xvdf

4.4 服务管理:systemd 与进程监控#

Amazon Linux 2/2023 均使用 systemd 作为 init 系统,负责服务启动、进程管理和日志收集。

基础服务操作#

# 启动/停止/重启服务
sudo systemctl start httpd
sudo systemctl stop httpd
sudo systemctl restart httpd
 
# 设置开机自启/禁用
sudo systemctl enable httpd
sudo systemctl disable httpd
 
# 查看服务状态与日志
systemctl status httpd
journalctl -u httpd -f  # 实时查看 httpd 日志(-f 表示跟踪)

自定义服务配置#

若需将应用程序注册为 systemd 服务(如 Java 应用),可创建服务文件 /etc/systemd/system/myapp.service

[Unit]
Description=My Application Service
After=network.target  # 网络启动后再启动服务
 
[Service]
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar app.jar
Restart=always  # 进程退出时自动重启
RestartSec=5  # 重启间隔 5 秒
 
[Install]
WantedBy=multi-user.target  # 多用户模式下自启

然后加载并启动服务:

sudo systemctl daemon-reload  # 重新加载服务配置
sudo systemctl start myapp
sudo systemctl enable myapp

5. 安全最佳实践#

安全是 Amazon Linux 设计的核心,以下是生产环境必须遵循的最佳实践:

5.1 最小权限原则:IAM 实例角色#

避免在实例内存储长期访问密钥,使用 IAM 实例角色 授予临时权限:

  1. 创建 IAM 角色,附加最小权限策略(如仅允许访问特定 S3 桶的 AmazonS3ReadOnlyAccess);
  2. 通过控制台或 CLI 将角色附加到实例:
aws ec2 associate-iam-instance-profile \
  --instance-id <实例 ID> \
  --iam-instance-profile Name=<角色名>
  1. 实例内通过 curl 获取临时凭证(无需手动配置 AWS CLI):
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<角色名>

5.2 网络安全:SSH 加固与安全组策略#

  • 安全组限制:仅开放必要端口(如 80/443),SSH 端口仅允许特定 IP 段访问;
  • SSH 加固:禁用 root 登录、密码登录,使用 SSH 密钥 + 证书认证(进阶);
  • 配置防火墙:默认 Amazon Linux 未启用 firewalld,生产环境建议启用:
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-service=http --permanent  # 允许 HTTP
sudo firewall-cmd --reload

5.3 漏洞防护:自动更新与漏洞扫描#

  • 自动更新:配置 yum-cron(AL2)或 dnf-automatic(AL2023)实现安全更新自动安装:
# AL2023 配置 dnf-automatic
sudo dnf install -y dnf-automatic
sudo vim /etc/dnf/automatic.conf  # 设置 upgrade_type=security(仅更新安全补丁)
sudo systemctl enable --now dnf-automatic.timer
  • 漏洞扫描:集成 Amazon Inspector 或开源工具 lynis 定期扫描:
# 安装 lynis(需 EPEL 仓库)
sudo dnf install -y lynis
sudo lynis audit system  # 执行系统安全审计

5.4 数据加密:EBS 与传输中数据#

  • EBS 卷加密:创建卷时启用加密,或通过快照加密现有卷;
  • 传输加密:所有服务(如 HTTP)强制使用 TLS,配置 mod_ssl 启用 HTTPS:
sudo dnf install -y mod_ssl  # 安装 SSL 模块
sudo vim /etc/httpd/conf.d/ssl.conf  # 配置证书路径(如 Let's Encrypt)
sudo systemctl restart httpd

6. 性能优化指南#

6.1 实例类型与资源匹配#

选择合适的实例类型是性能优化的基础:

  • 计算密集型(如 AI 训练):选择 c5/c6g(Graviton2)实例;
  • 内存密集型(如数据库):选择 r5/r6g 实例;
  • 突发性能型t3/t4g 实例适合流量波动大的场景,利用 CPU 积分机制降低成本。

6.2 EBS 优化与存储性能#

  • 启用 EBS 优化:部分实例类型需手动启用(控制台「实例设置」→「更改 EBS 优化」),可提升 I/O 吞吐量;
  • 选择合适的卷类型:生产环境优先使用 gp3(通用型)或 io2(高性能),避免 gp2 和磁卷;
  • 对齐 I/O:确保分区起始位置对齐(现代工具如 mkfs.xfs 已默认对齐)。

6.3 内存与 CPU 资源调优#

  • 配置 swap 空间:当内存不足时,swap 可避免 OOM 杀死进程,但需控制使用频率(swap 性能远低于内存):
sudo fallocate -l 4G /swapfile  # 创建 4GB swap 文件
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 开机自动挂载 swap
sudo echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
  • 限制进程资源:通过 systemd 的 [Service] 段配置 CPU/内存限制:
[Service]
CPUQuota=50%  # 限制 CPU 使用不超过 50%
MemoryLimit=1G  # 限制内存使用不超过 1GB

6.4 CloudWatch 监控与性能分析#

通过 CloudWatch 监控关键指标,及时发现性能瓶颈:

  1. 安装 CloudWatch Agent:
# 下载安装脚本(AL2023 示例)
sudo dnf install -y amazon-cloudwatch-agent
# 运行配置向导,选择监控指标(CPU、内存、磁盘 I/O 等)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
  1. 监控关键指标:
    • CPU 使用率:持续 >80% 需考虑升级实例或优化应用;
    • 内存使用率:避免频繁使用 swap(可通过 vmstat 查看 swap in/out);
    • 磁盘 I/Oiostat -x 1 查看 %util(设备利用率),持续 >90% 表示 I/O 饱和。

7. AWS 服务集成实践#

Amazon Linux 与 AWS 服务的深度集成是其核心优势,以下是常见场景的配置示例:

7.1 EC2 用户数据:实例初始化自动化#

通过「用户数据」脚本,可在实例启动时自动执行配置(如安装软件、拉取代码),无需手动登录。示例:

#!/bin/bash
# 安装 Apache 并部署静态页面
yum install -y httpd
echo "<h1>Hello from Amazon Linux!</h1>" > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd

启动实例时,在「高级详情」→「用户数据」中粘贴上述脚本,实例启动后即可通过公网 IP 访问页面。

7.2 SSM Agent:无 SSH 远程管理#

SSM Agent 是 Amazon Linux 预装的代理,支持远程命令执行、文件传输等功能,无需开放 SSH 端口:

# 执行远程命令(通过 AWS CLI)
aws ssm send-command \
  --instance-ids <实例 ID> \
  --document-name "AWS-RunShellScript" \
  --parameters "commands=['sudo dnf update -y']"
 
# 查看命令执行结果
aws ssm list-command-invocations --command-id <命令 ID>

7.3 CloudWatch Logs:集中式日志管理#

将应用日志发送到 CloudWatch Logs,便于集中查询和告警:

  1. 安装 CloudWatch Logs Agent 后,编辑配置文件 /etc/awslogs/awslogs.conf
[/var/log/httpd/access.log]
file = /var/log/httpd/access.log
log_group_name = /aws/ec2/amazon-linux/httpd/access
log_stream_name = {instance_id}/access.log
  1. 重启日志代理:
sudo systemctl restart awslogsd
  1. 在 CloudWatch 控制台查看日志流。

8. 常见问题与故障排查#

8.1 包安装失败:依赖冲突与仓库问题#

症状dnf install <包名> 提示 Error: Unable to find a match 或依赖缺失。
排查步骤

  1. 检查仓库是否启用:dnf repolist
  2. 清理缓存并刷新:sudo dnf clean all && sudo dnf makecache
  3. 手动指定仓库安装:sudo dnf install -y --enablerepo=epel <包名>

8.2 网络不通:VPC 路由与安全组排查#

症状:实例无法访问外网或被访问。
排查步骤

  1. 检查安全组规则:是否开放目标端口(如 80);
  2. 检查子网路由表:是否关联 Internet Gateway(IGW);
  3. 实例内测试网络:ping 8.8.8.8(测试 DNS:nslookup amazon.com);
  4. 查看防火墙规则:sudo firewall-cmd --list-all

8.3 服务启动失败:日志分析与配置修复#

症状systemctl start <服务> 失败,状态显示 failed
排查步骤

  1. 查看详细日志:journalctl -u <服务名> -e-e 跳转到最新日志);
  2. 检查配置文件语法:如 httpd 服务可执行 apachectl configtest
  3. 验证依赖资源:如数据库服务需确保数据目录权限正确(chown -R mysql:mysql /var/lib/mysql)。

8.4 磁盘空间不足:清理与扩容#

症状df -h 显示磁盘使用率 100%,应用无法写入文件。
排查步骤

  1. 定位大文件:sudo du -sh /* | sort -rh(从根目录查找大目录);
  2. 清理日志:sudo truncate -s 0 /var/log/nginx/access.log(清空大日志文件);
  3. 扩容 EBS 卷(参考 4.3 节)。

9. 从 Amazon Linux 2 迁移到 2023#

随着 Amazon Linux 2 将于 2025 年停止支持,迁移到 AL2023 是必然趋势。以下是迁移关键步骤:

9.1 迁移准备:评估差异#

AL2 与 AL2023 的主要差异需提前适配:

  • 包管理器:从 yum 迁移到 dnf(命令兼容,但部分插件需重新安装);
  • Python 版本:AL2023 仅支持 Python 3.9+,需确保应用兼容;
  • 系统路径:部分配置文件路径变更(如 /etc/yum.repos.d//etc/dnf/repos.d/);
  • 服务依赖:部分旧服务(如 ntpd)被替换为 chronyd

9.2 迁移工具:AWS MGN 与手动迁移#

方式 1:使用 AWS Application Migration Service(MGN)#

MGN 可自动化迁移流程,适合大规模实例:

  1. 在源实例(AL2)安装 MGN 代理;
  2. 创建复制模板,指定目标区域和 AL2023 AMI;
  3. 执行测试迁移,验证应用功能后完成切割。

方式 2:手动迁移(适合小规模场景)#

  1. 备份数据:将 /etc 配置文件、应用数据同步到 S3 或临时存储;
  2. 启动 AL2023 实例,安装相同版本的应用包;
  3. 恢复配置文件和数据,测试服务可用性;
  4. 切换 DNS 或负载均衡器指向新实例。

10. 总结#

Amazon Linux 作为 AWS 生态的核心操作系统,凭借云原生设计、安全强化和服务集成能力,成为企业上云的首选。本文从版本特性、安装配置、包管理、安全实践到性能优化,全面覆盖了 Amazon Linux 的核心知识点,并提供了实用示例和故障排查技巧。

无论是运维人员还是开发人员,掌握 Amazon Linux 的使用与调优,都能显著提升云基础设施的稳定性和效率。随着 AL2023 的普及,建议尽早评估迁移计划,充分利用其新特性(如滚动内核更新、Graviton3 优化)构建更可靠的云环境。

11. 参考资料#