ServerAID
Найти гайд, команду, тег… ⌘ K
Глоссарий  ·  термин

swap — что это и зачем

swap — пространство на диске, которое Linux использует как «продолжение» оперативной памяти, когда физической RAM не хватает. Бывает в виде отдельного swap-раздела или файла. На современных серверах с большим количеством RAM swap всё равно нужен — но не для скорости, а для устойчивости.

swap — пространство на диске, которое Linux использует как «продолжение» оперативной памяти, когда физической RAM не хватает. Бывает в виде отдельного swap-раздела или файла. На современных серверах с большим количеством RAM swap всё равно нужен — но не для скорости, а для устойчивости.

Что это в одном абзаце

Когда процессам в системе нужно больше памяти, чем есть физической RAM, ядро Linux может выгрузить редко используемые страницы памяти на диск — в swap. Когда страница снова понадобится, ядро поднимет её обратно. Это медленно (диск в десятки-сотни раз медленнее RAM), но позволяет системе пережить краткосрочные пики потребления без OOM Killer-а.

Посмотреть состояние свопа:

swapon --show           # активные swap-устройства
free -h                 # общий обзор RAM и swap
cat /proc/swaps         # подробности

Swap-раздел vs swap-файл

Технически swap может быть:

  • Swap-разделом — отдельный раздел диска с типом linux-swap. Классика; раньше создавался при разметке инсталлятором.
  • Swap-файлом — обычный файл в файловой системе, помеченный как swap. Гибче: можно увеличить, удалить, перенести без переразметки.

На современной Ubuntu по умолчанию инсталлятор ставит swap-файл (/swap.img), а не отдельный раздел. Это рекомендованный подход — никакой разницы в производительности, зато проще в обслуживании.

Создание swap-файла на 4 ГБ:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Чтобы swap-файл подключался автоматически после ребута, добавьте строку в /etc/fstab:

/swapfile  none  swap  sw  0  0

Если на томе ZFS или btrfs — используйте dd вместо fallocate, иначе ядро может ругаться на разреженный файл.

Сколько swap нужно

Старое правило «swap = 2× RAM» давно неактуально. Современные рекомендации Ubuntu:

Размер RAM Рекомендованный swap Если нужна гибернация
2 ГБ или меньше RAM × 2 RAM × 3
2–8 ГБ равно RAM RAM × 2
8–64 ГБ минимум 4 ГБ RAM × 1.5
64+ ГБ минимум 4 ГБ гибернация не рекомендована

Для серверов с большим RAM swap нужен не для расширения памяти, а как «подушка безопасности»: при пике потребления ядро успевает выгрузить редко используемые страницы и спасти важные процессы вместо того, чтобы убивать их через OOM Killer.

Гибернация (suspend-to-disk) — это про десктоп. На сервере её обычно не делают; для них swap = объём, который защищает от единичного процесса-обжоры.

swappiness — насколько активно использовать swap

Параметр vm.swappiness управляет агрессивностью свопа. Диапазон 0–200 (раньше было 0–100), по умолчанию на Ubuntu — 60.

  • Близко к 0 — swap используется только при крайней необходимости, ядро предпочитает чистить page-кэш.
  • 60 (по умолчанию) — умеренное использование.
  • 100 и выше — ядро охотно выгружает в swap даже когда RAM свободна.

На сервере БД (PostgreSQL, MySQL) часто рекомендуют снизить:

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf

Это уменьшит нежелательные паузы, когда страницы БД попадают в swap. На обычных веб-серверах дефолтные 60 нормально.

Текущее значение:

cat /proc/sys/vm/swappiness

zram и zswap — компромисс

Современный паттерн на ноутбуках и в облачных VPS — zram: swap не на диске, а в сжатой области RAM. Получается: вы «жертвуете» часть RAM ради свопа, но он невероятно быстрый (доступ к RAM, не к диску) и часто получается сжатие 2–3×.

sudo apt install -y zram-tools
sudo systemctl enable --now zramswap

zswap — гибрид: сжатый кэш swap-страниц в RAM перед тем, как они попадут на дисковый swap. Включается параметром ядра zswap.enabled=1. На современных Ubuntu zswap-стек обычно достаточен; zram имеет смысл на VPS с малым диском.

Когда swap не нужен

  • Виртуальные машины с явным over-commit — если хост агрессивно перепродаёт RAM, гость со swap-ом может уйти в безбожно медленный режим. Иногда лучше совсем без swap, чтобы OOM-Killer гасил процесс быстро.
  • КонтейнерыDocker и Kubernetes-под обычно не нуждаются в своём swap, ресурсы лимитируются на уровне cgroup.
  • Очень специальные real-time системы — где задержки критичны и любой swap-touch недопустим.

