На Ubuntu VPS swap можно добавить обычным файлом без отдельного дискового раздела.
Базовая последовательность выглядит так:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfileЧтобы swap подключался после перезагрузки, добавьте в /etc/fstab: /swapfile none swap sw 0 0
Текущее состояние памяти и swap удобно проверять через:
free -h
swapon --show
vmstat 1Для VPS можно дополнительно уменьшить vm.swappiness, например до 10, если хочется, чтобы система менее охотно выгружала страницы памяти в swap: sudo sysctl vm.swappiness=10
Постоянное значение лучше сохранить в /etc/sysctl.d/99-swappiness.conf.
При изменении размера swap сначала проверяйте, хватает ли доступной RAM для swapoff. Если swap активно используется, отключать его на почти заполненной памяти опасно.
Небольшое использование swap само по себе нормально. А вот постоянно заполненный swap, низкий available и регулярные ненулевые si/so в vmstat уже говорят о том, что серверу, скорее всего, не хватает RAM.
Что такое swap и когда он действительно нужен
Добро пожаловать!
Сегодня на повестке дня тема попроще, но при этом она одна из тех, которые часто начинают изучать уже после первого неприятного сюрприза на VPS.
Например, сервер вроде бы работает нормально, памяти хватает, приложение отвечает — а потом приходит кратковременный пик нагрузки, какой-нибудь процесс резко съедает остаток RAM, и Linux начинает убивать процессы (как правило самые важные) через OOM Killer.
Вот в таких ситуациях и вспоминают про swap.
Swap — это область на диске, которую Linux может использовать как дополнительное пространство для памяти, когда оперативной памяти становится мало.
Но здесь сразу важно снять одно распространенное заблуждение: swap — это не «бесплатное продолжение RAM».
Он может помочь серверу пережить нехватку памяти, но по очевидным причинам диск не является таким же быстрым, как оперативная память - поэтому это именно помощь, а не "бесплатное" расширение RAM.
Поэтому в этой статье мы не просто создадим swap-файл, а разберемся, когда он действительно полезен, как выбрать размер, что делает swappiness и почему постоянно забитый swap — это уже не повод радоваться, что «всё работает».
Как swap связан с RAM
Оперативная память — это основное рабочее пространство для процессов.
Именно туда попадают:
- Код программ;
- Данные приложений;
- Кэш;
- Страницы памяти процессов;
- Временные структуры ядра.
Пока RAM хватает, всё работает быстро.
Проблемы начинаются, когда свободной памяти становится мало.
Linux может выгружать менее активно используемые страницы памяти в swap и освобождать RAM для более актуальных задач.
Например, если процесс давно не обращался к какой-то части памяти, ядро может временно перенести ее в swap.
Когда эти данные снова понадобятся, Linux прочитает их обратно.
И вот тут становится заметна разница между RAM и диском.
RAM работает значительно быстрее даже хорошего SSD или NVMe. Поэтому активная постоянная работа со swap может сильно замедлить сервер.
Из-за этого swap лучше воспринимать не как полноценную замену памяти, а как страховочную площадку.
Он особенно полезен, если сервер обычно укладывается в доступную RAM, но иногда получает короткие пики нагрузки.
Когда swap помогает, а когда пора увеличивать память
Swap особенно полезен в нескольких сценариях.
Например, на VPS с 1–2 ГБ RAM может работать небольшое приложение, Nginx, база данных и несколько фоновых процессов.
Большую часть времени всё укладывается в память.
Но иногда происходит:
- Обновление пакетов;
- Сборка приложения;
- Импорт большого файла;
- Пиковый запрос;
- Кратковременный рост кэша;
- Запуск дополнительного процесса.
Без swap сервер может быстро упереться в лимит RAM.
После этого ядру придется освобождать память другими способами, вплоть до завершения процессов через OOM Killer.
Небольшой swap в таком случае может дать системе запас времени и пережить пик без падения приложения.
Но если сервер постоянно использует большую часть swap, ситуация уже другая.
Допустим:
RAM: 2 GB
Swap: 4 GB
RAM used: 1.9 GB
Swap used: 3.2 GBИ так происходит почти постоянно.
Это не значит, что мы волшебным образом превратили VPS с 2 ГБ памяти в VPS с 6 ГБ.
Скорее серверу уже объективно не хватает RAM.
Особенно плохой признак — постоянная активная запись данных в swap и чтение обратно при общем замедлении работы бизнес-приложений.
В таком состоянии система может начать заметно тормозить: процессам приходится постоянно ждать диск вместо быстрого доступа к памяти.
Поэтому правило довольно простое:
- Редкое или небольшое использование swap — нормально;
- Swap во время кратковременного пика — полезно;
- Постоянно забитый swap — повод разбираться с потреблением памяти;
- Постоянный активный swapping — уже сигнал, что лучше увеличивать RAM или снижать нагрузку.
То есть swap помогает сгладить нехватку памяти, но не отменяет физические ограничения VPS.
Проверяем память и текущий swap
Прежде чем создавать новый swap-файл, сначала посмотрим, что уже есть на сервере.
Иногда провайдер добавляет swap автоматически. В других случаях его нет вообще.
Заодно оценим текущее состояние оперативной памяти.
Смотрим RAM через free
Самая простая команда: free -h
Опция -h выводит значения в удобном для человека формате: мегабайты и гигабайты вместо количества байтов.
Например:

