Настройка файла подкачки на облачном сервере с операционной системой Linux для избежания нехватки оперативной памяти

Когда на сервере Linux заканчивается память, некоторые приложения, например MariaDB/MySQL, могут автоматически завершать свою работу. Чтобы избежать ситуации с нехваткой памяти (OOM), можно создать раздел или файл подкачки для увеличения доступной памяти. В данном руководстве мы разберем процесс создания файла подкачки на сервере Linux с ограниченными ресурсами.

Сначала позвольте представить несколько вводных данных.

Сектор для подкачки

При установке Linux на настольный компьютер или сервер одним из важных моментов является определение объема пространства подкачки. Эта область выполняет функцию виртуальной памяти. Linux разбивает оперативную память на страницы, и когда физическая оперативная память становится переполненной, система может переместить некоторые страницы в подкачку на жестком диске. Для вычисления общего объема виртуальной памяти в вашей системе достаточно сложить объем физической оперативной памяти и пространства подкачки.

В Linux область подкачки может представлять собой как раздел, так и файл подкачки, либо их сочетание. В операционной системе Windows аналогом является файл страниц, который располагается на диске C. Обычно при установке системы, такие установщики, как Ubuntu Ubiquity и CentOS Anaconda, стремятся выделить раздел подкачки.

Для проверки области подкачки в вашей системе Linux воспользуйтесь командой swapon —show. При необходимости используйте sudo.

swapon --show

Мы способны извлечь следующую информацию.

  • Сколько разделов или файлов подкачки имеется в нашей системе Linux?
  • габариты каждого насоса для подкачки
  • какой объём пространства подкачки занят
  • приоритет любого устройства для подкачки
Читайте также:  Как настроить репозиторий ATrpms Yum на CentOS/RHEL и Fedora

Приоритет определяет, какое устройство подкачки будет использоваться в первую очередь. Устройства с более высоким приоритетом задействуются до тех, что имеют более низкий.

Формирование файла подкачки

На облачном сервере с операционной системой Linux вы можете иметь только один раздел, предназначенный для корневой файловой системы. Это означает, что у вас нет возможности создать отдельный раздел и отформатировать его для использования в качестве файла подкачки. Однако можно создать файл подкачки непосредственно в корневой файловой системе.

В начале мы применяем команду fallocate для генерации файла. К примеру, создайте файл под названием swapfile размером 512M в корневой файловой системе.

файл подкачки

Обратите внимание, что для разделения колонок необходимо использовать клавишу Tab.

Swappiness

Swappiness — это настройка ядра Linux, отвечающая за частоту выгрузки неактивных процессов в файл подкачки на жестком диске.

Параметр swappiness варьируется от 0 до 100. Низкое значение указывает на то, что система Linux будет реже задействовать пространство подкачки, тогда как высокое значение приведет к более частому его использованию. Стандартное значение для Ubuntu установлено на 60, что подразумевает, что когда занято 40% физической оперативной памяти, ядро Linux начинает применять пространство подкачки.

Используйте данную команду для проверки актуального значения.

Читайте также:  Вышла версия 0.11 почтового клиента Geary — инструкции по установке на Linux

cat /proc/sys/vm/swappiness

Рекомендуется задать низкое значение для параметра swappiness, чтобы ядро Linux максимально использовало физическую оперативную память. Для этого необходимо изменить файл /etc/sysctl. d/99-sysctl.conf.

sudo nano /etc/sysctl. d/99-sysctl.conf

В самом конце этого документа вставьте следующую фразу.

vm. swappiness=5

Ядро Linux активирует использование пространства подкачки только при достижении 95% или более занятой физической оперативной памяти. Кроме того, вы можете установить значение 0, что позволит Linux использовать пространство подкачки лишь тогда, когда вся физическая память будет занята.

vm. swappiness=0

Сохраните файл и закройте его. После этого выполните следующую команду для применения изменений.

sudo sysctl - p

Имейте в виду, что утилита htop не предоставляет точных данных о доступной оперативной памяти в Linux. Она не учитывает совместно используемую память, а также буферы и кэш. Для получения точного значения свободной оперативной памяти на сервере Linux рекомендуется воспользоваться командой free — m.

Как деактивировать файл подкачки в системах Debian и Ubuntu

Подкачка может негативно сказаться на производительности вашего сервера и привести к более быстрому износу SSD, чем вы ожидаете. Для улучшения производительности рекомендуется увеличить объем физической оперативной памяти и отключить подкачку. Для этого необходимо установить пакет dphys-swapfile.

sudo apt install dphys-swapfile

После этого внесите изменения в файл конфигурации.

sudo nano /etc/dphys-swapfile

Определите следующую строку.

#CONF_SWAPFILE=/var/swap

Файл подкачки по умолчанию находится по пути /var/swap. Уберите символ # для разблокировки этой строки и измените путь на /swapfile.

Читайте также:  Полное руководство по использованию TrueCrypt для защиты данных

CONF_SWAPFILE=/swapfile

Затем введите следующую команду, которая перенесет все данные из файла подкачки обратно в физическую оперативную память и отключит файл подкачки.

sudo dphys-swapfile swapoff

Теперь у вас есть возможность удалить файл подкачки, чтобы освободить место на жестком диске.

sudo dphys-swapfile uninstall

Советуем отключить службу dphys-swapfile, чтобы она не генерировала файл подкачки при запуске системы.

sudo systemctl disable dphys-swapfile

Если у вас не получается применить приведенный выше способ для отключения подкачки, вы можете воспользоваться следующей командой, которая деактивирует все swap-устройства и файлы, указанные в /proc/swaps или /etc/fstab.

sudo swapoff - a

Команда swapoff переместит все данные из области подкачки обратно в оперативную память, после чего деактивирует саму область подкачки.

Автоматическое отключение файла подкачки.

Если у вашего сервера достаточно оперативной памяти, вы можете избежать использования подкачки какими-либо сервисами. Для этого можно настроить задание Cron, которое будет регулярно отключать пространство подкачки.

sudo crontab - e

В конец файла crontab добавьте следующую строку.

* * * * * /sbin/swapoff - a

Это будет отключать swap каждую минуту. Сохраните изменения и закройте файл.

Итоговый анализ

Надеюсь, данный учебник был полезен для освоения использования пространства подкачки на серверах Linux. Возможно, вам будет интересно ознакомиться с:

  • Анализ производительности стека LEMP с использованием Nginx Amplify на сервере под управлением Ubuntu.
  • Настройка Nginx Amplify на CentOS 8/RHEL 8 для отслеживания производительности LEMP.

Если этот пост оказался для вас полезным, не забудьте подписаться на нашу бесплатную рассылку, чтобы первыми получать новые учебники.