Добавление swap в Debian/Ubuntu
Самая дешёвая VDS часто имеет всего 512 МБ или 1 ГБ оперативной памяти. Для некоторых задач, например сборки npm-зависимостей, этого недостаточно. Swap позволяет расширить доступную память за счёт диска.
Вариант 1. Swap-файл
- Проверим, есть ли уже swap:
swapon --show
free -h
Если вывод пустой — swap не настроен.
- Создадим файл (например, на 2 ГиБ):
sudo fallocate -l 2G /swapfile
Если fallocate
недоступен:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
- Выставим права:
sudo chmod 600 /swapfile
- Разметим файл подкачки:
sudo mkswap /swapfile
- Включим swap:
sudo swapon /swapfile
- Проверим:
swapon --show
free -h
- Чтобы swap подключался при загрузке, добавим строку в
/etc/fstab
:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Вариант 2. Отдельный раздел
- Определим раздел:
lsblk
Например, /dev/sdb2
.
- Разметим его как swap:
sudo mkswap /dev/sdb2
- Активируем:
sudo swapon /dev/sdb2
- Для автоподключения добавим строку в
/etc/fstab
:
echo '/dev/sdb2 none swap sw 0 0' | sudo tee -a /etc/fstab
Дополнительно
Настройка swappiness
Параметр swappiness
определяет, как активно система будет использовать swap. Проверить текущее значение:
cat /proc/sys/vm/swappiness
Чтобы система реже обращалась к swap, можно установить значение 10:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
Скрипт swapctl
Для автоматизации настройки в репозитории есть idempotent‑скрипт swapctl.sh
. Он создаёт или удаляет swap‑файлы, настраивает vm.swappiness
и прописывает запись в /etc/fstab
.
Запуск в одну строку прямо с GitHub:
curl -fsSL https://raw.githubusercontent.com/Ichinya/seo_recipes/main/scripts/swapctl.sh | sudo bash -s -- --size 4G --swappiness 10
Другие примеры:
curl -fsSL https://raw.githubusercontent.com/Ichinya/seo_recipes/main/scripts/swapctl.sh | sudo bash -s -- --file /swap2 --size 1536M
curl -fsSL https://raw.githubusercontent.com/Ichinya/seo_recipes/main/scripts/swapctl.sh | sudo bash -s -- --remove
curl -fsSL https://raw.githubusercontent.com/Ichinya/seo_recipes/main/scripts/swapctl.sh | sudo bash -s -- --help