Как добавить Swap файл на Ubuntu и Debian
04 Jun 2026, 17:04:05
Ядро Linux управляет оперативной памятью сервера деля её на блоки фиксированного размера - страницы памяти. Swap файл (swap space, файл подкачки) - это пространство на диске, куда ядро копирует страницы памяти, чтобы освободить их в оперативной памяти. Swap может быть файлом или разделом на диске. В этой статье мы создадим swap файл, научимся его включать и выключать, настроим его автоматическое подключение при загрузке операционной системы, а также изменим некоторые параметры ядра для более оптимальной работы со swap. Мы будем работать на VPS от EuroHoster c ОС Debian 12 под пользователем root, но данная инструкция применима и к другим системам, таким как Ubuntu 22.04/24.04.Зачем нужен swap на сервере
В случаях, когда физической памяти на машине становится недостаточно, например из-за резко возросшей нагрузки, ядро пытается различными способами освободить память (с помощью очистки кэшей и т. д.). Если памяти всё равно не достаточно - запускает в работу механизм OOM Killer, который убивает один или несколько процессов, требовательных к ОЗУ. Один из самых простых способов этого избежать - добавить swap файл. В этом случае ядро будет помещать неактивные страницы памяти в область подкачки, тем самым освободив часть ОЗУ для актуальных процессов. Это хорошее решение для преодоления временной нагрузки, но не постоянной нехватки ОЗУ. Swap файл или раздел физически размещены не на быстрых чипах ОЗУ, а на обычном диске, который установлен в вашем сервере. Соответственно скорость работы с памятью в swap гораздо ниже и при работе с ней создаётся дополнительная дисковая нагрузка, что в общем сказывается плохо на работе системы и, в долгой перспективе, здоровье диска.Проверка наличия swap
На сервере, особенно если это выделенный сервер, при установке ОС уже мог быть создан swap раздел. Поэтому, прежде чем продолжать дальнейшие работы, есть смысл проверить наличие swap. При проверке использования ОЗУ вы могли обратить внимание, что информация о использовании swap там уже имеется:free -hЕсли во всех столбцах строки Swap, которая показывает объём, использование и свободное пространство файла подкачки, вы видите нули - значит swap на сервере не активен:
Также проверить наличие swap файла в системе можно непосредственно с помощью утилиты работающий с ним:
swapon --showЕсли в ответ вы получаете пустоту - файл подкачки не настроен:
Размер swap файла
Перед тем как создать swap необходимо определиться с его размером. Универсальная формула: 50% от объёма ОЗУ, давно устарела. На выделенном сервере даже с 64 Гб ОЗУ нет смысла в 32 Гб swap, не говоря уже о большем объёме памяти.Рекомендую примерно следовать этой таблице:
| RAM | SWAP |
| < 2 Gb | 2x RAM |
| 2 - 16 Gb | 2 - 4 Gb |
| > 16 Gb | 4 - 8 Gb |
Создание исходного файла
По умолчанию многие виртуальные сервера поставляются без swap раздела. Это обусловлено тем, что увеличить объём ОЗУ можно всего в пару кликов в любой момент времени, это гораздо эффективнее для работы вашего сервера. Однако при необходимости проще создать именно swap файл, а не раздел.Для примера создадим исходный файл размером 2 Гб с помощью команды:
fallocate -l 2G /swapfile- fallocate - утилита для выделения места для файла на файловой системе;
- -l - задаёт размер выделяемого пространства;
- /swapfile - путь до будущего swap файла.

На файловых системах ext4 и XFS обычно достаточно использовать fallocate. Для файловой системы Btrfs и более старых версий файловых систем необходимо воспользоваться утилитой dd:
dd if=/dev/zero of=/swapfile bs=1M count=2048- dd - низкоуровневая утилита для преобразования данных;
- if - источник данных (в примере /dev/zero - бесконечный поток нулей);
- of - файл для записи;
- bs - размер одного блока;
- count - количество блоков.
Права доступа к файлу swap
Swap файл содержит в себе фрагменты памяти работающих в системе процессов. Это значит, что в теории из него возможно достать конфиденциальные данные. Чтобы этого избежать необходимо установить правильные права на сам файл:chmod 600 /swapfile600 - права разрешающие читать и писать только владельцу, в нашем случае пользователю root:
Создание swap файла
На данный момент мы имеем простой пустой файл /swapfile. Чтобы его использовать в качестве swap необходимо подготовить его командой:mkswap /swapfileУтилита создаст структуру данных swap, присвоит UUID:
Включение swap
Всё готово, чтобы включить swap с помощью команды:swapon /swapfileЕсли всё прошло успешно, команда не выдаст никакой ошибки. С помощью этой же утилиты мы можем увидеть результат:
А также с помощью утилиты free:

