Перейти к основному содержимому
Вернуться в категорию

Создание и настройка swap-пространства: полное руководство

Что такое swap в Linux, как создать swap-файл, настроить swappiness, мониторинг использования swap и оптимизация производительности памяти сервера.

Время чтения: 9 мин Управление сервером
swapвиртуальная памятьswappinesslinuxпамятьпроизводительностьсервер

Содержание

Создание и настройка swap-пространства: полное руководство

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

Swap не заменяет RAM; он служит лишь аварийным буфером. Постоянно высокое использование swap — признак недостаточного объёма RAM.

Что такое swap и когда он нужен?

Swap-пространство можно создать двумя способами:

МетодПреимуществоНедостаток
Swap-разделНемного быстрееФиксированный размер
Swap-файлГибкий, изменяемый размерНемного медленнее

Swap-файлы предпочтительны на современных системах, так как их размер можно изменять динамически.

Когда нужен swap?

  • RAM 2 ГБ или меньше
  • Запуск приложений с высоким потреблением памяти
  • Использование режима гибернации
  • Как буфер безопасности против неожиданных пиков потребления памяти

Проверка текущего состояния swap

hljs bash
# Показать использование swap
swapon --show

# Сводка по памяти и swap
free -h

# Подробная информация о памяти
cat /proc/meminfo | grep -i swap

# Список swap-областей
cat /proc/swaps

Создание swap-файла

Шаг 1: Создать swap-файл

hljs bash
# Создать swap-файл 2 ГБ (метод dd)
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# Или с fallocate (быстрее)
sudo fallocate -l 2G /swapfile

# Проверить размер файла
ls -lh /swapfile

Шаг 2: Установить права доступа

hljs bash
# Только root может читать/писать
sudo chmod 600 /swapfile

# Проверить права
ls -la /swapfile
# Вывод: -rw------- 1 root root 2.0G ...

Шаг 3: Форматировать как swap

hljs bash
# Пометить как swap-пространство
sudo mkswap /swapfile

Шаг 4: Включить swap

hljs bash
# Активировать swap
sudo swapon /swapfile

# Проверить
swapon --show
free -h

Шаг 5: Сделать постоянным

Добавьте в /etc/fstab, чтобы swap активировался автоматически при перезагрузке:

hljs bash
# Добавить в /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# Проверить
cat /etc/fstab | grep swap

Изменение размера swap

Чтобы увеличить существующий swap-файл:

hljs bash
# Отключить swap
sudo swapoff /swapfile

# Создать новый файл большего размера (4 ГБ)
sudo fallocate -l 4G /swapfile

# Переформатировать
sudo mkswap /swapfile

# Снова включить
sudo swapon /swapfile

# Проверить
free -h

Настройка swappiness

Swappiness — значение от 0 до 100, определяющее агрессивность использования swap ядром:

ЗначениеПоведение
0Использовать swap как можно меньше
10Рекомендуется для серверов
60Значение по умолчанию Linux
100Агрессивное использование swap
hljs bash
# Показать текущее значение swappiness
cat /proc/sys/vm/swappiness

# Изменить временно (сбрасывается при перезагрузке)
sudo sysctl vm.swappiness=10

# Изменить постоянно
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

# Применить изменения
sudo sysctl -p

swappiness=10 рекомендуется для серверов. Это минимизирует использование swap до исчерпания RAM и снижает дисковый I/O.

Мониторинг использования swap

hljs bash
# Текущее состояние памяти и swap
free -h

# Непрерывный мониторинг (каждые 2 секунды)
watch -n 2 free -h

# Какие процессы используют swap?
for file in /proc/*/status; do
  awk '/VmSwap|Name/{printf $2 " " $3 "\n"}' $file
done | sort -k 2 -n -r | head -10

# Мониторинг с vmstat
vmstat 2 5

Отключение swap

hljs bash
# Временно отключить
sudo swapoff /swapfile

# Удалить навсегда
sudo swapoff /swapfile
sudo rm /swapfile
# Также удалите строку swap из /etc/fstab

Перед отключением swap убедитесь, что достаточно свободной RAM. Иначе система может столкнуться с ошибкой OOM (Out of Memory).

Заключение

Swap-пространство важно для стабильности системы, особенно на серверах с ограниченным объёмом RAM. Создание swap-файла, оптимизация значения swappiness и регулярный мониторинг использования swap улучшат управление памятью вашего сервера. Однако swap — не постоянное решение проблемы нехватки RAM; при постоянно высоком использовании swap рассмотрите увеличение объёма RAM.