Размер для SWAP

Ниже приведены рекомендации по размерам для SWAP в зависимости от ситуации.

ОЗУ SWAP SWAP (если гибернация)
2ГБ или меньше ОЗУ * 2 ОЗУ * 3
от 2ГБ до 8ГБ ОЗУ ОЗУ * 2
от 8ГБ до 64ГБ меньше 4ГБ 1.5 от объёма ОЗУ
больше 64ГБ меньше 4ГБ не рекомендуется использовать гибернацию


Во время гибернации перед тем как заснуть ваш компьютер перемещает данные с ОЗУ в SWAP. Ну а когда вы его включаете после гибернации то наоборот со SWAP в ОЗУ. Поэтому мы видим что в колонке с гибернацией SWAP всегда больше чем ОЗУ.

Создание раздела SWAP

Для создания раздела SWAP мы будем использовать уже нам знакомую утилиту parted, о которой я писал ранее.

Для начала выбираем диск, на котором нужно создать раздел со SWAP. Для примера создадим SWAP раздел размером 4ГБ на диске /dev/sdd.

Просмотр всех дисков в ОС

sudo parted -l

Запись Error: /dev/sdd: unrecognised disk label намекает как раз на то что это новый диск.

Создаём таблицу разделов gpt на диске sdd

sudo parted /dev/sdd mklabel gpt
sudo parted /dev/sdd p
Partition Table: gpt

Создаём сам SWAP раздел на диске sdd

sudo parted /dev/sdd mkpart swap-part linux-swap 1MiB 4GiB
sudo parted /dev/sdd p

Если вы не поняли, что за что отвечает можно посмотреть видео в низу или вызвать parted в интерактивном режиме parted /dev/sdd mkpart.

Если вы собираетесь это делать в скрипте не забываем о udevadm settle, о нём я писал тут.

Форматируем SWAP раздел

Если обычный раздел мы форматируем, используя mkfs то в ситуации со SWAP придётся использовать mkswap.

sudo mkswap /dev/sdd1

В выводе нам сразу предоставят UUID раздела, мелочь конечно, но приятно.

UUID=4a0c82fc-849f-444f-bc8d-52748ffa88e1

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

На данный момент мы только создали этот SWAP раздел, но наша система его еще не использует. Этим мы и займёмся в этой главе.

Для активации используется команда swapon, а для деактивации - swapoff.

Временная активация

Под временной активацией понимается что вы активируете SWAP только для активной ОС, т.е. если ваш компьютер перезагружается созданный вами SWAP снова становится неактивным (по аналогии с mount).

Приступим к активации:

sudo free
Swap:       2129916           0     2129916
sudo swapon /dev/sdd1
sudo free
Swap:       6323192           0     6323192

Если есть желание проверить что активация действительно временная можно перезагрузить компьютер и снова выполнить free (показывает информации по виртуальной памяти).

Постоянная активация

Теперь сделаем всё по уму, так как надо. Для того чтобы у нас не сбрасывалась активация делаем запись в fstab как мы уже это делали в статье ранее про parted.

sudo vim /etc/fstab
UUID=4a0c82fc-849f-444f-bc8d-52748ffa88e1 swap swap defaults 0 0  
sudo systemctl daemon-reload
sudo swapon -a

Последняя команда сделает активацию всех записей в /etc/fstab с меткой swap. UUID раздела нам вывела команда mkswap, но если вы её потеряли не беда выполняем команду:

sudo lsblk --fs /dev/sdd1 

Теперь при загрузке ОС активация SWAP будет проходить автоматически.

Второе значение стоит swap, хотя если выполнить команду man fstab там написано, что для SWAP можно и none. Но RedHat не рекомендует так делать так как становится труднее debug.

Приоритет SWAP раздела

Если мы выполним команду swapon то мы увидим что у нас несколько SWAP разделов и у них есть приоритетность (поле PRIO). В данном случае первым стоит раздел, который был создан при установке ОС.

sudo swapon
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -2
/dev/sdd1 partition   4G   0B   -3

Представим ситуации что я хочу, чтобы сперва страницы памяти перемещались на раздел /dev/sdd1. Для этого в файле /etc/fstab вместо defaults я могу прописать pri=1, или дописать к defaults.

sudo vim /etc/fstab
UUID=4a0c82fc-849f-444f-bc8d-52748ffa88e1 swap swap defaults,pri=1 0 0  
sudo systemctl daemon-reload
sudo swapoff /dev/sdd1
sudo swapon -a

Или если используете команду swapon:

sudo swapon /dev/sdd1 -p 1
sudo swapon -a

Видео