Swap: как создать и управлять файлом подкачки Linux

Swap: как создать и управлять файлом подкачки Linux

Объясняем, что такое Swap-файл на Ubuntu, как он работает, как создать swap-файл, как изменить его размер и установить права доступа, а также как настроить запуск после перезагрузки системы.

Swap — это файл подкачки Linux, специальный раздел на жёстком диске, расширяющий объём ОЗУ в случае, если его не хватает.

Расскажем подробнее, как подключить swapping, как настроить и проверить работу swap-файла, а также как сохранить его в конфигурации системы, чтобы после перезапуска ОС он подключался автоматически.

Как работает swapping

Операционная система использует оперативную память для хранения информации, которая нужна «прямо сейчас», открытым приложениям. Но бывают и такие ситуации, когда объём оперативной памяти меньше объёма нужных данных: тогда ОЗУ начинает не хватать, а компьютер тормозит или даже зависает.

Swapping в Linux — это технология, решающая проблему недостатка оперативной памяти; она основана на том, что ОС и запущенные программы не обязательно используют всю находящуюся в оперативной памяти информацию. И поэтому ту часть её, которая не используются в данный момент, можно перенести из ОЗУ на жёсткий диск, а точнее в специально созданный том или файл на накопителе — swap-раздел или swap-файл. Обычно он подключается, если ОЗУ переполнена: часть неиспользуемой информации переносится в файл подкачки, а в ОЗУ появляется место для новых данных. То есть swap — это не увеличение оперативной памяти за счёт жёсткого диска, а лишь подстраховка.

Кроме функции подстраховки swapping нужен для распределения процессов по приоритетности. Наиболее важным отдаётся физическая оперативная память, а процессам с меньшим приоритетом — swap-файл Linux.

Все действия, касающиеся своппинга, выполняются от имени суперпользователя либо пользователем с расширенными правами с помощью sudo.

Под swap-файл не рекомендуется отводить много места: его максимальный объём — в 2 раза больше объёма установленной ОЗУ. Но оптимальным считается от 50 до 100 % от объёма физической оперативки. Если во время работы на ПК часто не хватает ОЗУ, то лучше увеличить именно её, а не файл подкачки. Конечно, swap-память немного ускорит работу устройства, но она работает намного медленнее, чем оперативная, а частое использование файла подкачки может сократить время жизни SSD-накопителей.

Как проверить, подключён ли swap

На всех ОС с ядром Linux, в том числе на Ubuntu, swap-файл добавляют одинаково.

  • Прежде, чем создавать его, нужно убедиться, что swapping ещё не подключен. Введём в терминале:
# swapon --show

Если вывод команды содержит одни нули, то swap-файл ещё не создан, а если значения метаданных отличны от нуля, то swapping подключён:

NАMЕTYРЕSIZЕUSЕDРRIО
/swapfilefile512M0B-2

Так можно проверить и объём файла подкачки, в примере он равен 512 мегабайтам, из которых занято 0 байт. Если же подключён не файл, а логический том, то в колонке «TYРЕ» будет указано «partition».

  • Ещё один способ проверки:
# free -h

Будет выведена информация об ОЗУ и swap:

 tоtаl  usеd  frееshаrеdbuff/сасhеаvаilаblе
Mem:  1.9G  69M1.7G2.0M128M1.7G
Swap:512M0B  512M   

Здесь логика та же: в выводе есть строка swap, и если в ней заданы значения, отличные от нуля, — он подключен. В строке одни нули — swapping не работает.

  • Также непосредственно перед добавлением своппинга убедитесь, что после его подключения на накопителе останется достаточно пространства:
# df -h

Если есть запас — можно подключать, иначе нужно либо очистить память, либо расширить её объём. Для нормальной работы системы свободным должно оставаться более 5 % всего пространства. Учитывайте это, когда будете рассчитывать размер файла подкачки.

Как создать swap-файл

  1. В нашем примере мы будем создавать swap-файл объёмом 2 гигабайта (вместо имени «swap_file» можно задать любое другое):
# dd if=/dev/zero of=/swap_file bs=1M count=2048

В результате команда выведет:

2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 5.2341 s, 410 MB/s

В приведённом примере был создан файл /swap_file объёмом 2048 мегабайт. За его объём отвечает параметр «count», чтобы создать файл другого объёма, измените его значение.

  1. Также полезно установить права на файл. В случае своппинга — ограничить права всем пользователям, кроме владельца — root-пользователя (никто кроме него не сможет читать или изменять его). Введём в терминале:
# chmod 600 /swap_file

Здесь 6 — это установленные права владельца, а нули заданы для всех остальных.

  1. Затем убедимся, что изменения применились:
# ls -la /swap_file

Вывод:

-rw------- 1 rооt rооt 2147483648 May 25 12:39 /swap_file
  1. Созданный файл ещё не распознаётся ОС в качестве swap-файла. Укажем его назначение:
# mkswap /swap_file

Будет выведена информация о том, что пространство под swap зарезервировано:

Setting up swap space version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=38e12a0a-58ea-4bc5-b0f9-58a29a1dd8db
  1. Теперь можно подключить своппинг:
# swapon /swap_file
  1. Введём в командной строке «free -m» — проверим таким образом объём свободной памяти и swap (он должен соответствовать заданному ранее):
# free -m
 totalusedfreesharedbuff/cacheavailable
Mem:197711365217991691
Swap:2047  0  2047   

Второй способ:

# swapon --show
NAMETYPESIZEUSEDPRIO
/swap_filefile2G0B-2

Swapping добавлен и уже работает. Но нужно настроить его так, чтобы он был доступен и после перезапуска ОС.

Настраиваем запуск своппинга

Внесём изменения в файл /etc/fstab: пропишем в нём следующее:

/swap_file    none    swap    sw   0  0

Затем перезапустим систему и проверим, работает ли swap: для этого используем «free -m».

Изменение размера swap

  1. Отключим использование файла:
# swapoff /swap_file
  1. Уже известной командой «swapon —show» проверим, что swapping отключён: во время внесения изменений файл не должен быть активирован. Если без файла подкачки не хватает ОЗУ, то временно остановите часть работающих программ.
  2. Изменяем размер той же командой, что и при создании:
# dd if=/dev/zero of=/swap_file bs=1M count=2048
  1. Так как права доступа уже настроены, их менять не нужно. Но на всякий случай убедимся, что они заданы правильно:
# ls -la /swap_file

Команда должна вывести подобную строку:

-rw------- 1 root root 2147483648 May 19 13:04 /swap_file
  1. Затем по очереди выполняем команды:
# mkswap /swap_file
# swapon /swap_file
  1. Теперь, когда файл подкачки включён, убедимся, что изменения вступили в силу:
# swapon --show
# cat /etc/fstab

Читайте в блоге:

Что будем искать? Например,VPS-сервер

Мы в социальных сетях