[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
    
  2. Задай корректные права на swap-файл Только пользователь root должен иметь права писать в swap-файл. Выполни следующее:

    sudo chmod 600 /swapfile
    
  3. Создание области подкачки Используй утилиту mkswap для настройки файла в качестве области подкачки Linux:

    sudo mkswap /swapfile
    
  4. Включение SWAP Для активации раздела подкачки выолни следующую команду:

    sudo swapon /swapfile
    

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

    /swapfile swap swap defaults 0 0
    
  5. Проверка статуса 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 делается довольно просто - думаю это видно из статьи.


Обсудить статью в чате TG или в Slack