Как добавить 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 на сервере не активен:
20260604_8nny99wL
Также проверить наличие swap файла в системе можно непосредственно с помощью утилиты работающий с ним:
swapon --showЕсли в ответ вы получаете пустоту - файл подкачки не настроен:
20260604_fbs0vVaH

Размер swap файла

Перед тем как создать swap необходимо определиться с его размером. Универсальная формула: 50% от объёма ОЗУ, давно устарела. На выделенном сервере даже с 64 Гб ОЗУ нет смысла в 32 Гб swap, не говоря уже о большем объёме памяти.
Рекомендую примерно следовать этой таблице:

RAMSWAP
< 2 Gb2x RAM
2 - 16 Gb2 - 4 Gb
> 16 Gb4 - 8 Gb
Для большинства VPS оптимальный объём swap файла это 2-4 Гб. Важно помнить swap != ОЗУ. Увеличение размера swap файла не даст вашему серверу работать быстрее. Задача swap - повышение стабильности работы системы в условиях недостатка ОЗУ.

Создание исходного файла

По умолчанию многие виртуальные сервера поставляются без swap раздела. Это обусловлено тем, что увеличить объём ОЗУ можно всего в пару кликов в любой момент времени, это гораздо эффективнее для работы вашего сервера. Однако при необходимости проще создать именно swap файл, а не раздел.
Для примера создадим исходный файл размером 2 Гб с помощью команды:
fallocate -l 2G /swapfile
  • fallocate - утилита для выделения места для файла на файловой системе;
  • -l - задаёт размер выделяемого пространства;
  • /swapfile - путь до будущего swap файла.
За несколько секунд был создан файл /swapfile в корне файловой системы размером ровно 2 Гб:
20260604_ATpvZmGB
На файловых системах ext4 и XFS обычно достаточно использовать fallocate. Для файловой системы Btrfs и более старых версий файловых систем необходимо воспользоваться утилитой dd:
dd if=/dev/zero of=/swapfile bs=1M count=2048
  • dd - низкоуровневая утилита для преобразования данных;
  • if - источник данных (в примере /dev/zero - бесконечный поток нулей);
  • of - файл для записи;
  • bs - размер одного блока;
  • count - количество блоков.
Основное отличие в том, что dd фактически создал файл, в который записал множество нулей, из-за чего это заняло больше времени. fallocate же зарезервировал в файловой системе пространство, не заполняя его.

Права доступа к файлу swap

Swap файл содержит в себе фрагменты памяти работающих в системе процессов. Это значит, что в теории из него возможно достать конфиденциальные данные. Чтобы этого избежать необходимо установить правильные права на сам файл:
chmod 600 /swapfile600 - права разрешающие читать и писать только владельцу, в нашем случае пользователю root:
20260604_ClECj0jR

Создание swap файла

На данный момент мы имеем простой пустой файл /swapfile. Чтобы его использовать в качестве swap необходимо подготовить его командой:
mkswap /swapfileУтилита создаст структуру данных swap, присвоит UUID:
20260604_ykGKg1SE

Включение swap

Всё готово, чтобы включить swap с помощью команды:
swapon /swapfileЕсли всё прошло успешно, команда не выдаст никакой ошибки. С помощью этой же утилиты мы можем увидеть результат:
20260604_UKxa4Eq5
А также с помощью утилиты free:
20260604_LcizMiJ6
Это значит, что ядро видит файл подкачки и может использовать его, но пока работать это будет только до первой перезагрузки.

Автоматическое подключение swap файла

Чтобы после перезагрузки swap автоматически появлялся в нашей системе, необходимо добавить информацию о нём в файл /etc/fstab.
Для этого открываем его с помощью команды:
nano /etc/fstabВ конец файла добавляем строку:
/swapfile       none    swap    sw      0       0Сохраняем изменения в файле сочетанием клавиш Ctrl+O и выходим Ctrl+X.
20260604_A7jWjvXv
Теперь система будет автоматически подключать 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 файлы и разделы:
20260604_YyiKUDEd
После того как мы указали данные о swap файле в /etc/fstab, для включения файла подкачки можно воспользоваться упрощённой версией команды swapon:
swapon -aУтилита найдёт и запустит все доступные swap файлы и разделы:
20260604_EkCplAGJ
При необходимости очистить swap его нужно перезапустить:
swapoff -a && swapon -aЕсли в системе имеется нехватка ОЗУ выполнение этой команды может занять продолжительное время.
20260604_GXe24juu
Для удаления swap файла необходимо отключить его и удалить сам файл утилитой rm, а также удалить соответствующую запись в /etc/fstab , если ранее вы её добавили:
swapoff /swapfile && rm /swapfile20260604_k2Ja4nlZ

Заключение

Настройка swap занимает мало времени, но является одним из самых простых шагов для достижения большей стабильности работы сервера, а соответственно и вашего проекта.
При выполнении настройки помните, что файл подкачки не заменяет собой ОЗУ и его постоянное использование в больших объёмах на самом деле замедляет работу программного обеспечения и сервера в целом. Его наличие в системе - это дополнительный резерв, который поможет перенести временные нагрузки и снизить вероятность срабатывания OOM Killer'а. В остальных случаях разумнее будет увеличить объём оперативной памяти, особенно если вы используете VPS, где это сделать очень легко и быстро. Например на наших VPS в Болгарии или Нидерландах это можно сделать на странице самой услуги за считанные минуты.