Home » Как добавить swap пространство на Ubuntu 24
Как добавить swap пространство на Ubuntu 24

Как добавить 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.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked