跳转到内容
搜索 Rocky Linux 文档

    浏览当前文档目录

    swap 该多大、怎么加:swapfile 实操(Rocky 9)

    内存不够时进程被 OOM killer 杀掉,或者你要给一台小内存机器加一层缓冲。swap 不是「越多越好」:太小起不到缓冲作用,太大又会把内存压力变成磁盘抖动。本页先给判断口径,再给可复制的 swapfile 操作。

    Terminal window
    cat /proc/swaps
    swapon --show
    Filename Type Size Used Priority
    /dev/zram0 partition 24639296 22642820 32767
    /dev/vdc partition 1048572 390964 1

    有输出说明已经在用 swap;没有输出说明当前没有启用的 swap。free -h 也能看,但精简系统里可能没装 procps。

    内存建议 swap
    ≤ 2 GB内存的 2 倍
    2–8 GB与内存相当
    8–64 GB至少 4 GB
    > 64 GB按负载决定,至少 4 GB

    这张表是 Red Hat 文档里的推荐区间(RHEL 9 存储文档,核对日期 2026-10-18)。它是起点不是定律:数据库、容器宿主、内存弹性大的机器要按实际负载调。

    Terminal window
    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    ls -l /swapfile
    sudo mkswap /swapfile
    -rw------- 1 root root 4294967296 ... /swapfile
    Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
    no label, UUID=...

    chmod 600 不是可选步骤:权限是 644 时 mkswap 会警告,swapon 直接拒绝(设备可被其他用户读取,等于泄露内存内容)。

    Terminal window
    sudo swapon /swapfile
    swapon --show
    echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

    swapon --show 里出现 /swapfile 才算生效;/etc/fstab 那一行保证重启后仍然启用。

    Terminal window
    swapon --show
    cat /proc/swaps
    sudo swapoff /swapfile && swapon --show # 确认能安全关闭
    sudo swapon /swapfile

    容器里的限制:在 rockylinux:9 容器中 fallocate、chmod、mkswap 都能成功,但 swapon 返回 Operation not permitted(容器缺少相应权限)。所以「启用成功」这一段必须在真实系统上验证,容器里只能验证到 mkswap。

    • fallocate 在 XFS 上可用,但如果 swapfile 放在不支持预分配的文件系统(如某些网络文件系统)上,要改用 dd 生成;
    • swappiness 不是越大越好:数据库类负载通常调低(如 10),让它尽量用内存;
    • zram 与 swapfile 不是二选一:小内存机器可以 zram 优先、swapfile 兜底,但两者都占资源,要一起算进容量规划。

    练习:给一台 4 GB 内存的机器加 4 GB swap

    Section titled “练习:给一台 4 GB 内存的机器加 4 GB swap”

    前置:Rocky 9,root 或 sudo,根分区剩余空间 ≥ 5 GB。

    Terminal window
    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

    检查:

    1. swapon --show → 有 /swapfile,SIZE 约 4G
    2. cat /proc/swaps | wc -l → 比操作前多 1 行
    3. sudo reboot 后 swapon --show → 仍在(fstab 生效)
    4. sudo swapoff /swapfile && sudo swapon /swapfile → 可正常关闭再启用