[Linux] Добавление SWAP в систему

Привет, %username%! Есть сервер на который при разворачивании не добавили SWAP раздел и это необходимо исправить. Все как всегда довольно просто.

SWAP - это пространство на диске, которое используется, когда объем физической оперативной памяти заполнен. Когда в системе Linux заканчивается RAM, неактивные страницы перемещаются из RAM в SWAP.

SWAP может принимать форму либо выделенного раздела подкачки, либо файла подкачки. В большинстве случаев при запуске Linux на виртуальной машине раздел подкачки отсутствует, поэтому наш единственный вариант-создать файл подкачки.

Описанное далее было протестировано на системах Linux с Ubuntu 18.04 и CentOS 7, но так же справделиво для любых других дистрибутивов Linux.

Добавляем swap-файл

Выполни следующие действия, чтобы добавить 1GB подкачки на сервер. Если хочешь добавить 2GB вместо 1GB, замените 1G на 2G.

  1. Создай файл, который будет использоваться как swap
sudo fallocate -l 1G /swapfile

Если fallocate не установлен или получено сообщение об ошибке вроде такого: fallocate failed: Operation not supported, то имеет смысл воспользоваться другой командой для создания swap-файла:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
  1. Задай корректные права на swap-файл Только пользователь root должен иметь права писать в swap-файл. Выполни следующее:
sudo chmod 600 /swapfile
  1. Создание области подкачки Используй утилиту mkswap для настройки файла в качестве области подкачки Linux:
sudo mkswap /swapfile
  1. Включение SWAP Для активации раздела подкачки выолни следующую команду:
sudo swapon /swapfile

Для автоматического подключения раздела подкачки после перезагрузки сервера необходимо включить его автоматическое монтирование в файле /etc/fstab:

/swapfile swap swap defaults 0 0
  1. Проверка статуса SWAP-файла Для проверки статуса раздела подкачки можно использовать следующие команды:
# Вот так
sudo swapon --show

NAME      TYPE  SIZE   USED PRIO
/swapfile file 1024M 507.4M   -1

# Или так
sudo free -h
         total   used   free   shared  buff/cache   available
Mem:      488M   158M    83M     2.3M        246M        217M
Swap:     1.0G   506M   517M

Как настроить значение vm.swappiness

vm.swappiness - это свойство ядра Linux, которое определяет, как скоро система начнет использовать SWAP-раздел. vm.swappiness может принимать значения от 0 до 100. Низкое значение заставит ядро более активно утилизировать оперативную память, в то время как боее высокое значение заставит ядро гораздо чаще обращаться к SWAP-разделу.

По умолчанию значение vm.swappiness равно 60 - это значит, что сброс данных в SWAP будет происходить при заполнении оперативной памяти свыше 40%, что в свою очередь может повлиять на производительность системы в целом и сервисов которые ею предоставляются. Посмотреть текущее значение можно следующим способом:

cat /proc/sys/vm/swappiness
# OUTPUT
60

Этого значения достаточно для большинства Linux-систем, но в production-среде вам может понадобиться понизить это значение. Делается это следующим образом. Прямо сейчас изменить значение на 10 без перезагрузки системы:

sudo sysctl vm.swappiness=10

Чтобы значение не менялось после перезагрузки системы, необходимо в добавить этот параметр в файл /etc/sysctl.conf:

cat /etc/sysctl.conf
# OUTPUT
vm.swappiness=10

Для отключения SWAP-раздела

Если вам необходимо отключить раздел подкачки в Linux, то вам необходимо выполнить следующие шаги:

  1. Деативировать swap:
sudo swapoff -v /swapfile
  1. Удалить точку автоматического монтирования в системе /swapfile swap swap defaults 0 0 из файла /etc/fstab
  2. Удалить собствено сам файлик:
sudo rm -f /swapfile

Finaly

Собственно всё =) Создание, политика изспользования и удаление файла SWAP делается довольно просто - думаю это видно из статьи.