Своп (англ. Swap) – один из самых простых способов повысить реакцию сервера и предотвратить ошибки приложения «out of memory». Своп – это область на накопителе, в которой операционная система может временно хранить данные, которые больше не могут находиться в памяти.
Инструкция подойдет практически к любому линуксу, не зависимо от версии.
Проверяем наличие SWAP в CentOS/Fedora/RedHat
Чтобы посмотреть swapon информацию, можно выполнить одно из ниже упомянутых утилит.
Через утилиту swapon:
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 1,6G 376M -2
[root@localhost ~]#
Другой способ проверки — это использовать утилиту «free»:
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 4796 1140 2758 86 897 3319
Swap: 1639 375 1264
[root@localhost ~]#
Если ничего не возвращается командой, значит на сервере нет файла для подкачки. У меня он есть, я ему выделил 1,6Гб. Но предположим, что этого мало и я хотел бы добавить еще 4Гб.
Проверяем дискового пространства и свободного места
SWAP использует файл созданный на вашем диске, нам необходимо знать сколько имеется свободного места для данной операции. Используем утилиту — df c ключом h:
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 2,4G 0 2,4G 0% /dev
tmpfs 2,4G 0 2,4G 0% /dev/shm
tmpfs 2,4G 17M 2,4G 1% /run
tmpfs 2,4G 0 2,4G 0% /sys/fs/cgroup
/dev/mapper/cl-root 268G 198G 70G 74% /
/dev/sda1 1014M 272M 743M 27% /boot
tmpfs 480M 0 480M 0% /run/user/0
[root@localhost ~]#
Создание файла подкачки (SWAP)
Определяем размер нового файла подкачки в мегабайтах (парметр «count») и умножить на 1K, чтобы определить количество блоков. Например, создаем файл подкачки с 4Гб:
[root@localhost ~]# dd if=/dev/zero of=/swapfile bs=1K count=4M
4194304+0 записей получено
4194304+0 записей отправлено
скопировано 4294967296 байт (4,3 GB), 19,5212 c, 220 MB/c
[root@localhost ~]#
Файл «swapfile» создался в корневой директории «/».
Включаем/Подключаем Swap
Файл создался, но система не знает, что это за файл и как с ним работать. На нужно включить его. Перед тем, как сделать это, мы должны выставить нужные права на файл подкачки так, чтобы он не может быть прочитан кем-либо (кроме пользователя root). Предоставление другим пользователям чтение или запись в этот файл будет огромный риск для безопасности. По этому, выставляем:
[root@localhost ~]# chmod 600 /swapfile
Создаем пространство подкачки:
[root@localhost ~]# mkswap /swapfile
Подключаем файл к системе:
[root@localhost ~]# swapon /swapfile
Чтобы убедиться в том, что все выполнено правильно, нужно проверить командой swapon:
[root@localhost ~]# swapon -s
Автоматическое монтирование Swap
Файл подкачки включен, но до перезагрузки сервера. Нам нужно прописать его в файле fstab:
[root@localhost ~]# mcedit /etc/fstab
И добавляем строку:
/swapfile swap swap sw 0 0
Не забываем в конце файла сделать переход на новую строку. Сохраняем fstab.
Отключаем SWAP
Чтобы выключить swap , используйте swapoff:
[root@localhost ~]# swapoff /swapfile
[root@localhost ~]# swapon -s
Далее нужно удалять сам файл подкачки и строку из fstab.
А можно всего выше указанного не делать, автоматизировать процесс.
Скрипт добавления SWAP
Открывай любой редактор:
[root@localhost ~]# mcedit /opt/scripts/swap.sh
Добавляем следующее содержимое и сохраняем:
#!/bin/bash
# Спрашиваем у пользователя размер
read -p 'Введите размер файла в мегабайтах: ' size_mb
# Объявляем переменную которую будем умножать size_mb
size_kb=$((1024*${size_mb}))
#создаем файл подкачки
dd if=/dev/zero of=/swapfile bs=1K count=${size_kb}
# задаем права
chmod 600 /swapfile
# Создаем пространство подкачки
mkswap /swapfile
# Подключаем файл к системе
swapon /swapfile
# проверяем наличие записи в fstab
if [ "$(grep '/swapfile' /etc/fstab)" ]; then
echo "Ошибка: в файле /etc/fstab уже есть запись 'SWAP'"
else
echo "Запись SWAP добавлена в файл /etc/fstab"
echo -e '\n/swapfile swap swap defaults 0 0' >> /etc/fstab
fi
# проверяем
swapon --show
Делаем файл исполняемым:
chmod +x /opt/scripts/swap.sh
Запускаем скрипт:
[root@localhost swap]# sh /opt/scripts/swap.sh
Введите размер файла в мегабайтах: 4096
4194304+0 записей получено
4194304+0 записей отправлено
скопировано 4294967296 байт (4,3 GB), 17,7545 c, 242 MB/c
Setting up swapspace version 1, size = 4194300 KiB
без метки, UUID=2beb46d4-b035-4ab2-aca4-0b2d40bacf35
Запись SWAP добавлена в файл /etc/fstab
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 1,6G 399,6M -2
/swapfile file 4G 0B -3
[root@localhost swap]#