Введение
Swap-файл (файл подкачки) — это область на диске, которая используется как расширение оперативной памяти (RAM) при её нехватке. В отличие от swap-раздела, файл проще создать, изменить размер или удалить без переразметки диска. Этот гайд подробно опишет, как настроить swap-файл в Linux, начиная с создания и заканчивая постоянным включением.
Предварительные проверки
Перед созданием swap-файла убедитесь, что:
- Достаточно свободного места на целевом разделе. Swap-файл не должен занимать более 50% свободного места, если вы планируете его использовать для гибернации.
- Нет конфликтующих swap-устройств. Проверьте текущий swap:
Если вывод пуст, swap не активен. Если есть активные swap-разделы или файлы, вы можете добавить ещё один.swapon --show - У вас есть права sudo. Для всех операций требуются права администратора.
Шаг 1: Создание файла swap
Рекомендуемый способ — fallocate, так как он быстро выделяет место без записи нулей. Альтернатива — dd, который медленнее, но заполняет файл нулями.
Пример для 4 ГБ swap-файла:
sudo fallocate -l 4G /swapfile
Если fallocate недоступен (редкие случаи), используйте dd:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=4194304
Здесь bs=1024 — блок 1 КБ, count=4194304 — 4 ГБ в КБ.
💡 Совет: Размер swap зависит от объёма RAM и сценария использования. Для настольных систем с 4-8 ГБ RAM достаточно 2-4 ГБ swap. Для серверов с большим RAM swap может быть меньше 1x.
Шаг 2: Настройка прав доступа
Swap-файл должен быть доступен только root для безопасности:
sudo chmod 600 /swapfile
Это предотвращает чтение или запись другими пользователями.
Шаг 3: Форматирование файла как swap
Подготовьте файл с помощью mkswap:
sudo mkswap /swapfile
Вывод покажет UUID и размер. Пример:
Setting up swapspace version 1, size = 4 GiB (4294967296 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Запишите UUID — он понадобится для /etc/fstab (опционально, но рекомендуется для стабильности).
Шаг 4: Активация swap-файла
Включите swap без перезагрузки:
sudo swapon /swapfile
Проверьте, что swap активен:
swapon --show
Или:
free -h
В выводе free найдите строку Swap:. Она должна показывать общий размер и используемое пространство.
Шаг 5: Постоянное включение через fstab
Чтобы swap активировался при каждой загрузке, добавьте запись в /etc/fstab. Используйте один из двух вариантов:
Вариант A: по пути файла (проще)
/swapfile none swap sw 0 0
Вариант B: по UUID (надёжнее, если путь может измениться)
UUID=ваш-uuid none swap sw 0 0
UUID можно узнать через sudo blkid /swapfile.
⚠️ Важно: Не используйте опции
defaultsилиautoдля swap в fstab. Толькоsw(swap) и0 0для дампа и проверки.
После редактирования /etc/fstab проверьте синтаксис:
sudo mount -a
Если ошибок нет, swap будет работать после перезагрузки.
Шаг 6: Настройка параметра swappiness (опционально)
vm.swappiness контролирует, насколько агрессивно ядро будет использовать swap. Значение от 0 (минимальное использование) до 100 (активное). По умолчанию обычно 60.
Посмотреть текущее значение:
cat /proc/sys/vm/swappiness
Временно изменить (до перезагрузки):
sudo sysctl vm.swappiness=10
Для постоянного изменения добавьте в /etc/sysctl.conf:
vm.swappiness=10
И примените: sudo sysctl -p.
Удаление swap-файла (если нужно)
- Отключите swap:
sudo swapoff -v /swapfile - Удалите файл:
sudo rm /swapfile - Удалите строку из
/etc/fstab(если добавляли). - Проверьте
swapon --show— файл больше не должен быть в списке.
Дополнительные рекомендации
Выбор места для swap-файла
- SSD vs HDD: На SSD swap работает быстрее, но увеличивает износ. Для современного SSD с долгим ресурсом это не критично. На HDD swap будет медленным, но лучше чем крах системы.
- Расположение: Размещайте swap-файл в корневом разделе (
/) или отдельном, с достаточным свободным местом. Избегайте сетевых файловых систем (NFS) — swap требует низких задержек.
Мониторинг использования
Регулярно проверяйте, используется ли swap:
watch -n 5 free -h
Если used в строке Swap часто выше нуля, возможно, не хватает RAM. Рассмотрите добавление RAM или оптимизацию приложений.
Swap-файл и гибернация
Если вы используете гибернацию (сохранение состояния в swap перед выключением), размер swap-файла должен быть не меньше объёма RAM. В противном случае гибернация невозможна.
Увеличить swap-файл без перезагрузки
- Отключите текущий swap:
sudo swapoff /swapfile. - Увеличьте файл:
sudo fallocate -l 8G /swapfile(илиdd). - Повторите шаги 2-4 (права, mkswap, swapon).
- Обновите fstab, если изменился путь или UUID.
Заключение
Swap-файл — гибкий и простой способ добавить виртуальную память в Linux. Следуя этим шагам, вы быстро создадите, настроите и активируете swap, улучшив отзывчивость системы при нехватке RAM. Помните о разумном размере swap и мониторинге использования, чтобы избежать излишней нагрузки на диск.