Что такое Swap в виртуальных машинах?

«Что такое Swap в виртуальных машинах?» — вопрос из категории Виртуализация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Swap (подкачка) — это механизм виртуальной памяти, при котором область на диске (файл или раздел) используется как расширение оперативной памяти (RAM). Когда физической памяти не хватает, ядро ОС перемещает наименее используемые (неактивные) страницы памяти из RAM в Swap, освобождая место для активных процессов. Это позволяет избежать аварийного завершения процессов из-за ошибки Out Of Memory (OOM).

Ключевые особенности в контексте виртуализации:

  • Производительность: Доступ к Swap на порядки медленнее, чем к RAM, так как это операции ввода-вывода с диском. Чрезмерное использование (swapping) приводит к "проблеме листания" (thrashing) и резкому падению производительности как гостевой, так и хостовой системы.
  • Конфигурация: В гостевой ОС Swap настраивается стандартными средствами (например, через swapon/swapoff, настройку в /etc/fstab или с помощью systemd-swap).
  • Влияние на гипервизор: Гипервизор (KVM, VMware, Hyper-V) не видит Swap внутри гостевой системы. Он управляет выделением физической памяти хоста виртуальной машине. Если гость активно использует свой Swap, это сигнал о нехватке выделенной ему RAM.

Практический пример создания Swap-файла в гостевой Linux-системе:

# 1. Создаем файл размером 2 ГБ
sudo fallocate -l 2G /swapfile

# 2. Устанавливаем правильные права (только root)
sudo chmod 600 /swapfile

# 3. Форматируем файл под область подкачки
sudo mkswap /swapfile

# 4. Активируем Swap
sudo swapon /swapfile

# 5. Делаем настройку постоянной, добавив запись в fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# Проверяем
sudo swapon --show
free -h

Рекомендация для DevOps: При проектировании виртуальных машин и контейнеров важно правильно рассчитывать объем RAM, чтобы минимизировать использование Swap. Его следует рассматривать как "предохранительный клапан", а не как замену оперативной памяти. Мониторинг использования Swap (например, через vmstat 1 или sar -S) — обязательная часть наблюдения за здоровьем системы.