Как создать и настроить swap-файл на VPS
Запустить на сервере одной командой (сначала проверьте содержимое скрипта ниже):
curl -sSL https://cp.lv/scripts/nastrojka-swap-vps.sh | sudo bash…или через wget:
wget -qO- https://cp.lv/scripts/nastrojka-swap-vps.sh | sudo bashСодержимое скрипта nastrojka-swap-vps.sh:
#!/usr/bin/env bash
# Создание swap-файла 2 ГБ + автозагрузка через fstab + swappiness
set -euo pipefail
SWAPFILE=/swapfile
SWAPSIZE=2G
# 1. Создать файл (fallocate, при отказе — dd)
if ! sudo fallocate -l "$SWAPSIZE" "$SWAPFILE"; then
sudo dd if=/dev/zero of="$SWAPFILE" bs=1M count=2048
fi
sudo chmod 600 "$SWAPFILE"
# 2. Разметить как swap и включить
sudo mkswap "$SWAPFILE"
sudo swapon "$SWAPFILE"
# 3. Автозагрузка через fstab (только если ещё не прописан)
if ! grep -q "^${SWAPFILE} " /etc/fstab; then
echo "${SWAPFILE} none swap sw 0 0" | sudo tee -a /etc/fstab
fi
# 4. swappiness=10 — сразу и на будущее (heredoc в файл sysctl.d)
sudo sysctl vm.swappiness=10
sudo tee /etc/sysctl.d/99-swappiness.conf > /dev/null << 'EOF'
vm.swappiness=10
EOF
sudo swapon --show
free -h
echo "Готово: swap-файл 2 ГБ активен, swappiness=10."
Swap — это файл или раздел на диске, который система использует как «запасную» память, когда заканчивается оперативная. На VPS проще всего создать swap-файл: команды fallocate, mkswap и swapon займут пару минут. Разберём процесс и настройку.
Зачем нужен swap
Swap не заменяет оперативную память (он в разы медленнее), но защищает от аварийного завершения процессов при пиковой нагрузке. Ядро выгружает в swap редко используемые страницы памяти, освобождая RAM для активных задач. Особенно полезно на тарифах с небольшим объёмом памяти.
Шаг 1. Проверьте текущий swap
sudo swapon --show
free -h
Если вывод swapon пустой — swap ещё не настроен.
Шаг 2. Создайте swap-файл
Создайте файл нужного размера. Например, 2 ГБ:
sudo fallocate -l 2G /swapfile
Если fallocate недоступен, используйте dd:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
Ограничьте права, чтобы файл читался только root:
sudo chmod 600 /swapfile
Шаг 3. Отформатируйте и включите
Разметьте файл как swap и активируйте:
sudo mkswap /swapfile
sudo swapon /swapfile
Проверьте, что swap появился:
sudo swapon --show
free -h
Шаг 4. Включите автозагрузку
Пока swap работает только до перезагрузки. Чтобы он подключался автоматически, добавьте запись в /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Проверьте, что строка добавилась корректно:
grep swapfile /etc/fstab
Шаг 5. Настройте swappiness
Параметр vm.swappiness (0–100) определяет, насколько охотно ядро использует swap. На сервере обычно снижают его до 10, чтобы swap задействовался только при реальной нехватке RAM:
sudo sysctl vm.swappiness=10
Чтобы значение сохранялось после перезагрузки:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
Сколько swap создавать
| Оперативная память | Рекомендуемый swap |
|---|---|
| до 2 ГБ | равный объёму RAM |
| 2–8 ГБ | равный объёму RAM |
| более 8 ГБ | 2–4 ГБ достаточно |
Это ориентир, а не жёсткое правило: для базы данных swap лучше держать небольшим, чтобы избежать деградации производительности.
Как удалить swap
Если swap больше не нужен:
sudo swapoff /swapfile
sudo rm /swapfile
Затем удалите соответствующую строку из /etc/fstab.
Частые вопросы
Замедлит ли swap работу сервера? Swap на диске в десятки раз медленнее RAM. Пока данные в swap используются редко — влияния почти нет. Постоянная активная работа со swap означает нехватку памяти — стоит добавить RAM.
Swap-файл или swap-раздел? На VPS удобнее файл: его легко создать, изменить размер и удалить без переразметки диска. Раздел нужен редко.
Какой swappiness выбрать для сервера? Обычно 10 — swap подключается только при реальной нехватке памяти. Значение 60 (по умолчанию) слишком агрессивно для серверов с базами данных.
Можно ли создать swap на VPS с SSD? Да. На NVMe/SSD swap работает быстрее, чем на HDD, но всё равно медленнее RAM. Постоянного интенсивного использования лучше избегать, чтобы не изнашивать диск.
Итог
Swap-файл — простая страховка от нехватки памяти под нагрузкой. Создайте его через fallocate, включите swapon, пропишите в fstab и настройте swappiness=10. Если swap используется постоянно — это сигнал перейти на тариф с большим объёмом RAM.
Нужно больше памяти? Подберите тариф в разделе VPS на Linux, оформите аренду VPS или закажите Администрирование серверов.