Здесь особенно полезны несколько колонок.
- Total — общий объем RAM.
- Used — сколько памяти сейчас используется.
- Free — полностью свободная память.
Linux старается не держать RAM пустой без причины и активно использует ее под кэш.
Поэтому для оценки реального запаса обычно полезнее смотреть на: available
Это примерный объем памяти, который система может предоставить новым процессам без серьезного ухода в swap.
Например, если:
free = 200 MB
available = 1.1 GBЭто еще не означает, что сервер почти остался без памяти.
Часть RAM просто занята полезным кэшем, который при необходимости можно освободить.
Проверяем активный swap

Теперь посмотрим, подключен ли swap вообще: swapon --show
Если команда ничего не выводит, активного swap сейчас нет.
Можно перепроверить через: free -h
Если видим: Swap: 0B 0B 0B, значит swap действительно отсутствует.
Если же swap уже создан, swapon --show может показать примерно:

Здесь:
| Поле | Что означает |
| NAME | Путь к swap-файлу или разделу |
| TYPE | Тип swap |
| SIZE | Общий размер |
| USED | Сколько сейчас занято |
| PRIO | Приоритет при наличии нескольких swap-областей |
Можно дополнительно посмотреть данные напрямую через: cat /proc/swaps
Но для повседневной проверки swapon --show обычно удобнее.
Еще одна полезная команда: vmstat 1
Она будет обновлять статистику каждую секунду.
Нас позже особенно заинтересуют колонки: si и so
Где:
- si — данные, которые читаются из swap в RAM;
- so — данные, которые выгружаются из RAM в swap.
Если там почти всегда нули — сервер не занимается активным swapping прямо сейчас.
Если значения постоянно растут под обычной нагрузкой, памяти уже может не хватать.
Теперь мы знаем, сколько памяти есть на VPS и существует ли swap уже сейчас.
Если его нет или текущего объема недостаточно, следующим шагом создадим обычный swap-файл, правильно настроим права и подключим его без создания отдельного дискового раздела, что в условиях VPS проще и безопаснее.
Создаем swap-файл
Выделяем место под swap
Допустим, хотим создать swap объемом 2 ГБ.
Проще всего использовать: sudo fallocate -l 2G /swapfile
Команда создаст файл: /swapfile размером 2 ГБ.
Проверим: ls -lh /swapfile
Ожидаем примерно: -rw-r--r-- 1 root root 2.0G ... /swapfile
Если fallocate по какой-то причине не подходит для используемой файловой системы, можно создать файл через dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progressРезультат будет тот же: на диске появится файл размером около 2 ГБ.
Перед созданием swap стоит убедиться, что на разделе вообще достаточно свободного места: df -h /
Если диск почти заполнен, выделять еще несколько гигабайт под swap без проверки — не лучшая идея.
Настраиваем права
Теперь самое важное — ограничить доступ к файлу.
Выполним: sudo chmod 600 /swapfile
Проверим: ls -lh /swapfile
Теперь права должны выглядеть примерно так: -rw------- 1 root root 2.0G ... /swapfile
Почему здесь нужен именно 600?
Swap может содержать страницы памяти процессов. А в памяти потенциально находятся чувствительные данные: токены, пароли, содержимое запросов и другие значения.
Поэтому обычные пользователи не должны иметь возможность читать этот файл.
Права: 600 означают:
- Владелец может читать и записывать;
- Остальные пользователи не получают доступа.
Для swap-файла это нормальная и ожидаемая настройка.
Форматируем и подключаем swap

Сам по себе большой файл еще не является swap.
Сначала нужно пометить его как swap-область: sudo mkswap /swapfile
После этого получим сообщение примерно такого вида: Setting up swapspace version 1, size = 2 GiB
Теперь подключаем: sudo swapon /swapfile
Проверим: swapon --show
Ожидаем:

