SWAP файл или файл подкачки в Linux


SWAP файл или файл подкачки в Linux системах нужен когда на сервере заканчивается оперативная память. Файл произвольного размера может выделяться в файловой системе на одном из подключенных к серверу дисков.

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



Определяем размер файла подкачки


Исходить всегда нужно из того какие приложения запускаются на сервере и из того сколько памяти они потребляют, до подключения SWAP и потенциально в будущем.

Когда спрогнозировать сложно — можно добавлять SWAP в объеме равном объему выделенной оперативной памяти или в два раза превосходящем этот объем.



Проверить сколько памяти выделено и каков объем SWAP сейчас можно выполнив free -m


free -m


определить размер swap файла


Системе доступен 1 Гб оперативной памяти, SWAP не подключен.

Создадим файл подкачки размером в два раза больше объема RAM сервера — 2 Гб.



Прежде всего убедимся в том, что в корне сервера есть 2 Гб для выделения под файл подкачки.


проверяем место под swap файл


На машине взятой для демонстрации в корне свободно 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.



Пример вывода:

SWAP файл


На скриншоте видно что после создания файла подкачки и его активации системе стало доступно 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 на отдельном диске.

Сказать спасибо