Linux Swap 分区实战:CentOS 7.6 下 3 步创建 1GB 文件并永久挂载 CentOS 7.6 下高效配置 Swap 空间的完整指南引言在 Linux 系统管理中Swap 空间扮演着至关重要的角色。当物理内存RAM耗尽时系统会将不活跃的内存页移动到磁盘上的 Swap 区域从而防止应用程序因内存不足而崩溃。对于运行内存密集型应用如数据库、Java 服务等的服务器来说合理配置 Swap 空间尤为重要。本文将详细介绍在 CentOS 7.6 环境下创建和管理 Swap 文件的全过程包括使用dd命令创建 Swap 文件格式化并激活 Swap 空间实现 Swap 的持久化挂载优化 Swap 使用策略常见问题排查技巧1. 准备工作与环境检查在开始创建 Swap 文件之前我们需要先了解当前系统的内存和 Swap 使用情况。# 查看当前内存和 Swap 使用情况 free -h典型输出如下total used free shared buff/cache available Mem: 3.7G 200M 3.2G 10M 300M 3.3G Swap: 1.0G 0B 1.0G关键指标解读Mem: 物理内存使用情况Swap: 当前已配置的 Swap 空间available: 系统可用的内存总量包括可回收的缓存如果 Swap 行显示为 0表示系统当前没有配置 Swap 空间。对于生产环境建议配置适当大小的 Swap 空间特别是当物理内存小于 8GB 时。2. 创建 Swap 文件在 CentOS 7.6 中我们可以通过以下步骤创建 Swap 文件2.1 使用 dd 命令创建文件# 创建 1GB 的 Swap 文件 sudo dd if/dev/zero of/swapfile bs1M count1024参数说明if/dev/zero: 输入源使用零填充文件of/swapfile: 输出文件路径bs1M: 块大小为 1MBcount1024: 块数量1024 个 1MB 块 1GB替代方案使用 fallocate更高效sudo fallocate -l 1G /swapfile注意某些旧版文件系统如早期 XFS可能不支持 fallocate此时必须使用 dd 命令。2.2 设置文件权限为确保安全性Swap 文件应仅对 root 用户可读写sudo chmod 600 /swapfile3. 配置并激活 Swap 空间3.1 格式化 Swap 文件sudo mkswap /swapfile成功执行后会显示类似输出Setting up swapspace version 1, size 1024 MiB (1073737728 bytes) no label, UUID3e3a2f1e-5f4d-4a8b-8c3e-1a2b3c4d5e6f3.2 激活 Swap 空间sudo swapon /swapfile验证 Swap 是否已激活free -h或查看详细 Swap 信息swapon --show4. 实现持久化挂载要使 Swap 配置在系统重启后仍然有效需要将其添加到/etc/fstab文件中。4.1 备份现有 fstab 文件sudo cp /etc/fstab /etc/fstab.bak.$(date %Y%m%d)4.2 添加 Swap 配置echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab4.3 验证持久化配置# 先关闭所有 Swap sudo swapoff -a # 重新挂载所有 Swap sudo swapon -a # 检查是否成功 swapon --show5. Swap 优化与调优5.1 调整 swappiness 参数swappiness 参数控制内核使用 Swap 的倾向性取值范围为 0-100# 查看当前值 cat /proc/sys/vm/swappiness临时修改重启后失效sudo sysctl vm.swappiness10永久修改echo vm.swappiness10 | sudo tee -a /etc/sysctl.conf sudo sysctl -p推荐值参考表应用场景推荐值说明数据库服务器1-10减少 Swap 使用提高性能Web 应用服务器10-30平衡内存使用和性能开发测试环境30-60默认值适合大多数场景内存密集型批处理60-100允许更多 Swap 使用5.2 调整缓存压力 (vfs_cache_pressure)echo vm.vfs_cache_pressure50 | sudo tee -a /etc/sysctl.conf sudo sysctl -p6. 高级管理与故障排查6.1 监控 Swap 使用情况实时监控命令watch -n 1 free -h; swapon --show查看哪些进程在使用 Swapfor file in /proc/*/status; do awk /VmSwap|Name/{printf $2 $3}END{ print } $file; done | sort -k 2 -n -r | grep -v 0 kB6.2 安全移除 Swap 文件如果需要移除 Swap 文件# 关闭 Swap sudo swapoff /swapfile # 从 fstab 中删除配置 sudo sed -i \|/swapfile|d /etc/fstab # 删除文件 sudo rm /swapfile6.3 常见问题解决问题1权限警告swapon: /swapfile: insecure permissions 0644, 0600 suggested.解决方案sudo chmod 600 /swapfile问题2文件系统不支持 fallocatefallocate: fallocate failed: Operation not supported解决方案使用 dd 命令替代 fallocate问题3Swap 使用率低检查 swappiness 值和 Cgroup 配置cat /proc/sys/vm/swappiness cat /sys/fs/cgroup/memory/memory.swappiness7. 生产环境最佳实践Swap 大小建议内存 ≤ 2GBSwap RAM × 22GB 内存 ≤ 8GBSwap RAM内存 8GB4-8GB Swap 通常足够性能考虑避免在 I/O 性能差的磁盘上配置 Swap对于 SSD考虑降低 swappiness 以减少写入监控建议定期检查 Swap 使用情况设置告警当 Swap 使用率持续高于 50%替代方案对于内存不足的情况优先考虑升级物理内存使用 zswap压缩的 Swap 缓存提高性能# 检查 zswap 是否启用 grep -R . /sys/module/zswap/parameters 2/dev/null通过以上步骤您已经掌握了在 CentOS 7.6 系统中创建、配置和优化 Swap 空间的完整技能。合理配置 Swap 空间可以显著提高系统的稳定性和可靠性特别是在内存资源紧张的情况下。