Как правильно создать swap-файл в Linux и нужен ли он на SSD

Что такое swap?

Swap — это пространство на диске, которое система использует как резервную оперативную память. Когда RAM заканчивается, данные сбрасываются в swap, чтобы избежать сбоев. Swap можно организовать в виде раздела или файла — сегодня чаще используют swap-файл: он проще в создании и более гибок.

Нужен ли swap в системе с SSD?

Этот вопрос часто вызывает споры. Ответ — зависит от ваших задач.

  • Swap нужен, если:
    • У вас меньше 8 ГБ оперативной памяти;
    • Вы используете гибернацию (hibernation);
    • Вы работаете с тяжёлыми приложениями: IDE, рендеринг, игры, виртуальные машины;
    • Вы хотите иметь “страховку” при переполнении RAM.
  • Swap не обязателен, если:
    • У вас 16+ ГБ RAM и стабильная нагрузка;
    • Вы не используете гибернацию;
    • Вы следите за потреблением памяти.

💡 Совет: Даже на мощной системе рекомендуется создать небольшой swap (1–2 ГБ) — это дешёвая подстраховка от Out-of-Memory-ситуаций.

Как правильно создать swap-файл в Linux

Почему не стоит использовать dd

Ранее часто использовался способ:

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

Однако этот метод может привести к фрагментации swap-файла, особенно на занятом или фрагментированном диске. Это негативно сказывается на производительности swap.

Рекомендуемый способ — fallocate

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Проверка:

swapon --show

Добавляем в автозагрузку

Откройте файл /etc/fstab и добавьте строку:

/swapfile none swap sw 0 0

Настройка swappiness

Swappiness определяет, как активно ядро будет использовать swap. По умолчанию — 60. Это агрессивно, особенно при наличии SSD. Рекомендуется установить значение 10–20:

sudo sysctl vm.swappiness=10

Для сохранения значения после перезагрузки:

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf

Проверка фрагментации swap-файла (по желанию)

sudo filefrag -v /swapfile

extent count: 1 — файл не фрагментирован. Это хорошо.

Если fallocate не работает

На некоторых файловых системах (например, Btrfs) fallocate может быть несовместим. Тогда допустимо использовать dd, но с проверкой фрагментации:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Альтернатива swap на диске: zswap и zram

Zswap — сжатая подкачка в RAM

echo 1 | sudo tee /sys/module/zswap/parameters/enabled

Zram — виртуальный swap в RAM

sudo modprobe zram
echo lz4 | sudo tee /sys/block/zram0/comp_algorithm
echo 512M | sudo tee /sys/block/zram0/disksize
sudo mkswap /dev/zram0
sudo swapon /dev/zram0

Особенно эффективно на устройствах с 2–4 ГБ RAM (например, нетбуки, Raspberry Pi).

Поддержка в разных дистрибутивах

fallocate

Есть почти во всех системах (входит в util-linux)

zram, zswap

Поддерживаются ядром, модули легко активировать

sysctl, mkswap, swapon

Стандартные утилиты всех дистрибутивов

Вывод

  • Swap-файл — полезен даже на SSD, особенно как резерв.
  • Используйте fallocate для избежания фрагментации.
  • Настройте swappiness под вашу рабочую нагрузку.
  • Рассмотрите zswap или zram как альтернативу для ускорения работы без записи на диск.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *