Этот материал будет полезен в первую очередь тем, кто занимается администрированием серверов как на предприятии так и на VPS. Инструкция подойдет как для Debian/Ubuntu, так и для других систем (Centos).
Что такое Swap (файл подкачки)
Swap — это механизм памяти, при работе которого неактивные процессы выгружаются из оперативной памяти на жёсткий диск, таким образом происходит ее разгрузка. Это полезно, если количество памяти строго ограничено, говоря простым языком, если памяти катастрофически мало или ее не хватает.
Swap может быть представлен в двух исполнениях:
- отдельный раздел на диске
- файл на диске.
Примечательно, что в случае, если ваша система работает на SSD диске, то производительность swap файла не будет сильно уступать по скорости доступа ОП.
Проверяем наличие Swap файла подкачки в Linux
Заходим на сервер через SSH, для проверки наличия файла подкачки вводим команду:
swapon -s
При наличии файла подкачки результат команды будет таким:
[root@server]# swapon -s Filename Type Size Used Priority /var/swap.img file 1023992 30248 -1
Есть и альтернативный метод:
free
Если файла подкачки нет, то напротив соответствующего пункта будут нули:
Swap: 0 0 0
Как создать Swap файл подкачки в Linux
Переходим в папку /var:
cd /var
Создаем Swap файл и задаем права доступа к нему:
touch swap.img chmod 0600 swap.img
Выбираем размер файла подкачки
Как говорил Владимир Павлович — «размер Swap файла должен быть равен объему оперативной памяти, либо превышать ее в два раза«. Из вышесказанного делаем вывод, что при размере памяти равному 1024мб, размер файла подкачки будет равен 1024мб/2048мб.
Используя консольную утилиту dd заполним только что созданный файл нулями:
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000 status=progress
Инициализируем Swap файл командой mkswap:
mkswap /var/swap.img
Поздравляю, Swap файл готов к использованию.
Включаем Swap командой swapon:
swapon /var/swap.img
Проверяем действительно ли это так:
swapon -s
или
free
Добавляем Swap в fstab
Важно знать, что Swap файл будет работать только до перезагрузки системы, после его нужно будет включать заново. Чтобы избавить себя от этих занятий, давайте пропишем в системе, что он есть и его нужно использовать.
Выполним команду:
echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
или
nano /etc/fstab
и дописываем там строку
/var/swap.img none swap sw 0 0
Зададим приоритеты использования памяти в системе
Поскольку теперь в системе есть по сути два варианта памяти — RAM и Swap, то неплохо будет определить, каким образом система будет их использовать. Используя утилиту sysctl с параметром запуска vm.swappiness, зададим, на каком этапе загрузки RAM (оперативной памяти) будет использоваться Swap. Значение sysctl может варьироваться в пределах от 0 до 100. В случае, если указать максимальное значение — 100, система будет использовать только ОП и наоборот, если указать 0, то она будет использовать только Swap.
Я предерживаюсь мнения, что стоит остановить свой выбор на значении vm.swappiness=30. В этом случае при загрузке RAM на 70%, неактивные процессы будут выгружаться в Swap.
Выполняем команду:
sysctl -w vm.swappiness=30
Для отключения свап-файла используйте команду:
swapoff /var/swap.img
На этом вопрос о том как создать Swap файл подкачки в Linux можно считать закрытым.