SWAP в Linux
Руководство по созданию и настройке SWAP раздела на Linux.
SWAP (своп) — механизм виртуальной памяти в Linux, который позволяет переносить неактивные данные из оперативной памяти (RAM) на диск (HDD или SSD), освобождая ОЗУ для текущих задач. Это спасает систему при нехватке памяти, но замедляет работу, так как диск в десятки тысяч раз медленнее оперативной памяти.
В Linux оперативная память делится на разделы, называемые страницами (pages). Swapping (подкачка) — это процесс копирования страниц памяти в специально выделенную область диска, называемую swap space. Это может быть как отдельный файл, так и раздел жёсткого диска. Совокупный объём физической памяти и раздела подкачки образует доступную виртуальную память.
Зачем нужен SWAP
SWAP выполняет две основные функции:
- Когда системе требуется больше памяти, чем доступно, ядро выгружает наименее используемые страницы в swap, освобождая место для текущих приложений или процессов.
- Многие страницы, задействованные приложениями при запуске, больше не используются. Система может выгрузить их в swap, разгружая ОЗУ.
Недостатки SWAP
Основной недостаток — скорость работы. Операции с оперативной памятью выполняются за наносекунды, тогда как с диском — за миллисекунды. Одни и те же действия на диске занимают в десятки тысяч раз больше времени. Следовательно, чем активнее используется swap, тем медленнее работает система.
Примечание
Когда приложения активно используют swap, это заметно замедляет работу. В таких случаях стоит увеличить объём оперативной памяти. Рассмотрите перенос проекта на VPS или выделенный сервер с более гибкими настройками ресурсов.
Типичные симптомы нехватки памяти
Чаще всего от нехватки памяти страдает база данных:
- Постоянное падение сайта с ошибкой соединения с базой данных (например, из-за сбоя MySQL).
- В логах
/var/log/mysql.logпоявляется сообщение InnoDB: Fatal error: cannot allocate memory for the buffer pool. - Медленный отклик сервера даже при низкой нагрузке CPU.
Даже на SSD операции swap проходят через дисковую подсистему, что увеличивает время отклика.
Если swap активно используется — лучше увеличить объём RAM или оптимизировать проект. Один из вариантов — перейти на более мощный VPS или выделенный сервер.
Проверка наличия swap
Проверьте наличие swap командой:
swapon -s
Пример вывода:
Filename Type Size Used Priority
/swapfile file 40956 40956 -1
Дополнительная информация:
free -m
Пример вывода:
total used free shared buff/cache available
Mem: 488 160 7 40 320 259
Swap: 39 39 0
Если swap настроен, он будет использоваться при необходимости.
Создание файла подкачки
Если swap отсутствует, создайте его вручную.
- Создайте файл размером 512 МБ:
dd if=/dev/zero of=/swap.file bs=1M count=512
Чтобы изменить размер, скорректируйте значение count.
- Установите права доступа, чтобы только root мог читать и писать файл:
chmod 600 /swap.file
- Отформатируйте файл под swap:
mkswap /swap.file
- Добавьте строку в
/etc/fstab, чтобы swap включался при загрузке:
/swap.file swap swap defaults 0 0
- Активируйте swap:
swapon /swap.file
- После перезагрузки проверьте наличие swap:
free -m
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!