ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux命令-swapon(开启交换空间)

Linux命令-swapon(开启交换空间) Linux命令-swapon开启交换空间快速参考基本用法选项详解创建交换空间完整流程方式一交换文件推荐灵活方式二交换分区多交换空间优先级管理交换空间优化配置实用脚本swap 大小建议swapon用于在 Linux 系统上启用交换空间swap space。交换空间是当物理内存不足时内核将不常用的内存页面写入磁盘以释放 RAM 的机制。交换空间可以是一个专用磁盘分区swap 分区也可以是一个普通文件swap file。swapon与swapoff配对共同管理系统的虚拟内存。快速参考swapon[选项][设备|文件]Linux 推荐交换空间大小为物理内存的 1-2 倍休眠场景需要 ≥ RAM 大小。现代大内存服务器64GB可能只需少量交换空间作为安全网。基本用法# 查看当前交换空间使用情况swapon--show# 启用交换分区sudoswapon/dev/sdb2# 启用交换文件sudoswapon/swapfile# 启用所有在 /etc/fstab 中定义的交换空间sudoswapon-a# 启用所有并查看详细信息sudoswapon-av# 指定优先级数值越高越优先使用sudoswapon-p10/dev/sdb2sudoswapon-p5/swapfile# /dev/sdb2 优先级更高会先被使用# 按分区标签启用sudoswapon-Lswap_partition# 按 UUID 启用sudoswapon-U1234-abcd-5678-efgh选项详解选项说明-a启用/etc/fstab中所有标记为swap的分区-d丢弃discard已释放的交换块SSD 优化-e如果设备不存在则静默跳过-f强制操作-p PRIORITY设置优先级-1 到 32767-s显示交换使用摘要已废弃用--show--show显示已启用的交换空间--noheadings显示时不输出表头--raw原始格式输出-v详细模式创建交换空间完整流程方式一交换文件推荐灵活# 1. 创建指定大小的交换文件sudofallocate-l4G /swapfile# 或使用 dd更可靠但较慢# sudo dd if/dev/zero of/swapfile bs1M count4096# 2. 设置严格权限sudochmod600/swapfile# 3. 格式化为交换空间sudomkswap/swapfile# Setting up swapspace version 1, size 4 GiB# UUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx# 4. 启用交换文件sudoswapon/swapfile# 5. 验证swapon--showfree-h# 6. 持久化配置添加到 /etc/fstabecho/swapfile none swap sw 0 0|sudotee-a/etc/fstab# 7. 验证 fstab 配置sudoswapon-a方式二交换分区# 1. 使用 fdisk/parted 创建分区并将类型设为 Linux swap (82)sudofdisk/dev/sdb# n → 创建新分区# t → 更改类型为 82 (Linux swap)# w → 写入并退出# 2. 通知内核重新读取分区表sudopartprobe /dev/sdb# 3. 格式化交换分区sudomkswap/dev/sdb1# 4. 启用交换分区sudoswapon/dev/sdb1# 5. 获取 UUID 用于 fstabsudoblkid /dev/sdb1# /dev/sdb1: UUIDabc-def-123 TYPEswap# 6. 添加到 /etc/fstabechoUUIDabc-def-123 none swap sw 0 0|sudotee-a/etc/fstab多交换空间优先级管理# 同时使用多个交换空间并设置优先级# SSD 优先于 HDDsudoswapon-p100/dev/nvme0n1p3# NVMe SSDsudoswapon-p50/dev/sda2# SATA SSDsudoswapon-p10/swapfile_hdd# 传统硬盘上的文件# 查看优先级PRIO 列swapon--show# NAME TYPE SIZE USED PRIO# /dev/nvme0n1p3 partition 8G 0B 100# /dev/sda2 partition 4G 0B 50# /swapfile_hdd file 2G 0B 10# 优先级相同的交换空间会被轮流使用round-robinsudoswapon-p50/dev/sda2sudoswapon-p50/dev/sdb2# 两个分区轮流写入类似 RAID 0 的效果交换空间优化配置# 调整交换倾向swappiness0-100# 0: 尽量不用交换 100: 积极使用交换cat/proc/sys/vm/swappiness# 默认 60# 临时调整sudosysctlvm.swappiness10# 永久调整echovm.swappiness10|sudotee/etc/sysctl.d/99-swap.conf# SSD 优化启用 TRIM/Discardsudoswapon-d/swapfile# 或在 fstab 中使用 discard 选项# /swapfile none swap sw,discard 0 0# 查看交换空间 I/O 统计cat/proc/vmstat|greppswp# 查看哪些进程在使用交换forpidin$(ls/proc|grep-E^[0-9]$);doswap$(awk/VmSwap:/ {print $2}/proc/$pid/smaps2/dev/null)if[-n$swap][$swap!0];thenname$(cat/proc/$pid/comm2/dev/null)echoPID$pidName$nameSwap${swap}kBfidone|sort-t-k4-rn|head-20实用脚本# 交换空间健康检查cat/usr/local/bin/swap_health.shEOF #!/bin/bash echo Swap 健康报告 echo 时间: $(date) echo # 检查是否有交换空间 if [ $(swapon --show --noheadings | wc -l) -eq 0 ]; then echo ❌ 无激活的交换空间建议至少配置 1GB exit 1 fi # 显示交换空间详情 swapon --show echo free -h # 检查 fstab 配置 echo echo /etc/fstab 中的交换配置 grep -v ^# /etc/fstab | grep swap || echo ⚠️ 警告fstab 中无交换配置 # 检查 swappiness SWAPPINESS$(cat /proc/sys/vm/swappiness) echo echo vm.swappiness $SWAPPINESS if [ $SWAPPINESS -gt 60 ]; then echo ⚠️ swappiness 偏高建议降低以减少不必要的交换 fi # 检查是否有极高交换使用 SWAP_USED$(free | awk /Swap:/ {print $3}) SWAP_TOTAL$(free | awk /Swap:/ {print $2}) if [ $SWAP_TOTAL -gt 0 ]; then USAGE$((SWAP_USED * 100 / SWAP_TOTAL)) if [ $USAGE -gt 80 ]; then echo ❌ 交换空间使用率: ${USAGE}% — 建议增加物理内存 fi fi EOFchmodx /usr/local/bin/swap_health.sh# swapon -a 与 nofail 选项的安全用法# /etc/fstab 中加 nofail 避免启动中断# UUIDabc-def none swap sw,nofail 0 0swap 大小建议物理内存推荐交换空间场景说明≤ 2 GBRAM × 2传统小型系统2-8 GB RAM一般服务器8-64 GB4-8 GB现代中等服务器 64 GB4-8 GB仅作安全网需要休眠≥ RAM休眠必须# 快速检查建议RECOMMENDED_SWAP(){localMEM_KB$(grepMemTotal /proc/meminfo|awk{print $2})localMEM_GB$((MEM_KB/1024/1024))if[$MEM_GB-le2];thenecho$((MEM_GB*2))GBelif[$MEM_GB-le8];thenecho$MEM_GBGBelseecho4-8 GB安全网fi}echo推荐交换空间:$(RECOMMENDED_SWAP)swapon是 Linux 内存管理的开关。合理配置交换空间可以在物理内存不足时为系统提供缓冲避免 OOM 进程终止。但交换空间不是内存的替代品——如果系统频繁大量使用交换“thrashing”应考虑增加物理内存而非增大交换空间。
返回列表