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

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

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

Время чтения: 9 мин Управление сервером
swapвиртуальная памятьswappinesslinuxпамятьпроизводительностьсервер
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Создание и настройка 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.

Часто задаваемые вопросы

Сколько swap-пространства нужно создать?

Общее правило: при RAM 2 ГБ или меньше — создайте swap в 2 раза больше RAM; при 2-8 ГБ RAM — swap равный RAM; при более 8 ГБ достаточно 4-8 ГБ swap. Если используете гибернацию, нужно не менее объёма RAM.

Использование swap высокое. Что делать?

Высокое использование swap — признак недостаточного RAM. Сначала определите, какие процессы потребляют больше всего памяти (с помощью 'top' или 'htop'). Остановите ненужные сервисы или рассмотрите увеличение RAM. Снижение swappiness до 10 также может помочь.

Вредно ли использовать swap на SSD?

SSD гораздо более долговечны, чем HDD, при операциях записи, но интенсивное использование swap может сократить срок службы SSD. Минимизируйте использование swap с помощью swappiness=10. На современных SSD это обычно не проблема.

Что лучше: swap-раздел или swap-файл?

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

Связанные статьи

Сетевой трафикВходящий GbpsИсходящий Gbps