В остальных 95% случаев swap полезен и должен быть.

Частые вопросы

Что такое swap в Linux

Это пространство на диске (раздел или файл), куда ядро выгружает редко используемые страницы памяти, когда RAM не хватает. Позволяет процессам жить дольше при пиковом потреблении и защищает систему от внезапных OOM-убийств.

Чем swap-раздел отличается от swap-файла

Раздел — отдельная физическая область диска с разметкой типа linux-swap. Файл — обычный файл внутри файловой системы, помеченный как swap через mkswap. По производительности разница пренебрежимая. Файл удобнее: можно увеличить, удалить, переместить без правки разметки. На современной Ubuntu по умолчанию используется файл (/swap.img).

Сколько swap нужно для сервера с 16 ГБ RAM

По рекомендации Ubuntu — минимум 4 ГБ swap. Не для расширения RAM, а как «страховка» от единичного процесса, который может временно затребовать 20+ ГБ. Для гибернации (что для серверов редкость) брали бы 1.5× RAM, то есть ~24 ГБ.

Что такое swappiness и какое значение ставить

Параметр vm.swappiness (0–200) — агрессивность использования свопа. По умолчанию 60. Для серверов БД (PostgreSQL, MySQL) обычно снижают до 10 — чтобы страницы БД не уходили в swap и не вызывали лагов. Для обычного веб-сервера дефолт нормально.

Нужен ли swap если у меня много RAM

Да. Даже на серверах с 64+ ГБ RAM swap полезен как «подушка безопасности»: при пике потребления ядро успевает спокойно выгрузить редко используемые страницы вместо того, чтобы внезапно убивать процессы. Размер достаточно небольшой — от 4 ГБ.

Как создать swap-файл на Ubuntu

sudo fallocate -l 4G /swapfile (или dd на btrfs/ZFS), sudo chmod 600 /swapfile, sudo mkswap /swapfile, sudo swapon /swapfile. Чтобы файл подключался после ребута — добавить строку /swapfile none swap sw 0 0 в /etc/fstab.

Что почитать

  • btrfs снапшоты и subvolume — на btrfs swap-файл создаётся с особенностями (без fallocate); там же — общие подходы к работе с диском.
  • systemdswap.target в systemd собирает все активные swap-устройства; интересно при отладке проблем с подкачкой.
  • демон в Linux — почему правильно настроенный swap снижает риск OOM-убийств у демонов под нагрузкой.

Похожие материалы

Сроки поддержки Ubuntu LTS — на сколько хватает релиза
Глоссарий

Сроки поддержки Ubuntu LTS — на сколько хватает релиза

Ubuntu LTS — это релиз с долгой поддержкой: 5 лет бесплатных security-обновлений и 10 лет с подпиской Ubuntu Pro. Промежуточные релизы (24.10, 25.04) живут всего 9 месяцев. Разбираем, какие версии сейчас актуальны, до какой даты безопасно сидеть на 22.04 и 24.04, и когда выходит 26.04 LTS.

Редакция
Debian или Ubuntu — что выбрать
Глоссарий

Debian или Ubuntu — что выбрать

Debian и Ubuntu — две родственные операционные системы: Ubuntu сделана на базе Debian и тянет оттуда пакеты, формат `.deb` и пакетный менеджер apt. Различия — в скорости релизов, наборе из коробки и философии. Кратко: Debian Stable консервативнее и аскетичнее, Ubuntu LTS — свежее и удобнее, особенно для рабочего стола и облаков. Под прод подходят оба, выбор сводится к тому, что вам важнее: предсказуемость или новизна.

Редакция
bash — что это и зачем
Глоссарий

bash — что это и зачем

bash (Bourne Again SHell) — это командная оболочка, которая обрабатывает то, что вы вводите в терминале Linux. Запускает программы, расширяет переменные, выполняет конструкции `if` / `for`, читает скрипты из файлов с шебангом `#!/bin/bash`. На Ubuntu — оболочка по умолчанию для интерактивных пользователей; для системных скриптов используют более строгий `/bin/sh` (`dash`).

Редакция
Ubuntu — что это и зачем
Глоссарий

Ubuntu — что это и зачем

Ubuntu — самый популярный дистрибутив Linux: бесплатная операционная система на базе Debian, удобная и для серверов, и для рабочего стола. Под капотом Linux-ядро, поверх — пакетный менеджер apt, рабочий стол GNOME (на Desktop) и стек systemd-сервисов. Релизы выходят каждые полгода, LTS-версии — раз в два года и поддерживаются 5 лет.

Редакция