Объясняем, что такое 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О |
/swapfile | file | 512M | 0B | -2 |
Так можно проверить и объём файла подкачки, в примере он равен 512 мегабайтам, из которых занято 0 байт. Если же подключён не файл, а логический том, то в колонке «TYРЕ» будет указано «partition».
- Ещё один способ проверки:
# free -h
Будет выведена информация об ОЗУ и swap:
tоtаl | usеd | frее | shаrеd | buff/сасhе | аvаilаblе | |
Mem: | 1.9G | 69M | 1.7G | 2.0M | 128M | 1.7G |
Swap: | 512M | 0B | 512M |
Здесь логика та же: в выводе есть строка swap, и если в ней заданы значения, отличные от нуля, — он подключен. В строке одни нули — swapping не работает.
- Также непосредственно перед добавлением своппинга убедитесь, что после его подключения на накопителе останется достаточно пространства:
# df -h
Если есть запас — можно подключать, иначе нужно либо очистить память, либо расширить её объём. Для нормальной работы системы свободным должно оставаться более 5 % всего пространства. Учитывайте это, когда будете рассчитывать размер файла подкачки.
Как создать swap-файл
- В нашем примере мы будем создавать 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», чтобы создать файл другого объёма, измените его значение.
- Также полезно установить права на файл. В случае своппинга — ограничить права всем пользователям, кроме владельца — root-пользователя (никто кроме него не сможет читать или изменять его). Введём в терминале:
# chmod 600 /swap_file
Здесь 6 — это установленные права владельца, а нули заданы для всех остальных.
- Затем убедимся, что изменения применились:
# ls -la /swap_file
Вывод:
-rw------- 1 rооt rооt 2147483648 May 25 12:39 /swap_file
- Созданный файл ещё не распознаётся ОС в качестве swap-файла. Укажем его назначение:
# mkswap /swap_file
Будет выведена информация о том, что пространство под swap зарезервировано:
Setting up swap space version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=38e12a0a-58ea-4bc5-b0f9-58a29a1dd8db
- Теперь можно подключить своппинг:
# swapon /swap_file
- Введём в командной строке «free -m» — проверим таким образом объём свободной памяти и swap (он должен соответствовать заданному ранее):
# free -m
total | used | free | shared | buff/cache | available | |
Mem: | 1977 | 113 | 65 | 2 | 1799 | 1691 |
Swap: | 2047 | 0 | 2047 |
Второй способ:
# swapon --show
NAME | TYPE | SIZE | USED | PRIO |
/swap_file | file | 2G | 0B | -2 |
Swapping добавлен и уже работает. Но нужно настроить его так, чтобы он был доступен и после перезапуска ОС.
Настраиваем запуск своппинга
Внесём изменения в файл /etc/fstab: пропишем в нём следующее:
/swap_file none swap sw 0 0
Затем перезапустим систему и проверим, работает ли swap: для этого используем «free -m».
Изменение размера swap
- Отключим использование файла:
# swapoff /swap_file
- Уже известной командой «swapon —show» проверим, что swapping отключён: во время внесения изменений файл не должен быть активирован. Если без файла подкачки не хватает ОЗУ, то временно остановите часть работающих программ.
- Изменяем размер той же командой, что и при создании:
# dd if=/dev/zero of=/swap_file bs=1M count=2048
- Так как права доступа уже настроены, их менять не нужно. Но на всякий случай убедимся, что они заданы правильно:
# ls -la /swap_file
Команда должна вывести подобную строку:
-rw------- 1 root root 2147483648 May 19 13:04 /swap_file
- Затем по очереди выполняем команды:
# mkswap /swap_file
# swapon /swap_file
- Теперь, когда файл подкачки включён, убедимся, что изменения вступили в силу:
# swapon --show
# cat /etc/fstab
Читайте в блоге: