[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%, что в свою очередь может повлиять на производительность системы в целом и сервисов которые ею предоставляются. Посмотреть текущее значение можно следующим способом:
```bash
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
  2. Удалить точку автоматического монтирования в системе /swapfile swap swap defaults 0 0 из файла /etc/fstab
  3. Удалить собствено сам файлик:
    sudo rm -f /swapfile

Finaly

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