- Home »

Как добавить swap пространство на Ubuntu 24
Настроил новый VPS, а через пару недель обнаружил, что сервер начал тормозить при пиковых нагрузках? Скорее всего, дело в нехватке RAM и отсутствии swap-пространства. Swap — это своего рода “подушка безопасности” для оперативной памяти, которая помогает системе не падать при превышении лимитов ОЗУ. В Ubuntu 24 по умолчанию swap может быть не настроен, особенно на минимальных серверных установках. Сегодня разберём, как правильно добавить swap на Ubuntu 24.04, чтобы твой сервер работал стабильно даже при неожиданных нагрузках.
Что такое swap и зачем он нужен
Swap — это область на диске, которая используется как дополнительная оперативная память. Когда физическая RAM заполняется, система начинает перемещать менее используемые данные в swap, освобождая место для активных процессов. Это работает медленнее, чем настоящая RAM, но предотвращает аварийное завершение процессов из-за нехватки памяти.
Особенно важно иметь swap на серверах с ограниченным количеством RAM — например, на VPS с 1-2 GB памяти. Без swap система может начать убивать процессы (OOM Killer в действии), что приведёт к неожиданному падению сервисов.
Проверяем текущее состояние swap
Перед настройкой давайте посмотрим, что у нас есть:
sudo swapon --show
free -h
cat /proc/meminfo | grep -i swap
Если swap не настроен, первая команда ничего не покажет, а в выводе `free -h` будет:
total used free shared buff/cache available
Mem: 1.9G 450M 1.2G 15M 310M 1.3G
Swap: 0B 0B 0B
Создаём swap-файл: пошаговое руководство
Самый простой и гибкий способ — создать swap-файл. Он не требует отдельного раздела и легко масштабируется.
Шаг 1: Создание файла
Создаём файл размером 2GB (можешь изменить размер под свои нужды):
sudo fallocate -l 2G /swapfile
Если `fallocate` недоступен, используй `dd`:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152
Шаг 2: Настройка прав доступа
Файл подкачки должен быть доступен только root:
sudo chmod 600 /swapfile
Шаг 3: Создание swap-пространства
sudo mkswap /swapfile
Шаг 4: Активация swap
sudo swapon /swapfile
Шаг 5: Проверка результата
sudo swapon --show
free -h
Теперь должен появиться активный swap:
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
Делаем swap постоянным
Чтобы swap автоматически подключался при загрузке, добавляем его в `/etc/fstab`:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Проверим, что запись добавилась:
tail -1 /etc/fstab
Настройка swappiness
Параметр `swappiness` определяет, как агрессивно система будет использовать swap. Значение от 0 до 100:
- 0 — swap используется только в крайних случаях
- 60 — значение по умолчанию в Ubuntu
- 100 — максимально агрессивное использование swap
Для серверов обычно рекомендуется значение 10-30:
# Проверяем текущее значение
cat /proc/sys/vm/swappiness
# Устанавливаем новое значение
sudo sysctl vm.swappiness=10
# Делаем изменение постоянным
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
Альтернативные способы создания swap
Использование раздела диска
Если у тебя есть свободный раздел (например, `/dev/sdb1`):
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1
echo '/dev/sdb1 none swap sw 0 0' | sudo tee -a /etc/fstab
Использование zram
Для VPS с SSD можно использовать zram — сжатый swap в памяти:
sudo apt install zram-tools
sudo nano /etc/default/zramswap
Добавляем:
PERCENT=25
PRIORITY=100
Активируем:
sudo service zramswap start
sudo systemctl enable zramswap
Сравнение методов создания swap
Метод | Преимущества | Недостатки | Рекомендации |
---|---|---|---|
Swap-файл | Гибкость, легко изменить размер | Чуть медленнее раздела | Идеально для VPS |
Swap-раздел | Максимальная производительность | Сложно изменить размер | Для выделенных серверов |
Zram | Сжатие, быстрый доступ | Использует RAM | Для серверов с SSD |
Мониторинг и управление swap
Полезные команды для мониторинга:
# Подробная информация о swap
sudo swapon -s
# Использование памяти в реальном времени
watch -n 1 free -h
# Процессы, использующие swap
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n | tail
# Отключение swap
sudo swapoff /swapfile
# Повторная активация
sudo swapon /swapfile
Оптимизация производительности
Дополнительные параметры ядра для оптимизации работы с swap:
# Уменьшаем давление на кеш страниц
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
# Настраиваем поведение при нехватке памяти
echo 'vm.overcommit_memory=1' | sudo tee -a /etc/sysctl.conf
# Применяем изменения
sudo sysctl -p
Автоматизация с помощью скриптов
Создаём скрипт для автоматической настройки swap:
#!/bin/bash
# create-swap.sh
SWAP_SIZE=${1:-2G}
SWAP_FILE="/swapfile"
SWAPPINESS=${2:-10}
echo "Creating ${SWAP_SIZE} swap file..."
# Создаём swap-файл
sudo fallocate -l ${SWAP_SIZE} ${SWAP_FILE}
sudo chmod 600 ${SWAP_FILE}
sudo mkswap ${SWAP_FILE}
sudo swapon ${SWAP_FILE}
# Добавляем в fstab если ещё не добавлено
if ! grep -q "${SWAP_FILE}" /etc/fstab; then
echo "${SWAP_FILE} none swap sw 0 0" | sudo tee -a /etc/fstab
fi
# Настраиваем swappiness
sudo sysctl vm.swappiness=${SWAPPINESS}
if ! grep -q "vm.swappiness" /etc/sysctl.conf; then
echo "vm.swappiness=${SWAPPINESS}" | sudo tee -a /etc/sysctl.conf
fi
echo "Swap configured successfully!"
sudo swapon --show
Использование:
chmod +x create-swap.sh
./create-swap.sh 4G 15
Рекомендации по размеру swap
Классические рекомендации для размера swap:
- RAM ≤ 2GB: swap = 2x RAM
- RAM 2-8GB: swap = RAM
- RAM > 8GB: swap = 4-8GB или 0.5x RAM
Для серверов приложений можно использовать меньшие значения, для серверов с гибернацией — больше.
Возможные проблемы и решения
Проблема: Ошибка “swapon: /swapfile: read swap header failed”
Решение: Пересоздай swap-файл с правильными правами доступа.
Проблема: Высокий iowait при использовании swap
Решение: Уменьши swappiness или увеличь RAM.
Проблема: Swap не активируется при загрузке
Решение: Проверь запись в `/etc/fstab` и права доступа к файлу.
Мониторинг swap в продакшене
Для мониторинга swap в боевых условиях используй:
# Простой мониторинг скрипт
#!/bin/bash
while true; do
SWAP_USED=$(free | grep Swap | awk '{print $3}')
if [ $SWAP_USED -gt 0 ]; then
echo "$(date): Swap usage detected: $SWAP_USED KB"
fi
sleep 60
done
Интеграция с системами мониторинга:
# Для Prometheus node_exporter
node_memory_SwapTotal_bytes
node_memory_SwapFree_bytes
Заключение
Swap — это важный компонент стабильной работы сервера, особенно на VPS с ограниченной памятью. Правильно настроенный swap поможет избежать неожиданных падений сервисов и даст время на реакцию при пиковых нагрузках.
Основные рекомендации:
- Для VPS используй swap-файл размером 1-2x RAM
- Устанавливай swappiness=10-30 для серверов
- Мониторь использование swap в продакшене
- Не забывай про оптимизацию других параметров ядра
Если планируешь развернуть новый сервер, обрати внимание на VPS хостинг с SSD дисками — это значительно улучшит производительность swap. Для более серьёзных проектов рассмотри выделенные серверы с большим объёмом RAM.
Помни: swap — это не замена оперативной памяти, а инструмент для повышения стабильности. Если swap активно используется, пора задуматься об увеличении RAM.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.