
Как правило, по умолчанию многие провайдеры VDS/VPS устанавливают Linux на единственный раздел без раздела подкачки (swap). Конечно, это экономит дисковое пространство, однако такой подход оставляет сервер уязвимым перед внезапными скачками потребления памяти. В результате OOM-killer (Out Of Memory killer) может аварийно завершить критически важные процессы, такие как MariaDB, Valkey или воркеры httpd.
Содержание
В этой инструкции мы не просто «включим swap», а сделаем это с использованием современных методов и оптимизацией ядра для продления жизни SSD/NVMe накопителей.
Важно: Прежде всего, помните, что swap на VDS — это «страховочная сетка» от OOM-killer, а не замена оперативной памяти. Более того, активное использование дискового swap на SSD приводит к преждевременному износу ячеек памяти (TBW). Следовательно, наша главная цель — сделать его доступным на экстренный случай, но при этом максимально минимизировать его использование в штатном режиме.
Шаг 1. Проверка текущего состояния памяти
Прежде чем вносить какие-либо изменения, в первую очередь проверьте, не активирован ли swap уже и оцените текущее потребление памяти.
Для начала выполните команду:
free -h
Затем проверьте активные устройства подкачки:
swapon --show
Если команда swapon --show ничего не выводит, значит swap не настроен и мы можем смело переходить к его созданию.

(у меня не оказалось под рукой виртуалки с отсутствующим swap, поэтому такой скрин)
Шаг 2. Создание файла подкачки (современный метод)
Об устаревшей команде dd (устаревшей в данном контексте) лучше забыть, поскольку она медленно создает файл, создавая избыточную и ненужную нагрузку на диск. Вместо этого, в современных файловых системах (например, XFS в AlmaLinux 10 или ext4) настоятельно рекомендуется использовать утилиту fallocate, которая резервирует место практически мгновенно.
Теперь определимся с размером. Для серверов с 2–4 ГБ ОЗУ оптимально создать swap-файл размером 2–4 ГБ. В данном примере мы создадим файл ровно на 4 ГБ:
# Проверяем, не существует ли файл уже, чтобы избежать случайной перезаписи
if [ ! -f /swapfile ]; then
sudo fallocate -l 4G /swapfile
echo "Файл /swapfile успешно создан."
else
echo "Внимание: файл /swapfile уже существует!"
fi
Шаг 3. Настройка прав доступа и форматирование
Обратите внимание, что ядро Linux откажется использовать файл подкачки, если его права доступны для чтения всем пользователям. Это объясняется тем, что это критическая уязвимость безопасности, так как в swap могут попадать фрагменты паролей или приватных ключей.
Поэтому мы должны выставить корректные права, доступные исключительно для пользователя root:
sudo chmod 600 /swapfile
После этого проверяем результат:
ls -lh /swapfile
Ожидаемый вывод должен выглядеть следующим образом: -rw------- 1 root root 4.0G ... /swapfile
Далее мы можем безопасно отформатировать файл в формат подкачки:
sudo mkswap /swapfile
Ожидаемый вывод: Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
Шаг 4. Активация и добавление в автозагрузку (fstab)
Следующим шагом активируем swap-файл немедленно, причем без необходимости перезагружать сервер:
sudo swapon /swapfile
Вслед за этим проверяем, что система его успешно увидела:
swapon --show
Однако, чтобы swap подключался автоматически после каждой перезагрузки сервера, нам необходимо добавить соответствующую запись в /etc/fstab. Сделаем это максимально безопасно: сначала создадим резервную копию, а затем добавим нужную строку одной командой:
sudo cp /etc/fstab /etc/fstab.bak echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Предупреждение: Помните, что никогда не стоит редактировать /etc/fstab без создания резервной копии. Даже малейшая ошибка в этом файле может привести к полной невозможности загрузки системы.
Шаг 5. Оптимизация ядра: защита SSD и кэша БД (Критически важно!)
По умолчанию Linux стремится активно использовать swap, даже если в системе есть свободная оперативная память. Для современных VDS с SSD/NVMe и базами данных (такими как MariaDB или Valkey) это попросту губительно: в итоге полезный кэш вытесняется на относительно медленный диск, а драгоценный ресурс накопителя тратится абсолютно впустую.
Поэтому мы обязательно настроим два ключевых параметра через sysctl:
vm.swappiness(от 0 до 100). Определяет, насколько агрессивно ядро использует swap. Значение1или10указывает ядру использовать swap только для предотвращения OOM, максимально сохраняя данные в RAM.vm.vfs_cache_pressure(по умолчанию 100). Уменьшение до50заставляет ядро дольше хранить в памяти кэш файловых систем (inodes, dentries), что ускоряет работу веб-сервера и чтение файлов WordPress.
Сначала применим эти настройки временно (то есть, до ближайшей перезагрузки):
sudo sysctl vm.swappiness=10 sudo sysctl vm.vfs_cache_pressure=50
Затем, для сохранения этих настроек навсегда, мы добавим их непосредственно в /etc/sysctl.conf:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
Наконец, применяем изменения из файла:
sudo sysctl -p
Альтернатива для маломощных VDS: ZRAM
Если ваш VDS имеет всего 1–2 ГБ оперативной памяти, классический дисковый swap может оказаться слишком медленным. В таком случае, отличной современной альтернативой является технология ZRAM — создание сжатого блочного устройства прямо в оперативной памяти.
ZRAM сжимает данные (алгоритмом zstd или lz4), эффективно увеличивая доступный объем RAM в 1.5–2 раза без какой-либо записи на SSD. В AlmaLinux 10 это реализуется установкой пакета zram-generator. Это предпочтительный выбор для высоконагруженных баз данных на слабых серверах.
Частые ошибки и как их избежать
- Ошибка при
fallocateна некоторых старых ФС: Если вы получаете ошибку «Operation not supported», используйте классический (но медленный) метод:sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress. - Опечатки в
/etc/fstab: Всегда проверяйте файл командойsudo mount -aпосле редактирования. Если команда не вывела ошибок, синтаксис верен. - Игнорирование мониторинга: После настройки настройте мониторинг (например, через Prometheus + Node Exporter или простой скрипт в cron), чтобы знать, если swap начинает заполняться регулярно. Это сигнал к апгрейду тарифа VDS.
Краткий HowTo
Как включить и настроить swap на VDS с linux
Проверка памяти
Выполните команды free -h и swapon —show для проверки текущего состояния
Создание файла
Используйте команду fallocate -l 4G /swapfile для мгновенного создания файла подкачки
Настройка прав и форматирование
Установите права chmod 600 /swapfile и отформатируйте командой mkswap /swapfile
Активация и автозагрузка
Активируйте swap через swapon /swapfile и добавьте запись в /etc/fstab
Оптимизация ядра
Установите vm.swappiness=10 и vm.vfs_cache_pressure=50 в /etc/sysctl.conf для защиты SSD и кэша БД