notby.NET Logo

Создание Swap-файла в Linux

Пространство подкачки это виртуальная оперативная память на диске. В Linux можно создать swap-раздел диска или Swap-файл (файл подкачки). При установке системе создавать swap-раздел нет никакого смысла, это не дает преимуществ как раньше. Когда происходит ситуации, что может не хватить оперативной памяти на задачу, тогда создается и включается swap-файл нужного объема. Создание swap-файла одинокого во всех дистрибутивах Linux (Debian, Ubuntu, Arch и других).

Все действия выполняются от root пользователя или с его привилегиями через sudo.

su -

1. Проверка системы

Проверяем есть ли в системе swap файлы и разделы

swapon --show

Вывод будет пустой, если swap отсутствует в системе. В системе может быть несколько swap-файлов.

Проверяем что места в разделе достаточно для swap файла.

df -h
Проверка в консоли Debian наличии swap и свободного места на диске

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 в консоли Debian утилитой mkswap

Файловая swap система успешно создана. Теперь файл swapfile является swap-файлом и может использоватся.

3. Включить Swap-файл (файл подкачки) в Linux

3.1. Включение swap-файла

Включаем swap-файл swapfile

swapon /swapfile

Проверяем что swap-файл подключился в систему Linux

swapon --show

Также проверить всю доступную оперативную память и swap можно командой:

free -th
Swap-файл /swapfile подключен в консоли Debian командой “swapon /swapfile”, показана вся доступная оперативная память и swap файл командой “free -th”

Swap-файл подключен до перезагрузки компьютера.

3.2. Автозагрузка swap-файла

Чтобы при загрузке системы автоматически включался(монтировался) swap-файл, его необходимо добавить в /etc/fstab

Открываем файл /etc/fstab

nano /etc/fstab

Добавляем строку монтирования swap-файла

/swapfile none swap sw 0 0
Открыт файл /etc/fstab в текстовом редакторе nano и добавлена строка “/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 статьи.