Также проверим общую память: free -h
Теперь в строке Swap должен появиться наш объем:
Swap: 2.0Gi 0 И 2.0Gdi
Если USED сейчас равен нулю, это совершенно нормально.
Swap не обязан использоваться сразу после подключения. Он просто становится доступным ядру, если в нем появится необходимость.
Делаем swap постоянным
На этом swap уже работает, но пока есть одна проблема.
Команда: sudo swapon /swapfile подключает его только для текущего запуска системы.
После перезагрузки VPS файл останется на диске, но автоматически использоваться как swap уже не будет.
Чтобы этого не произошло, добавим его в /etc/fstab.
Добавляем swap в /etc/fstab
Файл: /etc/fstab содержит информацию о файловых системах и других ресурсах, которые Linux должен подключать при загрузке.
Перед редактированием полезно сделать резервную копию: sudo cp /etc/fstab /etc/fstab.bak
Теперь откроем файл: sudo nano /etc/fstab
И добавим в конец: /swapfile none swap sw 0 0
Разберем поля:
| Значение | Что означает |
| /swapfile | путь к нашему файлу |
| none | точка монтирования для swap не нужна |
| swap | тип ресурса |
| sw | стандартные параметры swap |
| 0 0 | для swap здесь не нужны dump и fsck |
Сохраняем файл.
Важно внимательно проверить строку перед перезагрузкой.
Проверяем конфигурацию после перезагрузки
Сначала убедимся, что swap работает прямо сейчас: swapon --show
Затем можно перезагрузить VPS: sudo reboot
После повторного подключения проверяем: swapon --show и free -h
Если /swapfile снова отображается как активный, значит запись в /etc/fstab сработала и swap подключается автоматически.
Дополнительно можно проверить строку: grep swap /etc/fstab
Ожидаем: /swapfile none swap sw 0 0
Теперь swap больше не зависит от ручного swapon после каждого reboot.
Настраиваем swappiness
Swap уже создан, подключен и переживает перезагрузку VPS.
Теперь осталось решить, насколько охотно Linux вообще должен им пользоваться.
За это отвечает параметр: vm.swappiness
И здесь тоже есть популярное заблуждение.
swappiness — это не «процент заполнения RAM, после которого включается swap».
То есть значение: 10 не означает «начать использовать swap, когда осталось 10% памяти».
Параметр работает иначе.
Что означает параметр vm.swappiness
vm.swappiness влияет на то, насколько активно ядро Linux предпочитает выгружать неактивные страницы памяти в swap вместо того, чтобы удерживать их в RAM.
Посмотреть текущее значение можно так: cat /proc/sys/vm/swappiness или sysctl vm.swappiness
Например: vm.swappiness = 60
Чем выше значение, тем охотнее система может использовать swap.
Чем ниже — тем дольше ядро старается удерживать данные в оперативной памяти.
Для обычного VPS часто выбирают более умеренное значение, например: 10 или: 20
Но здесь нет одного универсально правильного числа.
Если сервер работает с базой данных, веб-приложением или другими чувствительными к задержкам процессами, обычно хочется избегать слишком активного swapping.
С другой стороны, ставить 0 тоже не всегда разумно.
Это не «полностью отключить swap». Скорее система просто будет крайне неохотно его использовать.
Поэтому для небольшого VPS вполне адекватной стартовой точкой может быть, например: 10, а дальше уже смотреть на реальную нагрузку.
Меняем значение временно
Попробуем изменить swappiness без перезагрузки: sudo sysctl vm.swappiness=10
Проверим: sysctl vm.swappiness
Ожидаем: vm.swappiness = 10
Изменение применяется сразу.
Но только до следующей перезагрузки.
Это удобно для теста: можно посмотреть, как сервер ведет себя под обычной нагрузкой, и при необходимости подобрать другое значение.
Сохраняем настройку постоянно

