SWAP файл или файл подкачки в Linux системах нужен когда на сервере заканчивается оперативная память. Файл произвольного размера может выделяться в файловой системе на одном из подключенных к серверу дисков.
Для SWAP файла не нужен отдельный диск, что выгодно отличает этот способ борьбы с нехваткой RAM от SWAP раздела.
Определяем размер файла подкачки
Исходить всегда нужно из того какие приложения запускаются на сервере и из того сколько памяти они потребляют, до подключения SWAP и потенциально в будущем.
Когда спрогнозировать сложно — можно добавлять SWAP в объеме равном объему выделенной оперативной памяти или в два раза превосходящем этот объем.
Проверить сколько памяти выделено и каков объем SWAP сейчас можно выполнив free -m
free -m
Системе доступен 1 Гб оперативной памяти, SWAP не подключен.
Создадим файл подкачки размером в два раза больше объема RAM сервера — 2 Гб.
Прежде всего убедимся в том, что в корне сервера есть 2 Гб для выделения под файл подкачки.
На машине взятой для демонстрации в корне свободно 13 ГБ, 2 Гб выделить можем.
Создаём файл подкачки или SWAP файл
Утилита dd позволяет создать файл определенного размера указывая в качестве источника /dev/zero.
Передаваемые аргументы:
if (input file) — источник
of (output file) — получаемый на выходе файл
bs (block size) — размер блока
count — количествоблоков
dd if=/dev/zero of=/swap bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 2.46001 s, 873 MB/s
В файл с именем swap в корне сервера записано 2048 Мб или 2 Гб данных.
Далее, делаем из простого файла файл подкачки командой mkswap. Той же командой выставляем права доступа и владельца, активируем SWAP файл.
Каждое из действий связывается с предыдущим через &&
mkswap /swap && chown root /swap && chmod 0600 /swap && swapon /swap
Устанавливается нужные владелец и права доступа, затем SWAP активируется командой swapon.
Пример вывода:
На скриншоте видно что после создания файла подкачки и его активации системе стало доступно 2 Гб SWAP.
Автоматическое подключение SWAP файла после перезагрузки
В /etc/fstab нужно добавить строку за счет которой раздел будет монтироваться при следующих стартах системы
echo '/swap swap swap defaults 0 0' >> /etc/fstab
После правки /etc/fstab желательно перезагрузить сервер и убедиться в том что вывод free -m после перезагрузки говорит о том, что SWAP файл виден системе.
Параметр swappiness
Последний шаг — опциональный, корректировка значения параметра swappiness.
Он говорит о том в какой момент системе начинать использовать SWAP файл. О выборе значения и том как его установить читайте в материале по ссылке.
Как отключить SWAP файл
Иногда возникает необходимость отключить файл подкачки. Например, чтобы подключить новый большего размера.
Сделать это можно так:
- остановить сервисы, потребляющие память (такие как сервер баз данных)
- выполнить swapoff -a, данные из SWAP начнут плавно вытесняться в оперативную память. Процесс можно контролировать через free -m
- когда используемого системой SWAP не останется можно выполнить swapoff /swap
- потом можно удалять файл /swap и убирать строку с путём к нему из /etc/fstab
Также читайте о том, как создать SWAP на отдельном диске.