Использование swap-файла вместо swap-раздела в Linux.
Общая информация о страницах подкачки.
Преимущества использования swap-файла:
- Можно легко изменить размер при необходимости.
- Можно перемещать между разделами.
Недостатки:
- На момент 2020 года файловая система btrfs поддерживается с значительными ограничениями. Поддержка введена в ядро Linux, начиная с версии 5.0.
- Незначительно медленнее, чем отдельным разделом.
Создание swap-файла.
Начиная с ядра версии 5.7, необходимо создавать swap-файл с помощью утилиты dd. Подробнее по ссылкам:
https://wiki.archlinux.org/index.php/Swap#Swap_file
https://bugs.archlinux.org/task/66979
Команда на создание файла размером 8192 мегабайта в корневом разделе и с именем swapfile:
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
Примечание: Пересоздание swap-файла указанным способом решает проблему «swapon: swapfile has holes».
Далее необходимо в файле /swapfile создать файловую систему, активировать swap и в /etc/fstab указать монтирование.
Подготовка и активация swap-файла.
Сначала нужно ограничить доступ к файлу всем, кроме суперпользователя:
sudo chmod 600 /swapfile
Можно читать и записывать, но не выполнять.
Создание файловой системы в swap-файле:
sudo mkswap /swapfile
Для созданной файловой системы будет присвоен UUID, но после перезагрузки swap не подключится, поэтому в /etc/fstab придётся указать абсолютный путь /swapfile. Да, именно абсолютный путь, а не UUID. В этом состоит важный нюанс.
Добавить запись о монтировании swapfile в /etc/fstab:
echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab
tee -a — означает добавить запись в файл без перезаписывания существующих записей. Запись будет произведена после крайней строки.
Визуально проверить правильность внесения записи:
cat /etc/fstab
Пример вывода:
Проверка корректности fstab утилитой findmnt:
sudo findmnt --verify
Пример вывода:
Вывод указывает, что файл заполнен правильно. При этом предупреждение «non-bind mount source» следует игнорировать, так как нам нужен именно файл, а не раздел.
Активация использования swap-файла:
sudo swapon /swapfile
Проверить подключился ли swap:
swapon --show
В выводе терминала будет отображено имя swap-файла и его размер.
Альтернативный вариант:
free -h
В строке «Подкачка» должно быть указано значение, равное ранее выделенному объёму созданного swap-файла.
По подключению swap-файла на этом всё.
Отключение swap.
Если требуется изменить размер или удалить swap-файл, то сначала его необходимо отключить:
sudo swapoff /swapfile
Эта команда так же отключает swap в виде раздела.
Удалить можно стандартной командой:
sudo rm /swapfile
После удаления не забыть убрать запись в /etc/fstab.