Чтобы swappiness сохранялся после reboot, создадим отдельный sysctl-файл: sudo nano /etc/sysctl.d/99-swappiness.conf
Добавим: vm.swappiness=10
Сохраняем файл.
Применить настройку без перезагрузки можно так: sudo sysctl --system
После этого снова проверим: sysctl vm.swappiness
Должно остаться: vm.swappiness = 10
После следующей перезагрузки система тоже загрузит это значение автоматически.
Теперь swap не только существует, но и настроено поведение ядра при работе с ним.
Остается еще один практический вопрос: сколько swap вообще нужно выделять.
Как выбрать размер swap
Универсальной формулы здесь нет.
Старое правило вроде: swap должен быть в два раза больше RAM для современных VPS слишком грубое.
Размер зависит от того, сколько памяти на сервере, какая нагрузка и зачем swap вообще создается.
Несколько практических ориентиров
Для обычного VPS можно отталкиваться примерно от таких значений:
| RAM на VPS | Разумный стартовый swap |
| 1 ГБ | 1–2 ГБ |
| 2 ГБ | 1–2 ГБ |
| 4 ГБ | 1–4 ГБ |
| 8 ГБ | 1–4 ГБ |
| 16 ГБ и больше | зависит от нагрузки |
Если сервер небольшой и периодически ловит кратковременные пики памяти, swap размером 1–2 ГБ часто уже дает полезную страховку.
Если же у VPS:
- RAM = 2 ГБ
- Swap = 8 ГБ
И при этом большая часть этих 8 ГБ регулярно занята, проблема уже не в неправильном размере swap.
Скорее всего, серверу просто не хватает оперативной памяти.
Для баз данных и приложений с постоянной высокой нагрузкой лучше смотреть не только на общий объем swap, но и на то, насколько активно он используется.
И еще один отдельный сценарий — гибернация.
На обычном VPS она почти неактуальна, поэтому подбирать swap размером не меньше RAM ради hibernation здесь обычно не требуется.
В контексте сервера swap — это в первую очередь защита от кратковременных пиков и дополнительный запас памяти, а не полноценная замена RAM.
Увеличиваем или уменьшаем swap
Размер swap не обязательно выбирать один раз и навсегда.
Если позже окажется, что 1 ГБ мало, а 4 ГБ избыточно, swap-файл можно пересоздать с другим размером.
Но здесь есть важный момент: нельзя просто удалить активный swap-файл и создать новый.
Сначала swap нужно корректно отключить, а перед этим убедиться, что системе хватит оперативной памяти.
Проверяем, хватит ли RAM для swapoff
Команда: sudo swapoff /swapfile перемещает используемые страницы из swap обратно в RAM.
И если оперативной памяти в этот момент недостаточно, можно получить зависание, сильное торможение или OOM.
Поэтому сначала смотрим: free -h
Особенно нас интересуют:
available
Swap used
Например, если swap использует 1.5 GiB, а доступной RAM осталось всего 400 MiB, отключать swap прямо сейчас плохая идея.
Лучше сначала:
- Остановить тяжелые процессы;
- Дождаться снижения нагрузки;
- Временно увеличить RAM VPS, если провайдер это позволяет;
- Либо создать дополнительный swap и только потом менять основной.
Если же swap почти не используется и свободной памяти достаточно, можно продолжать.
Отключаем swap и меняем размер файла
Допустим, хотим увеличить swap с 2 до 4 ГБ.
Сначала отключаем текущий: sudo swapoff /swapfile
Проверяем: swapon --show
Если /swapfile исчез из списка, он больше не активен.
Теперь удалим старый файл: sudo rm /swapfile
И создадим новый: sudo fallocate -l 4G /swapfile
Для уменьшения логика та же.
Например, если хотим 1 ГБ: sudo fallocate -l 1G /swapfile
После создания обязательно возвращаем безопасные права: sudo chmod 600 /swapfile
Проверим: ls -lh /swapfile
Форматируем и подключаем его заново
Новый файл снова нужно превратить в swap-область: sudo mkswap /swapfile
Затем подключить: sudo swapon /swapfile
Проверяем swapon --show и free -h
Если путь остался прежним: /swapfile, то строку в /etc/fstab менять не нужно.
Она по-прежнему будет работать: /swapfile none swap sw 0 0
Но после изменения размера полезно еще раз убедиться, что запись действительно есть: grep swap /etc/fstab
И только потом считать изменение завершенным.
Проверяем, помогает ли swap серверу
Сам факт наличия swap еще не говорит, что сервер теперь чувствует себя хорошо.
После настройки стоит некоторое время наблюдать за памятью и смотреть, как именно система использует этот запас.
Смотрим использование RAM и swap
Начнем с привычной команды: free -h
Например:

220 МБ использованного swap сами по себе не означают проблему.
Linux может выгрузить давно неиспользуемые страницы и не возвращать их обратно только потому, что RAM позже снова освободилась.
Поэтому важнее смотреть не только на Swap used, а на активность обмена.
Для этого: vmstat 1
Нас интересуют колонки:
- si
- so
Где:
- si — страницы, возвращаемые из swap в RAM;
- so — страницы, отправляемые из RAM в swap.
Если сервер большую часть времени показывает:
- si = 0
- so = 0
а swap немного занят — это обычно не страшно.
Можно также посмотреть активный swap: swapon --show
Когда активный swapping уже говорит о нехватке памяти
Насторожиться стоит, когда появляются сразу несколько признаков:
- Available RAM постоянно очень мало;
- Swap стабильно заполнен;
- Si и so регулярно ненулевые;
- Приложения начинают отвечать медленнее;
- Растет load average;
- Появляются сообщения OOM.
Проверить OOM можно так: sudo journalctl -k | grep -i oom или dmesg | grep -i oom
Если система постоянно перемещает данные туда-сюда между RAM и swap, возникает явление, которое называют thrashing.
В этот момент сервер начинает тратить слишком много времени на работу с диском вместо полезной обработки запросов.
И вот здесь увеличение swap еще сильнее не всегда спасает.
Если проблема постоянная, лучше:
- Добавить RAM;
- Уменьшить число worker-процессов;
- Ограничить тяжелые сервисы;
- Найти процесс с утечкой памяти;
- Оптимизировать приложение или базу данных.
То есть swap хорош как страховка и буфер.
Но если он превращается в основное рабочее пространство сервера, значит проблема уже не в отсутствии swap, а в нехватке оперативной памяти.
Заключение

Swap на Ubuntu VPS — это полезная страховка от кратковременной нехватки памяти, но не способ превратить маленький сервер в большой.
Мы создали swap-файл, выставили безопасные права, подключили его через swapon, добавили в /etc/fstab и настроили vm.swappiness. Отдельно разобрали, как менять размер swap без риска и как отличить нормальное использование от ситуации, когда сервер уже постоянно упирается в память.
Главное правило здесь простое: не смотреть только на цифру Swap used.
Если swap немного занят, но si и so почти всегда равны нулю, это само по себе не проблема. А вот постоянный обмен между RAM и swap, низкий available и тормоза уже говорят о том, что серверу, скорее всего, не хватает оперативной памяти.
То есть swap хорошо подходит как буфер и запас на пиковые ситуации. Но если он становится постоянной опорой для приложения, пора смотреть в сторону увеличения RAM или оптимизации нагрузки.
FAQ
Можно ли вообще работать без swap?
Да.
Если на VPS достаточно RAM и нагрузка стабильная, сервер может нормально работать без swap.
Но небольшой swap часто полезен как дополнительная страховка от кратковременных пиков и внезапного OOM.
Почему swap уже используется, хотя свободная RAM есть?
Это нормально.
Linux может оставить давно неиспользуемые страницы в swap и использовать освободившуюся RAM под более полезные задачи, например файловый кэш.
Сам по себе ненулевой Swap used не означает проблему.
Что лучше: swap-файл или отдельный swap-раздел?
Для обычного VPS swap-файл обычно удобнее.
Его проще:
- Создать;
- Увеличить;
- Уменьшить;
- Удалить;
- Перенести.
Отдельный раздел имеет смысл в более специфических сценариях, но для большинства виртуальных серверов файл полностью подходит.
Можно ли поставить vm.swappiness=0?
Можно, но это не отключает swap полностью.
Такое значение лишь делает ядро очень неохотным к его использованию.
Для обычного VPS часто выбирают что-то вроде 10–20, а затем смотрят на реальную нагрузку.
Нужно ли делать swap в два раза больше RAM?
Нет, это не универсальное правило.
Для современных VPS размер лучше выбирать по нагрузке.
Например, серверу с 2 ГБ RAM часто достаточно 1–2 ГБ swap, а машине с 16 ГБ RAM совершенно не обязательно создавать еще 32 ГБ.
Что будет, если выполнить swapoff, когда RAM почти закончилась?
Система попытается вернуть используемые страницы из swap обратно в оперативную память.
Если RAM не хватает, сервер может начать сильно тормозить, зависнуть или столкнуться с OOM.
Поэтому перед swapoff обязательно проверяйте free -h и оценивайте, хватает ли available RAM.
Можно ли хранить swap на SSD или NVMe?
Да, и на VPS это как раз обычный сценарий.
Но даже быстрый NVMe все равно заметно медленнее RAM, поэтому активный swapping не стоит считать нормальным режимом работы под постоянной нагрузкой.
Как понять, что swap действительно помогает?
Помимо визуальных эффектов - отсутствие падений, событий OOM, можно посмотреть на реальные метрики. Смотрите не только на общий объем занятого swap, но и на: vmstat 1
Если si и so обычно равны нулю, а swap иногда немного занят, это нормально.
Если значения регулярно растут, RAM почти всегда занята, а приложения тормозят, swap уже не столько помогает, сколько маскирует нехватку памяти.



