Найти в Дзене
Vseodevops

Создание SWAP в ОС Linux (Ubuntu, Debian, CentOS, AlmaLinux)

Рекомендуют использовать объём для SWAP максимум в два раза больше, чем реальный размер оперативной памяти. На практике обычно достаточно 50-100% от размера ОЗУ.
В целом для всех операционных систем семейства Linux механизм добавления SWAP одинаковый. Учтите, что это крайняя мера, лучше увеличить объем ОЗУ, так как SWAP работает намного медленнее, чем ОЗУ (а в случаях с дисками SSD и NVMe ещё и сокращает время их жизни), и использование SWAP вместо ОЗУ приведёт к потерям скорости. Проверяем, подключен ли SWAP: swapon --show Если вывод пустой, то SWAP-а в системе нет. Если вывод выглядит примерно так: NAME TYPE SIZE USED PRIO
/swapfile file 512M 0B -2 Значит, SWAP уже подключен. В нашем случае его размер равен 512 МБ. Также проверим наличие SWAP с помощью команды free: free -h Вывод будет примерно таким: total used free shared buff/cache available
Mem: 1.9Gi 69Mi 1.7Gi 2.0Mi 128Mi 1.7Gi
Swap: 512Mi 0B 512Mi

Рекомендуют использовать объём для SWAP максимум в два раза больше, чем реальный размер оперативной памяти. На практике обычно достаточно 50-100% от размера ОЗУ.
В целом для всех операционных систем семейства Linux механизм добавления SWAP одинаковый.

Учтите, что это крайняя мера, лучше увеличить объем ОЗУ, так как SWAP работает намного медленнее, чем ОЗУ (а в случаях с дисками SSD и NVMe ещё и сокращает время их жизни), и использование SWAP вместо ОЗУ приведёт к потерям скорости.

Проверяем, подключен ли SWAP:

swapon --show

Если вывод пустой, то SWAP-а в системе нет. Если вывод выглядит примерно так:

NAME TYPE SIZE USED PRIO
/swapfile file 512M 0B -2

Значит, SWAP уже подключен. В нашем случае его размер равен 512 МБ.

Также проверим наличие SWAP с помощью команды free:

free -h

Вывод будет примерно таким:

total used free shared buff/cache available

Mem: 1.9Gi 69Mi 1.7Gi 2.0Mi 128Mi 1.7Gi

Swap: 512Mi 0B 512Mi

Здесь мы видим, что SWAP есть и его размер 512МБ. В случае его отсутствия строки Swap не будет.

Перед созданием SWAP обязательно нужно проверить, есть ли свободное место на диске:

df -h

Смотрим вывод и видим, что на диске свободно 36 ГБ. Если на диске
мало места, перед добавлением SWAP необходимо очистить его либо
увеличить объём диска. Для работоспособности системы необходимо минимум
5% свободного дискового пространства (либо больше, в зависимости от
особенностей ваших проектов). После добавления SWAP раздел подкачки
будет занят, имейте это ввиду при расчётах оставшегося свободного места
на диске.

Filesystem Size Used Avail Use% Mounted on
udev 966M 0 966M 0% /dev
tmpfs 199M 596K 199M 1% /run
/dev/vda2 40G 1.9G 36G 5% /
tmpfs 994M 0 994M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 994M 0 994M 0% /sys/fs/cgroup
tmpfs 199M 0 199M 0% /run/user/0

Сначала рассмотрим случай, когда SWAP в системе нет. Создаём файл для SWAP размером 2 ГБ:

dd if=/dev/zero of=/swapfile bs=1M count=2048

Вывод будет таким:

2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 5.2341 s, 410 MB/s

Данная команда создаст файл /swapfile размером 2048 мегабайт. Нужно
больше или меньше — можно увеличить или уменьшить значение count.

Чтобы никто не мог читать или править файл, кроме владельца — root, устанавливаем права на него:

chmod 600 /swapfile

Проверим, что права выставлены верно:

ls -la /swapfile

Вывод должен быть таким (rw для пользователя, владелец и группа root, размер 2 ГБ):

-rw------- 1 root root 2147483648 Dec 18 19:05 /swapfile

Форматируем файл под swap:

mkswap /swapfile

Вывод будет примерно таким:

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=38e12a0a-58ea-4bc5-b0f9-58a29a1dd8db

Включаем SWAP:

swapon /swapfile

После проверим, что SWAP включен и его размер соответствует тому, что мы указывали:

free -m
total used free shared buff/cache available

Mem: 1977 113 65 2 1799 1691

Swap: 2047 0 2047
swapon --show
NAME TYPE SIZE USED PRIO

/swapfile file 2G 0B -2

Готово. Мы добавили SWAP в систему.

Автоматическое подключение SWAP после перезагрузки
Далее сделаем
так, чтобы SWAP подключался автоматически после перезагрузки системы.
Чтобы SWAP включался при загрузке, нужно добавить его в /etc/fstab.

Добавляем в конец файла /etc/fstab строку:

/swapfile none swap sw 0 0

Конец файла /etc/fstab будет выглядеть примерно так:

<file system> <mount point> <type> <options> <dump> <pass>


/dev/vda2 / ext4 errors=remount-ro 0 1

/swapfile none swap sw 0 0

После этого можно перезагрузить VDS и проверить наличие SWAP командой free -m.

Должно быть что-либо вида:

Swap: 2048 0 2048

Изменение SWAP
Рассмотрим случай, когда в системе уже есть SWAP, и нам нужно его изменить.

swapon --show
/swapfile file 256M 0B -2

Видим, что у нас в /swapfile 256 МБ, а нам нужно 2 ГБ. Как уже писали
ранее, проверяем, что на накопителе есть свободное место с помощью
команды df -h.

Далее выключаем имеющийся файл подкачки /swapfile:

swapoff /swapfile

Проверяем с помощью swapon —show. Важно, что при отключении SWAP не
должен использоваться системой. В противном случае можно отключить
некоторые сервисы, которые потребляют ОЗУ, и после увеличения SWAP
включить их обратно.

Меняем размер файла подкачки уже знакомой командой:

dd if=/dev/zero of=/swapfile bs=1M count=2048

Далее инструкция такая же, как и при добавлении SWAP, только в нашем
случае /swapfile уже имеет правильные права. Просто проверим, что это
так:

ls -la /swapfile
-rw------- 1 root root 2147483648 Dec 18 20:24 /swapfile

Помечаем /swapfile как файл подкачки:

mkswap /swapfile

И активируем SWAP:

swapon /swapfile

Проверяем, что SWAP увеличился, а также проверяем файл /etc/fstab:

swapon --show
cat /etc/fstab