Это значит, что ядро видит файл подкачки и может использовать его, но пока работать это будет только до первой перезагрузки.
Автоматическое подключение swap файла
Чтобы после перезагрузки swap автоматически появлялся в нашей системе, необходимо добавить информацию о нём в файл /etc/fstab.Для этого открываем его с помощью команды:
nano /etc/fstabВ конец файла добавляем строку:/swapfile none swap sw 0 0Сохраняем изменения в файле сочетанием клавиш Ctrl+O и выходим Ctrl+X.
Теперь система будет автоматически подключать swap файл при загрузке.
Тюнинг Swap
Для более эффективного использования файла подкачки обычно меняют два параметра ядра: swappiness и vfs_cache_pressure.swappiness определяет предпочтение ядра вытеснять анонимную память процессов в swap, вместо освобождения файлового кэша.
Для понимания нужно представить, что происходит при нехватке ОЗУ. Ядро ищет страницы памяти, которые можно освободить. Параметр swappiness отвечает за: файловый кэш (page cache) и анонимную память (anonymous memory). Первое - это содержимое файлов, которые недавно использовались. Их можно просто выгрузить из памяти или записать изменения на диск, ведь сами файлы существуют на диске. Второе - память процессов, не связанная с файлами (переменные, массивы и т. д.). Эти данные необходимо записать в swap файл. Параметр swappiness имеет значение от 0, когда нужно использовать swap в последнюю очередь, до 200 (до 100 на версии ядра Linux < 5.8), когда использование файла подкачки приоритетнее очистки файлового кэша. Значение по умолчанию - 60, баланс между swap и файловым кэшем. Для серверов обычно устанавливают значение параметра равное 10:
sysctl vm.swappiness=10vfs_cache_pressure отвечает за очистку VFS Cache (кэш файловой системы). Указывается в процентах и определяет на сколько быстро ядро будет очищать dentries и inodes кэш. Значение по умолчанию - 100, ядро будет искать баланс между VFS кэшем, файлом подкачки и файловым кэшем. Уменьшение значения позволит дольше хранить кэш файловой системы, по сравнению с кэшем страниц:sysctl vm.vfs_cache_pressure=50Для того чтобы сохранить изменения на постоянной основе, необходимо добавить эти параметры в конфигурационный файл sysctl. Последние версии ОС рекомендуют делать это в отдельных файлах в директории /etc/sysctl.d:echo 'vm.swappiness=10' | tee /etc/sysctl.d/99-swap.conf
echo 'vm.vfs_cache_pressure=50' | tee -a /etc/sysctl.d/99-swap.confПосле добавления ядро будет автоматически применять указанные параметры при запуске.Как очистить, отключить или удалить swap
Для отключения swap можно воспользоваться простой командой:swapoff -aОна отключит все найденные swap файлы и разделы:
После того как мы указали данные о swap файле в /etc/fstab, для включения файла подкачки можно воспользоваться упрощённой версией команды swapon:
swapon -aУтилита найдёт и запустит все доступные swap файлы и разделы:
При необходимости очистить swap его нужно перезапустить:
swapoff -a && swapon -aЕсли в системе имеется нехватка ОЗУ выполнение этой команды может занять продолжительное время.
Для удаления swap файла необходимо отключить его и удалить сам файл утилитой rm, а также удалить соответствующую запись в /etc/fstab , если ранее вы её добавили:
swapoff /swapfile && rm /swapfile
Заключение
Настройка swap занимает мало времени, но является одним из самых простых шагов для достижения большей стабильности работы сервера, а соответственно и вашего проекта.При выполнении настройки помните, что файл подкачки не заменяет собой ОЗУ и его постоянное использование в больших объёмах на самом деле замедляет работу программного обеспечения и сервера в целом. Его наличие в системе - это дополнительный резерв, который поможет перенести временные нагрузки и снизить вероятность срабатывания OOM Killer'а. В остальных случаях разумнее будет увеличить объём оперативной памяти, особенно если вы используете VPS, где это сделать очень легко и быстро. Например на наших VPS в Болгарии или Нидерландах это можно сделать на странице самой услуги за считанные минуты.