Создание Swap-файла в Linux
Пространство подкачки это виртуальная оперативная память на диске. В Linux можно создать swap-раздел диска или Swap-файл (файл подкачки). При установке системе создавать swap-раздел нет никакого смысла, это не дает преимуществ как раньше. Когда происходит ситуации, что может не хватить оперативной памяти на задачу, тогда создается и включается swap-файл нужного объема. Создание swap-файла одинокого во всех дистрибутивах Linux (Debian, Ubuntu, Arch и других).
Все действия выполняются от root пользователя или с его привилегиями через sudo.
su -
1. Проверка системы
Проверяем есть ли в системе swap файлы и разделы
swapon --show
Вывод будет пустой, если swap отсутствует в системе. В системе может быть несколько swap-файлов.
Проверяем что места в разделе достаточно для swap файла.
df -h
2. Создать Swap-файл (файл подкачки) в Linux
2.1. Создание swap-файла
Можно создавать swap-файл двумя способами, через утилиту fallocate или dd. Создание через fallocate предпочтительный и самый быстрый способ.
Создаем файл swapfile в корневом каталоге / объемом 4 гигабайта через утилиту fallocate
fallocate -l 4G /swapfile
Утилита создаст файл без какого либо вывода.
Если утилита fallocate не установлена в системе Linux, создаем файл объемом 4 гигабайта через утилиту dd
dd if=/dev/zero of=/swapfile bs=1k count=4M status=progress
Будет создан файл swapfile в корневом каталоге / объемом 4 гигабайта (1k × 4M = 4G).
2.2. Установка прав swap файла
Swap-файлы должны иметь права на чтение и запись только для root пользователя.
Устанавливаем права 600 для файла swapfile
chmod 600 /swapfile
Проверяем владельца и права файла swapfile
ls -lh /swapfile
-rw------- 1 root root 4.0G Feb 26 17:17 /swapfile
2.3. Создание файловой системы swap файла
Завершительным этапом будет создание файловой системы swap внутри созданного файла.
Создаем файловую систему swap внутри файла swapfile
mkswap /swapfile
Файловая swap система успешно создана. Теперь файл swapfile является swap-файлом и может использоватся.
3. Включить Swap-файл (файл подкачки) в Linux
3.1. Включение swap-файла
Включаем swap-файл swapfile
swapon /swapfile
Проверяем что swap-файл подключился в систему Linux
swapon --show
Также проверить всю доступную оперативную память и swap можно командой:
free -th
Swap-файл подключен до перезагрузки компьютера.
3.2. Автозагрузка swap-файла
Чтобы при загрузке системы автоматически включался(монтировался) swap-файл, его необходимо добавить в /etc/fstab
Открываем файл /etc/fstab
nano /etc/fstab
Добавляем строку монтирования swap-файла
/swapfile none swap sw 0 0
Внимательно вноси данные в файл /etc/fstab, потому что можно сломать загрузку Linux.
Сохраняем файл, перезагружаем компьютер и проверяем что swap-файл был смонтирован при загрузке.
swapon --show
4. Настроить swappiness (предпочтение использования swap)
Параметр /proc/sys/vm/swappiness указывает порог, когда ядро Linux начинает просматривать оперативную память и смотреть, что можно освободить. Может иметь значение от 0 до 200. При значениях близких к 0, ядро начнет активнее освобождать открытые файлы. При значениях близких к 200, система будет пытатся использовать swap. В большинстве дистрибутивах Linux значение по умолчанию равно 60.
Изменять этот параметр имеет смысл, если swap-файл используется на постоянной основе и стандартное значение параметра не устраивает.
Посмотрим текущие значение параметра swappiness
cat /proc/sys/vm/swappiness
Изменяем значение параметра swappiness на 35
sysctl vm.swappiness=35
Чтобы изменения сохранились после перезагрузки, открываем файл /etc/sysctl.conf
nano /etc/sysctl.conf
Добавляем в конец файла строку
vm.swappiness=35
5. Отключить и удалить Swap-файл (файл подкачки) в Linux
5.1. Выключение swap-файла
При выключении swap-файла все данные из него загружены в оперативную память не будут. Это может привести к закрытию программ, если оперативная память и swap-файл были полностью забиты в момент отключения. Если swap-файл не добавлен на постоянную основу достаточно перезагрузить компьютер.
Включаем swap-файл swapfile
swapoff /swapfile
5.2. Удаление swap-файла
Swap-файл необязательно удалять сразу как в нем отпала необходимость, его можно оставить и включить одной командой, когда в нем появится потребность.
Удаляем swap-файл swapfile
rm /swapfile
Если swap-файл добавлялся в автоматическое включение при загрузке системы не забудь его удалить оттуда, см пункт 3.2 статьи.