Добавить swap на CentOS 7/8

Swap (своп) – один из самых простых способов повысить производительность сервера и предотвратить ошибки приложения «out of memory». Своп – это область на диске, в которой операционная система может временно хранить данные, которые больше не могут находиться в памяти. Использование swap увеличивает количество информации, которое может храниться на сервере, но при этом нужно учитывать, что обработка информации в swap'е намного медленнее, чем в оперативной памяти.

Проверка наличия swap

Для начала нужно проверить сервер на наличие активированного своп-пространства. Узнать, есть ли активное swap-пространство в текущей системе, можно при помощи утилиты swapon, запущенной с флагом -s.

swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       2097148 0       -2

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

Доступное место на диске

Т.к. в качестве swap-пространства используется специально выделенная область диска, а изменить схему разбиения диска не всегда возможно, то swap-файл можно создать в уже существующем разделе. Прежде чем приступить к созданию такого файла, нужно получить информацию о свободном месте на диске. Для этого используется утилита df, с флагом -h

df -h
Файловая система        Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                  875M            0  875M            0% /dev
tmpfs                     887M            0  887M            0% /dev/shm
tmpfs                     887M         8,6M  878M            1% /run
tmpfs                     887M            0  887M            0% /sys/fs/cgroup
/dev/mapper/centos-root    50G         3,2G   47G            7% /
/dev/sda2                1014M         184M  831M           19% /boot
/dev/sda1                 200M          12M  189M            6% /boot/efi
/dev/mapper/centos-home    74G          42M   74G            1% /home
tmpfs                     178M            0  178M            0% /run/user/1000
tmpfs                     178M            0  178M            0% /run/user/1001
tmpfs                     178M            0  178M            0% /run/user/0

Как видно, в корневом разделе (смонтировано в "/") доступно 47ГБ. Этого вполне достаточно, чтобы разместить там swap-файл.

Оптимальный размер SWAP

Существует множество мнений о «правильном» размере своп-пространства. В целом, это зависит от требований системы и личных предпочтений пользователя. Как правило, swap-пространство должно быть равно или вдвое больше объема оперативной памяти системы. В этом вопросе нужно ориентироваться на свободное дисковое пространство и здравый смысл. Узнать объём установленной на сервере оперативной памяти можно через утилиту free, с флагом -h (там же есть информация о доступных swap-разделах)

free -h
              total        used        free      shared  buff/cache   available
Mem:           5,5G        1,6G        3,6G         21M        268M        3,8G
Swap:          2,0G          0B        2,0G

Например, если RAM системы – 4 Гб, то swap-пространство должно занимать 8 Гб. Но 4 гб, для web-сервера средней руки - достаточно неплохой объём и добавлять к нему ещё 8 Гб не имеет смысла. Мы добавим 2 Гб - этого будет вполне достаточно!

Создание своп-файла

Поскольку swap хранит временные файлы, то разумно создать его в папке /tmp и назвать swapfile

fallocate -l 2G /tmp/swapfile 

После выполнения вышеприведеннной команды, нужно удостовериться в том, что файл создан

ls -lh /tmp/swapfile
-rw-r--r-- 1 root root 2,0G фев 19 01:09 /tmp/swapfile

Активация SWAP-раздела

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

chmod 600 /tmp/swapfile

Затем, сконвертировать файл в файловую систему swap

mkswap /tmp/swapfile

Теперь можо примонтировать файл к системе

swapon /tmp/swapfile

Для того, чтобы не приходилось, после перезагрузки сервера, подключать swap повторно, его нужно внести в файл fstab. Для этого нужно отредактировать файл через любой текстовый редактор (я предпочитаю nano)

nano /etc/fstab

И в конце файла дбавить строку, с параметрами монтирования

/tmp/swapfile   swap    swap    sw  0   0