跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    AlmaLinux 9:swap 大小与 swapfile 操作

    在 almalinux:9 容器(AlmaLinux 9.8)中实际执行:fallocate -l 64M /swapfile、chmod 600、mkswap、swapon、cat /proc/swaps。日志:plans/content-expansion/evidence/logs/alma-swap-sizing.log。

    swapon 在容器里被拒绝(Operation not permitted),所以「启用生效」这一段未在本环境验证,需在真实系统执行。

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

    有输出说明已有 swap 在用;没有输出说明当前没启用。

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

    这是 Red Hat 文档的推荐区间(RHEL 9 存储文档,核对日期 2026-10-19),AlmaLinux 作为 RHEL 兼容发行版沿用同一口径;起点不是定律,数据库与容器宿主应按实际负载调整。

    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 会拒绝(swapfile 可被其他用户读取等于泄露内存内容)。

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

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

    容器限制:almalinux:9 容器里 fallocate、chmod、mkswap 都成功,但 swapon 返回 Operation not permitted。这不是配置错误,而是容器缺少权限;请在真实系统完成启用与重启验证。

    • swapfile 放在不支持预分配的文件系统上:改用 dd 生成;
    • swappiness 越高越好是误解:数据库类负载通常调低(如 10),让内核优先用内存;
    • zram 与 swapfile 不是二选一:小内存机器可 zram 优先、swapfile 兜底,但两者都要算进容量规划。
    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. 重启后 swapon --show → 仍在
    4. sudo swapoff /swapfile && sudo swapon /swapfile → 可正常关闭再启用

    常见问题

    `swapon` 报 Operation not permitted 是权限不够吗?

    在容器里通常是能力受限而不是文件权限问题:fallocate/chmod/mkswap 都成功,只有 swapon 被拒。换到真实主机或带相应权限的环境再试。

    swapfile 权限为什么必须 600?

    swap 里可能有内存中的敏感数据。644 时 mkswap 会警告、swapon 会拒绝,因为其他用户能读到这个文件。

    有 zram 还需要 swapfile 吗?

    看用途:zram 压缩内存、适合小内存机器;swapfile 提供磁盘兜底并支持休眠。两者可共存,但要一起算进容量与 IO 规划。