Введение
На VPS с Ubuntu 24.04 важно иметь запас памяти, особенно если оперативки немного. В статье — простая инструкция по созданию и подключению swap-файла и обзор параметров, которые влияют на производительность.
Swap — один из базовых, но часто недооценённых инструментов настройки виртуального сервера. Он особенно важен для VPS с небольшим объёмом ресурсов: если оперативной памяти не хватает, а сервисы начинают «падать», то корректно настроенный swap может стать временным буфером и спасти систему. В этом материале разберёмся, что такое swap, как его настроить в Ubuntu 24.04, как избежать типичных ошибок и какие нюансы есть при работе на VPS.
Зачем нужен swap
Swap — это резервная память на диске, которую система использует, если не хватает оперативной памяти. Это не полноценная замена RAM, но своего рода страховка.
В Ubuntu (как и в других системах на базе Linux) swap может быть организован в двух вариантах:
- как отдельный раздел (обычно создаётся при установке системы, что на VPS встречается редко),
- и как swap-файл (наиболее универсальный способ, подходящий для облаков и VPS). Этот вариант мы и рассмотрим в статье.
Swap не увеличивает производительность, но позволяет избежать ошибки Out of Memory (OOM), когда система начинает убивать процессы из-за нехватки оперативки. Это особенно актуально для VPS с объёмом RAM менее 2 ГБ, где даже банальное обновление пакетов может «съесть» всё доступное пространство.
Проверка текущего состояния swap
Перед настройкой проверим, есть ли активный swap и в каком он виде:
swapon --show
Если команда ничего не выводит — swap не активен.
Для уверенности проверим незанятую память:
free -h
В столбце Swap можно увидеть объём доступного и использованного пространства.
Дополнительно проверим, не настроен ли он в /etc/fstab:
cat /etc/fstab | grep swap
Если в результатах поиска пусто — swap не прописан для автозапуска.
Создание и активация swap-файла
Размер файла выбирается исходя из объёма RAM и характера нагрузки. Общие рекомендации такие:
- RAM < 1 ГБ: swap = 1–2 ГБ,
- RAM 2–4 ГБ: swap = RAM,
- RAM > 4 ГБ: можно не использовать или ограничиться 1–2 ГБ.
Для примера создадим swap-файл в 2 ГБ:
sudo fallocate -l 2G /swapfile
Если fallocate не создаёт файл корректно (что бывает на VPS из-за ограниченной функциональности файловой системы), сделайте это с помощью dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
Назначим права на файл (по умолчанию он должен быть доступен только с root):
sudo chmod 600 /swapfile
Указываем созданный файл как swap:
sudo mkswap /swapfile
Теперь swap создан, но не активен. Включим его:
sudo swapon /swapfile
Ещё раз проверим состояние swap и свободное пространство:
swapon --show
free -h
Добавление swap в автозагрузку
Чтобы swap активировался при перезагрузке, добавим запись в /etc/fstab; откроем его в редакторе:
sudo nano /etc/fstab
И скопируем в конец файла:
/swapfile none swap defaults 0 0
Сохраняем и проверяем:
sudo mount -a
Если вывод не содержит ошибок — всё в порядке. Повторный перезапуск покажет, что swap работает автоматически.
Дополнительная настройка: swappiness и cache pressure
После создания и активации swap-файла в Ubuntu 24.04 важно правильно настроить параметры его использования. Два ключевых параметра управления swap — это vm.swappiness и vm.vfs_cache_pressure.
vm.swappiness определяет, как активно система будет пользоваться swap — то есть когда данные начнут перемещаться из RAM на диск. Значение может быть от 0 до 100:
- 0 — минимально использовать swap, только в крайнем случае.
- 100 — swap будет активно использоваться, даже при наличии свободной RAM.
Рекомендуемое значение для VPS — 10–20. На виртуальных серверах система накопителей обычно работает медленнее, чем у физического железа, поэтому излишнее использование swap снижает производительность. Значения около 10 позволяют системе вначале максимально использовать RAM, и только потом — swap.
Проверка текущего значения:
cat /proc/sys/vm/swappiness
Временное изменение:
sudo sysctl vm.swappiness=10
Чтобы внести изменение, которое сохранится после перезагрузки, откройте sysctl.conf:
sudo nano /etc/sysctl.conf
Измените значение в строке (если она есть) или добавьте:
vm.swappiness=10
Примените изменения:
sudo sysctl -p
vm.vfs_cache_pressure отвечает за частоту очистки кеша inode и dentry (структур данных, ускоряющих доступ к файловой системе) — то есть насколько быстро система будет избавляться от кешированных метаданных файлов. По умолчанию установлено среднее значение 100. При значениях больше 100 кеш очищается чаще, система будет быстрее отдавать память другим процессам. Меньше 100 — кеш сохраняется дольше, ускоряя работу с файлами, но потребляя RAM.
На небольших VPS рекомендуемое значение 50–100. Если на сервере часто читаются мелкие файлы, полезно оставить больше кеша (например, 50). Если памяти не хватает — можно оставить 100.
Проверка:
cat /proc/sys/vm/vfs_cache_pressure
Временное изменение:
sudo sysctl vm.vfs_cache_pressure=50
Постоянное изменение — аналогично swappiness:
sudo nano /etc/sysctl.conf
Добавляем:
vm.vfs_cache_pressure=50
И применяем:
sudo sysctl -p
Эти настройки не универсальны — если ваш сервер работает под постоянной нагрузкой, мониторьте его состояние (с помощью htop, vmstat, free -m, dstat) и регулируйте параметры по фактическому поведению системы.
Проверка работоспособности и мониторинг
Чтобы убедиться, что swap реально работает, можно использовать top, htop или free -h.
Если во время нагрузки free -h показывает рост в колонке used в разделе swap — он используется.
Для подробного мониторинга:
vmstat 1 5
Поля si (swap in) и so (swap out) показывают операции со swap'ом. Если значения стабильны и не завышены — всё работает штатно.
Удаление swap-файла
Если вы решили не пользоваться swap или меняете настройки, его можно отключить:
sudo swapoff /swapfile
sudo rm /swapfile
После этого удалите строку из /etc/fstab — это нужно, чтобы полностью удалить swap из системы.
Возможные проблемы и решения
Недостаточно места на диске — swap-файл создаётся в корне, и если там мало места, создание может завершиться ошибкой. В этом случае уменьшите размер или переместить файл в другой раздел (например, /mnt/swapfile).
Ошибка Operation not permitted при mkswap — используйте dd вместо fallocate.
Swap активно используется даже при наличии свободной RAM — снизьте swappiness до 10–20.
Swap не активируется после перезагрузки — проверьте fstab, возможно, ошибка в пути или правах.
Заключение
Настройка swap в Ubuntu 24.04 не изменилась по сравнению с предыдущими версиями — это по-прежнему простая, но важная задача, особенно на VPS с ограниченными ресурсами. Даже если вы предполагаете, что система не будет активно использовать swap, лучше иметь его в резерве — это повышает стабильность, а иногда и спасает от непредсказуемых сбоев.
Читайте в блоге:
- Как установить и настроить веб-сервер Nginx на Ubuntu
- Установка и настройка phpMyAdmin на Ubuntu
- Как установить и настроить PostgreSQL в Ubuntu 22.04