Ответ
Swap (подкачка) в Linux — это механизм виртуальной памяти, который использует специально выделенное пространство на диске (swap-раздел или файл) для расширения доступной оперативной памяти (RAM). Когда системе не хватает физической RAM, ядро перемещает («вытесняет») наименее используемые страницы памяти из RAM в swap, освобождая место для активных процессов.
Практическое значение для DevOps и администрирования серверов:
- Буфер против OOM Killer: Без swap система при исчерпании RAM принудительно завершит процесс через OOM Killer (Out-Of-Memory Killer), что может привести к падению критичного приложения. Swap даёт буфер для реакции (добавить RAM, масштабировать, найти утечку).
- Гибернация: Обязателен для сохранения состояния системы при гибернации.
- Производительность: Использование swap сильно замедляет работу, так как скорость диска (даже SSD) на порядки ниже RAM. Постоянная активность swap (swapping) — сигнал о нехватке памяти.
Рекомендации по настройке (для серверов):
- Для физических серверов/VPS: Рекомендуется иметь небольшой swap (1-4 GB) как страховку.
- Для контейнеризированных сред (Kubernetes): Часто swap отключают на нодах, так как его поведение плохо предсказуемо для планировщика Pod'ов и может маскировать реальные проблемы с лимитами памяти у контейнеров.
Создание и активация swap-файла (на примере Ubuntu):
# 1. Создаем файл размером 2GB
sudo fallocate -l 2G /swapfile
# 2. Устанавливаем правильные права (только root)
sudo chmod 600 /swapfile
# 3. Помечаем файл как пространство подкачки
sudo mkswap /swapfile
# 4. Активируем swap-файл
sudo swapon /swapfile
# 5. Делаем изменение постоянным, добавив запись в /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Проверяем
sudo swapon --show
free -h
Настройка «агрессивности»: Параметр vm.swappiness (от 0 до 100) определяет, насколько часто ядро будет сбрасывать страницы в swap. Для серверов часто устанавливают низкое значение (например, 10).