Как подключить SWAP для виртуального сервера: плюсы и минусы SWAP
14:33, 03.11.2022
SWAP – важный механизм, обеспечивающий разумное управление памятью виртуального сервера путем перемещения части данных из оперативной памяти на твердотельный накопитель. Технология актуальна в тех случаях, когда система нуждается в таком количестве ОЗУ, которым сервер не располагает физически. Активация свопинга позволит поместить в специальный раздел накопителя те данные, которые используются реже всего.
Опытные пользователи Linux знают, что большое количество страниц, используемых программами на этапе запуска, нужны только при инициализации, и больше они не используются на протяжении всей рабочей сессии. SWAP позволяет выгрузить эти неиспользуемые страницы из ОЗУ и переместить их в пространство накопителя. Таким образом, swapping является важным инструментом по оптимизации серверных систем.
Плюсы SWAP
Основным преимуществом этой технологии является то, что она позволяет:
- Снизить расходы на содержание сервера. То есть вы можете взять более дешевый тарифный план виртуального частного сервера с недостаточным объемом ОЗУ, настроить SWAP, и таким образом стабилизировать работу сервера.
- Оптимизировать работу сервера за счет высвобождения страниц памяти.
На серверах без конкуренции или с малой конкуренцией за память польза от этой технологии будет небольшой – максимум, вы сможете перекинуть в своп анонимную память, которую приложения и службы используют редко. Это позволит повысить коэффициент попаданий в кэш и в целом высвободить драгоценную ОЗУ.
Также технология будет полезна на VPS, где бывают временные всплески в плане потребления RAM – устойчивость к такого рода ресурсным аномалиям будет выше.
Минусы SWAP
Главный минус – оперативная память всё равно быстрее. Даже если у вас на сервере супер современный NVMe-накопитель, ОЗУ будет работать с информацией быстрее. Поэтому злоупотреблять свопингом не стоит, нужно четко понимать, какие данные разумно помещать в эту память, а какие лучше оставить для ОЗУ.
Кроме того, SWAP может отстрочить вызов Out-Of-Memory Killer вашей операционной системой, а активация этого процесса бывает необходимой, когда нужно завершить приложение, угрожающее сбоем ядра. Такие ситуации редкость, особенно на современных версиях Linux, но они имеют место быть.
Создание и подключение файла подкачки SWAP
Представим ситуацию, что у вас есть VPS с 2 гигабайтами оперативной памяти без раздела под swap. В этом случае нам необходимо сначала создать файл под swap:
sudo fallocate -l 2G /mnt/swapfile
Теперь у нас есть файл подкачки размером 2 ГБ. Если возникнут проблемы с fallocate, можно прибегнуть к проверенной временем команде dd:
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048
Далее необходимо присвоить права чтения и записи для этого файла:
sudo chmod 600 /mnt/swapfile
И теперь, когда файл создан и права настроены под администратора, мы можем указать системе путь к файлу подкачки:
sudo mkswap /mnt/swapfile
Теперь Linux будет использовать данный файл, чтобы выгружать в него редко используемые страницы. Подключаем файл:
sudo swapon /mnt/swapfile
Остается открыть в режиме редактирования файл /etc/fstab и прописать туда строчку:
/mnt/swapfile none swap sw 0 0
Если этого не сделать, файл подкачки будет активен только до следующей перезагрузки сервера, а потом его нужно будет снова активировать вручную.
Как проверить наличие свопа в системе?
Для этого существует простая команда:
swapon --show
При её активации вы увидите информацию о файле подкачки, его размер и количество задействованных мегабайт.
Какого размера создать SWAP
Суть в том, что оптимальный размер файла подкачки определяется индивидуально. Он зависит от таких факторов:
- объем ОЗУ на VPS;
- типы используемых приложений, а также их «прожорливость»;
- используется ли на сервере режим сна.
Если у вас виртуальная машина с объемом RAM менее 2 ГБ, то оптимальным будет размер файла SWAP в полтора-два раза больше. На машинах с 3-4 ГБ в большинстве случаев хватает файла подкачки размером на 10-15% больше объема оперативки. Если же у вас VPS с 6 ГБ ОЗУ и более, то достаточно будет своп-файла на 1-2 ГБ.
Помните, что при избытке ОЗУ файл подкачки лучше вообще не активировать – если ваша система не использует на 100% имеющиеся ресурсы, то необходимости в свопинге попросту нет. Вы только навредите, ведь перенос страниц данных в SWAP-файл повлечет за собой замедление скорости обработки данных при обращении к этим страницам.