Сегодня мы будем говорить о файле подкачки в Linux. Расскажем для чего он нужен, как создать, изменить размер или удалить. В общем, все, что вам может понадобиться при работе со swap.
В операционной системе Linux, как и в других ОС, файл подкачки нужен для страховки оперативной памяти. Когда установленный объем ОЗУ заканчивается, используется именно выделенная область из файла подкачки. Это может понадобиться в двух случаях:
- Для того чтобы при полной занятости и, как следствие, отсутствия свободной оперативной памяти, компьютер не тормозил.
- Для распределения приоритетов (важным процессам отдается физическая оперативная память, а второстепенным файл подкачки Linux).
Сам по себе swap — это отдельный логический раздел вашего диска либо просто файл на системном разделе. Чаще всего он создается именно при установке операционной системы. Но создать swap linux можно и после завершения инсталляции ОС.
В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.
Как посмотреть swap в Linux
Прежде чем приступить к процессу добавления, настройки или удаление файла подкачки, необходимо проверить его наличие. Для этого проще всего использовать приведенную ниже команду. В нашем случае она выглядит так:
free -h
Используемая команда отображает размер файла подкачки вашей операционной системы. Однако, по ее результатам мы не можем определить – это файл подкачки или раздел подкачки. Поэтому будем использовать дополнительный другую команду, чтобы посмотреть swap linux. Вводим в терминал следующее:
swapon --show
Как видите, в нашем случае под swap выделено 1.4 Гб и это файл. То есть, он находится не на отдельном разделе, а на том же диске, на котором установлена операционная система.
Если это будет отдельный логический том, то под надписью «TYPE» мы увидим слово «partition».
Если бы файл подкачки в вашей операционной системе отсутствовал, результат работы команды free —h выглядел бы примерно так:
То есть, вместо каких-либо данных о файле подкачки вы увидите нули.
Если вы удостоверились в том, что файл подкачки отсутствует, можно переходить к его созданию. Пример, приведенный ниже, будет показан с использованием операционной системы Ubuntu 18.04, но работать это должно и на других дистрибутивах Linux.
Шаг 1: Создаем swap файл
Давайте создадим файл подкачки для нашей Ubuntu. Для примера его размер составит 1 Гб. Запустите терминал и введите команду, приведенную ниже:
sudo fallocate -l 1G /swapfile
Для обеспечения безопасности файла обязательно устанавливаем на него нужные права.
sudo chmod 600 /swapfile
При этом вместо «swapfile» мы можем указать любое другое название.
Шаг 2: Создание файловой системы
Создание swap linux ещё не завершено. Теперь необходимо указать нашей операционной системе, что созданный объект должен использоваться как файл подкачки. Для этого мы будем использовать команду, приведенную ниже:
sudo mkswap /swapfile
Если все сделано верно, результат будет выглядеть так:
Шаг 3: Активируем файл подкачки
Хорошо, теперь наш Linux понимает, что это файл подкачки, но этого недостаточно. Нам также необходимо включить SWAP:
sudo swapon /swapfile
Давайте проверим, все ли мы сделали правильно:
swapon --show
Отлично, операционная система распознала наш файл подкачки и начала его использовать. Мы видим тип в поле TYPE и размер в поле SIZE.
Шаг 4. Сохранение изменений после перезагрузки
Все операции, которые мы предприняли выше, временны. Как только компьютер будет перезагружен, они отменятся. Для того чтобы сделать изменения постоянными, нам необходимо дописать кое-какую информацию в /etc/fstab. Для этого поступаем так:
Прежде чем начать работать с файлом, о котором мы говорим, необходимо обязательно создать его резервную копию:
sudo cp /etc/fstab /etc/fstab.back
После этого можно переходить непосредственно к добавлению нужных нам данных. Нам надо добавить в файл такую строчку:
/swapfile none swap sw 0 0
Это реализуется через текстовый редактор, запущенный с правами суперпользователя, либо при помощи введенной в терминал команды:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Готово. Изменения сохранены и файл подкачки не сбросится после перезагрузки операционной системы.
Настройка swappiness
Дальше будет рассмотрена настройка swap linux. У файла подкачки существуют параметры, которые сообщают ОС, как часто его нужно использовать. Это явление называется «свопингом» и может иметь значение в пределах 0 — 100. Если это значение ближе к 100, ядро будет перемещать в раздел подкачки больше информации чтобы освободить память. При значениях ближе к нулю, система будет использовать подкачку только при крайней необходимости.
К примеру, в версии Ubuntu Linux для рабочего стола устанавливается параметр 60, а в серверных редакциях операционной системы — 1. Для того чтобы проверить, какой параметр используется в нашей ОС, вводим в терминал такую команду:
cat /proc/sys/vm/swappiness
Как видите, в нашем случае «свопинг» установлен как 60. Если же вы хотите поменять swappiness, можете воспользоваться оператором, цифра в конце которого и будет новым значением:
sudo sysctl vm.swappiness=25
Как и в случае с конфигурацией файла подкачки, данный параметр изначально будет временным и обнулится при следующей перезагрузке. Для того чтобы сделать его постоянным, в самом конце файла /etc/sysctl.conf записываем значение vm.swappiness=25.
vi /etc/sysctl.conf
vm.swappiness=25
Для этого можно воспользоваться, например, текстовым редактором, запущенным с администраторскими полномочиями.
Размер swap файла в Linux
Существует сразу несколько вариантов, позволяющих увеличить файл подкачки linux или уменьшить его. Однако, прежде чем их рассмотреть, необходимо напомнить об одном очень важном моменте:
Когда вы полностью отключаете файл подкачки, ваша операционная система использует только ОЗУ и в случае ее нехватки это может привести к полной остановке работы компьютера. Система просто зависнет.
Для того чтобы этого не произошло, в тот момент, когда мы удаляем или изменяем основной файл подкачки, необходимо создать второй, временный swap. Если вы это сделали или уверены в том, что имеющейся оперативной памяти хватит, можно переходить непосредственно к процессу изменения размера файла подкачки. Для этого давайте сначала отключим его:
sudo swapoff /swapfile
Вторым этапом меняем размер файла подкачки, воспользовавшись командой, приведенной ниже. При этом размер вашего swap файла нужно указать вместо параметра 2G (2 гигабайта):
sudo fallocate -l 2G /swapfile
Теперь форматируем полученный файл в файловую систему swap:
sudo mkswap /swapfile
А затем включаем его обратно:
sudo swapon /swapfile
При этом операционная система Linux позволяет использовать сразу несколько swap.
Как удалить файл подкачки в Linux
Если по каким-то причинам файл подкачки вам не нужен, можете удалить его. Для этого сначала надо отключить swap linux:
sudo swapoff /swapfile
А потом удаляем:
sudo rm /swapfile
Не забудьте установить права на вновь созданный файл подкачки так, как мы описывали это выше.
В заключение
Надеемся теперь концепция файла подкачки в Linux ясна вам на 100%. Можете переходить к практике и проверять наличие swap на вашем компьютере или ноутбуке, его настройке, созданию или даже удалению. Если в результате у вас останутся какие-то вопросы, предложения или замечания, можете задать их нам, воспользовавшись формой комментирования ниже.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Содержание
SWAP – один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище (отдельный раздел или файл), освобождая ОЗУ для загрузки других активных фрагментов памяти.
Более подробно о механизме своппинга можно прочитать в Википедии.
Дополнительно SWAP используется при организации режима сна (hibernation или suspend to disk). При этом в SWAP сохраняется образ оперативной памяти.
Размещение
SWAP может быть размещен на разделе диска, в файле или в RAM. Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу. Однако стандартный установщик Ubuntu (до версии 17.04) не умеет создавать SWAP-файл при установке и выдает предупреждение, если SWAP-раздел не определен при разметке диска. Начиная с версии 17.04, Ubuntu предлагает по умолчанию создавать SWAP в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб). Использование SWAP-файла имеет некоторые преимущества: он не занимает отдельный раздел, его легко создать, изменить его размер или удалить.
Дополнительно при выборе размещения SWAP нужно учитывать, что не все файловые системы позволяют использовать прямую адресацию блоков SWAP-файла. Так, к примеру, нельзя использовать SWAP в файле на разделе с файловой системой btrfs(по состоянию на середину 2017).
Безопасность
При работе с секретными/зашифрованными данными часть этих данных в процессе работы либо при гибернации может оказаться в SWAP в расшифрованном виде. В таких случаях рекомендуется шифровать не только данные, но и сам SWAP. Однако нужно учитывать, что у режима сна при шифровании SWAP могут возникнуть сложности.
Размер
В Интернете можно найти множество рекомендаций по определению размера SWAP, однако универсального ответа не существует.
При определении размера SWAP следует учесть следующие аспекты:
-
Каков размер оперативной памяти?
-
Какие приложения будут использоваться?
-
Будет ли вестись работа с секретными данными?
-
Нужен ли режим сна (suspend to disk)?
В зависимости от ответов на эти вопросы рекомендации по размеру SWAP будут значительно различаться.
Для машин с незначительным объемом памяти (меньше 2 Гб) рекомендуется создавать SWAP размером от 1,5 до 2-х размеров оперативной памяти. И стоит попробовать изменять vm.swappiness, но лучше поискать возможность увеличить объем оперативной памяти.
Для машин с объемом памяти 3-4 Гб нужно решить, будет ли использоваться suspend to disk. Если да, то нужно создавать SWAP размером на 10-15% больше размера оперативной памяти. Если же suspend to disk использоваться не будет, то можно создать SWAP небольшого размера (размером от половины до 1 объема оперативной памяти). Можно не создавать SWAP при установке системы, а при необходимости добавить его позже как файл.
На компьютерах с объемами оперативной памяти более 6Gb имеет смысл создать SWAP размером в половину от объема оперативной памяти. При этом, если вы хотите использовать гибернацию, следует оценить загрузку оперативной памяти в процессе работы и задать величину SWAP, исходя из этого. К примеру, если объем оперативной памяти составляет 16 ГБ, а рабочая загрузка не превышает в среднем 5-6 ГБ, величины SWAP-раздела в 8 ГБ вам хватит для гибернации. При таком подходе следует помнить, что при использовании ресурсоёмких программ (рендеринг изображения, компиляция огромных проектов и т.п.) оперативная память может заполняться полностью, а SWAP — использоваться в качестве подкачки. В таких ситуациях размер SWAP нужно выбирать индивидуально.
При работе с секретными (зашифрованными) данными стоит либо шифровать SWAP, либо рассмотреть вариант с отказом от SWAP вовсе (зависит от размера оперативной памяти). Стоит также рассмотреть вариант с шифрованием всего диска.
Создание SWAP на разделе диска
Разобравшись с требованиями к SWAP, можно приступить к его созданию или изменению.
Ядро Linux может работать с несколькими частями SWAP. Поэтому если вы решили, что созданного при установке системы SWAP-раздела недостаточно, то стоит создать дополнительный SWAP (выделить место под раздел или файл). Однако нужно учитывать, что для гибернации нужен непрерывный блок SWAP, который должен иметь размер больший, чем оперативная память.
К примеру, у нас есть раздел /dev/sdc2 (ваше имя раздела может отличаться). Создадим на нем необходимую структуру данных для работы SWAP:
sudo mkswap /dev/sdc2
Подключим раздел как SWAP:
sudo swapon /dev/sdc2
Проверить результат можно, посмотрев на вывод команды
sudo swapon -s
Сделаем автомонтирование SWAP-раздела при запуске системы. Узнаем UUID раздела:
sudo blkid
Теперь пропишем строку в /etc/fstab
echo "UUID=<UUID swap-раздела> swap swap defaults,pri=<Приоритет (от 0 до 32767)> 0 0"| sudo tee -a /etc/fstab
SWAP с динамически изменяемым размером
Если вы не хотите думать об объеме SWAP, имеет смысл воспользоваться утилитой swapspace (динамический менеджер подкачки). Эта утилита работает в фоновом режиме и динамически управляет подкачкой. При необходимости swapspace автоматически создаёт дополнительные файлы подкачки требуемого размера. Неиспользуемые файлы подкачки удаляются и не занимают место.
Однако, если вы работаете с секретными документами, не забудьте указать swapspace создавать SWAP-файлы на зашифрованном диске или внутри шифрованного контейнера 1).
Hibernate (suspend to disk, гибернация)
О настройке режима гибернации можно прочитать здесь.
Параметр vm.swappiness
Основной параметр, влияющий на работу системы со swap, — это vm.swappiness. Очень приблизительно этот параметр можно определить так: он задает процент свободной оперативной памяти, при котором начинается использование подкачки. Более точное определение смысла этой переменной можно уяснить из описания которое было дано в рассылке kernel.org — статья на английском.
Без особой необходимости трогать его не рекомендуется.
Скорректировать значение, применяемое при загрузке системы, можно, указав в файле /etc/sysctl.conf значение vm.swappiness. Пример:
echo "vm.swappiness=30"| sudo tee -a /etc/sysctl.conf
Мгновенно применить эту настройку можно с помощью следующей команды:
# sysctl -f
Актуальное значение, используемое ядром в настоящее время, можно просмотреть или изменить в /proc/sys/vm/swappiness.
# cat /proc/sys/vm/swappiness # echo 10 > /proc/sys/vm/swappiness
Изменения в /proc/sys/vm/swappiness будут сброшены при следующей перезагрузке.
Значение vm.swappiness по умолчанию — 60.
Какое значение выбрать?
Маленькое значение vm.swappiness (минимальное значение: 0) будет заставлять ядро использовать больше оперативной памяти под память процессов (в ущерб буферам и кэшам), тогда как большое значение (максимальное значение: 100) будет выделять больше памяти под кэши и буфера (в ущерб памяти для процессов).
Нужно понимать: ни одно значение vm.swappiness не увеличит волшебным образом производительность компьютера многократно. Урезаете кеши — понижаете отзывчивость системы при работе с файлами, урезаете память процессов — снижаете отзывчивость системы при переключении задач.
Нужное вам значение, скорее всего, стоит подбирать экспериментально.
Смотрите также
Ссылки
Была проблема, у меня на Debian была создана подкачка (swap) в 1Гб, но как оказалось, мне этого мало и нужно увеличить хотя бы до 3-хГб. Данная тема «Увеличить SWAP на Ubuntu/Debian/Mint», как раз затронет этот вопрос.
Раздел подкачки является независимым разделом жесткого диска, используемого исключительно для подкачки. Swap представляет собой специальный файл в файловой системе, которая находится среди вашей системы и файлов данных.
1. Проверим сколько у нас выделено Swap-а:
# htop
Если не установлен, то установите или используйте аналог программы, под названием top. Чтобы установить используйте команду:
# sudo apt-get install htop
И смотрим сколько у нас выделено памяти:
используем утилиту htop для вывода swap
Собственно, у меня ~1Гб, и как сказал ранее, я хочу его увеличить.
Так же, можно заюзать утилиту free и узнать какой swap используется:
root@debian:~# free -m total used free shared buffers cached Mem: 986 893 93 15 24 312 -/+ buffers/cache: 556 430 Swap: 879 19 860 root@debian:~#
Как видно по утилитам, данные совпадают.
Если знаете что на сервере имеется свап, но не помните какой размер, так же имеется утилита которая покажет эти данные:
root@debian:~# swapon -s Filename Type Size Used Priority /dev/sda5 partition 901116 19664 -1 root@debian:~#
Выбираем какой способ подойдет вам лучше и используем.
2. Создание раздела подкачки.
Проверяем где и сколько имеется свободного места, можно выполнить команду:
# df -h
Расскажу несколько способов создать данный файл. Создадим папку в которую попозже мы примонтируем файл подкачки:
# mkdir /media/swap
— СПОСОБ-1: Использовать утилиту dd.
В созданной папке будет храниться файл подкачки. Следующим действием, создаем файл:
# sudo dd if=/dev/zero of=/media/swap/swapfile.img bs=2048 count=1M
увеличиваем раздел подкачки командой dd
Ждем определенное время, пока оно выполнится.
PS: Возможно прийдется создать сам файл:
# touch /media/swap/swapfile.img
Если запускаете от суперпользователя, то не нужно ничего создавать, утилита dd сделает все за вас.
— СПОСОБ-2: Использовать утилиту fallocate.
Данная утилита создаст файл мгновенно и тем самым экономит ваше время:
# fallocate -l 2G /media/swap/swapfile.img
Мне больше по душе — 2-й способ с использованием утилиты fallocate.a
3. Создание swap-а
Для начала, выставляем нужные права на файл:
$ chmod 600 /media/swap/swapfile.img
Делается это командой:
$ sudo mkswap /media/swap/swapfile.img
Создание образа swap командой mkswap
4. Добавление swap в fstab.
Это нужно сделать чтобы каждый раз при старте мой ОС, автоматически монтировался наш фал подкачки, который мы создали, для этого нужно выполнить команду:
# sudo vim /etc/fstab
И добавляем следующую строчку:
[...] # mount swap image for my Debian /media/swap/swapfile.img swap swap sw 0 0 [...]
Или можно:
/media/swap/swapfile.img none swap sw 0 0
5. Активируем (включаем) нас swap.
Чтобы это сделать, стоит выполнить команду:
# swapon /media/swap/swapfile.img
6. Проверка.
Необходимо убедится что у нас все нормально работает, сейчас мы это и проверим:
# cat /proc/swaps
вывод количества swap
Собственно, видно что все работает нормально, но еще сейчас запустим утилиту htop и посмотрим что показывает она:
# htop
вывод количества swap с помощью программы htop
7. Взаимодействие SWAP с ОС. Проверика и настройка.
Есть несколько вариантов, которые вы можете настроить для более лучшей производительности вашей системы при работе со свопом.
Параметр swappiness определяет, как часто ваша система обменивается данными из оперативной памяти в подкачку. Этот параметр имеет диапазон от 0-100 и представляет собой процент.
При значениях, близких к нулю, ядро не обменяется данными на диск, если это абсолютно необходимо. Помните, что взаимодействие с файлом подкачки являются «дорогими» в том плане, что такие операции занимают гораздо больше времени, чем взаимодействие с оперативной памятью и тем самым могут привести к значительному снижению производительности.
Значения, которые находятся ближе к 100%, ядро будет пытаться поместить больше данных в своп и освободить RAM.
Чтобы проверить текущее значение swappiness, выполните:
root@debian:~# cat /proc/sys/vm/swappiness 60 root@debian:~#
Т.к я использую виртуальную машину для тестов — установка swappiness в 60 — дает не плохое значение, но для VPS желательно приблизить данный параметр в 0. И чтобы изменить swappiness используйте команду SYSCTL.
Например, чтобы установить swappiness в 10, выполним:
root@debian:~# sysctl vm.swappiness=10 vm.swappiness = 10 root@debian:~#
Этот параметр не сохранится до следующей перезагрузки и чтобы он применялся при каждом запуски ОС автоматически, нужно изменить (добавив строку в) файл /etc/sysctl.conf:
# vim /etc/sysctl.conf
В самом низу файла, прописываем:
vm.swappiness=10
Сохраняем и закрываем файл.
Другой связанной с этим значением параметр которое вы можете захотеть изменить — vfs_cache_pressure, который настраивает, как много система будет выбирать кэш иноде и dentry по сравнению с другими данными.В основном, это доступ к данным о файловой системе и чтобы посмотреть текущее значение, выполните:
root@debian:~# cat /proc/sys/vm/vfs_cache_pressure 100 root@debian:~#
Параметр установлен в 100 и тем самым система удаляет информацию инодам из кэша очень быстро. Но если захотите уменьшить, выполните:
root@debian:~# sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50 root@debian:~#
Это будет работать только до завершения вашей сессии и вы можем изменить его в файле ( как и ранее):
$ sudo vim /etc/sysctl.conf
В самом низу происываем строку, которая определяет ваше новое значение:
vm.vfs_cache_pressure = 50
Видно, что и тут нормально все работает. На этом моя статья «Увеличить SWAP на Ubuntu/Debian/Mint» на сайте http://linux-notes.org завершена.
Swap — механизм виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище, освобождая ОЗУ для загрузки активных фрагментов памяти.
Просмотр текущих сведений о swap
Перед осуществлением каких-либо действий со swap выполните следующую команду, чтобы узнать его текущие тип и расположение:
swapon -s
Вывод команды может быть, например, следующим:
Filename Type Size Used Priority
Такой «пустой» вывод означает, что swap в системе отсутствует. Выполнение шагов, описанных в данной инструкции, позволит вам его создать.
Также вывод может содержать данные, подобные этим:
Filename Type Size Used Priority
/dev/xvda5 partition 1046524 4568 -1
Это означает, что для swap используется раздел xvda5 вашего диска. Если вы хотите увеличить размер swap, с помощью данной инструкции вы сможете создать swap-файл, и общий размер swap в системе будет суммироваться с текущим разделом.
Еще один вариант вывода команды:
Filename Type Size Used Priority
/swap file 1048572 0 -1
Такой вывод означает, что для swap используется файл /swap. Вы можете изменить его размер с помощью данной инструкции (при этом можно не выполнять пункт 6, т.к. запись о swap в файле /etc/fstab уже существует).
Создание и изменение swap
Для изменения размера swap или для создания swap-файла при его отсутствии выполните следующие действия.
1. В первую очередь отключите swap:
swapoff -a
2. Далее измените размер swap-файла. Если файл отсутствует в системе, эта же команда позволит его создать:
sudo dd if=/dev/zero of=/swap bs=1M count=1024
Укажите в качестве count необходимый размер swap, например, 512 или 1024 или 4096.
3. Подготовьте swap-файл:
chmod 600 /swap && mkswap /swap
4. Включите swap:
swapon /swap
5. Проверьте результат командой swapon -s:
swapon -s
Filename Type Size Used Priority
/swap file 1048572 0 -1
6. Для того, чтобы внесенные изменения были применены при следующей загрузке сервера, добавьте информацию о swap в файл /etc/fstab:
echo "/swap swap swap defaults 0 0"| sudo tee -a /etc/fstab
Contents
- Introduction
- What is swap?
- Why do I need swap?
- How much swap do I need?
- How do I add more swap?
- How do I add or modify a swap partition?
- How do I add a swap file?
- What is swappiness and how do I change it?
- What is the priority of swap containers?
- Should I reinstall with more swap?
- Why is my swap not being used?
- Empty Swap
Introduction
-
This FAQ is aimed at Linux novices.
- People always wonder how much swap they should create at install time, or after installing they may think, «have I made a large enough swap? Should I reinstall with a larger swap?»
- This FAQ will tell you how much swap you need and how to add more swap after installation.
- You will be given very simple answers (to prevent losing too much time reading this FAQ) and some explanations that may help you form your own opinion.
What is swap?
Swap space is the area on a hard disk. It is a part of your machine’s Virtual Memory, which is a combination of accessible physical memory (RAM) and the swap space. Swap holds memory pages that are temporarily inactive. Swap space is used when your operating system decides that it needs physical memory for active processes and the amount of available (unused) physical memory is insufficient. When this happens, inactive pages from the physical memory are then moved into the swap space, freeing up that physical memory for other uses. Note that the access time for swap is slower, depending on the speed of the hard drive. Do not consider it to be a complete replacement for the physical memory. Swap space can be a dedicated swap partition (recommended), a swap file, or a combination of swap partitions and swap file(s).
Why do I need swap?
Memory consuming programs Sometimes, a large program (like LibreOffice, Neverwinter Nights, or a video editor) make the entire system need extra memory. A significant number of the pages used by these large programs during its startup may only be used for initialization and then never used again. The system can swap out those pages and free the memory for other programs or even for the disk cache. In these cases, swap will be used to help the system handle any extra load.
Hibernation (suspend-to-disk) The hibernation feature (suspend-to-disk) writes out the contents of RAM to the swap partition before turning off the machine. Therefore, your swap partition should be at least as big as your RAM size. Although the latest versions of Ubuntu don’t support hibernation OOTB you may configure your system to allow Hibernation. In both alternatives (PM-UTILS or SYSTEMD) you may use a partition or a file.
Unforeseeable Circumstances Unforeseeable events can and will happen (a program going crazy, some action needing much more space than you thought, or any other unpredictable combination of events). In these cases, swap can give you an extra delay to figure out what happened, or to finish what you are working on.
Optimizing memory usage Since mechanical hard drives are considerably slower than RAM (SSD — Solid State Drive — storage is not as slow as physical drives, but still slower than RAM), when you need a file (be it a data file like a video, executables like Firefox, or libraries), the Linux kernel reads the file into RAM and keeps it there, so that the next time you need it, it is already in RAM and data access is much faster. The portions of RAM that accelerate disk read are called «cached memory.» You will notice that they make a huge difference in terms of responsiveness. The Linux kernel automatically moves RAM reserved by programs—but not really used—into swap, so that it can serve the better purpose of extending cached memory.
Optimizing Swap performance Because swap space uses a disk device, this can cause performance issues in any system that uses swap space significantly because the system itself may also be using the same disk device at the same time that it is required for swap operations. One way to reduce this problem is to have swap space on a different physical drive so that the competition for that resource is either reduced or eliminated.
How much swap do I need?
For less than 1GB of physical memory (RAM), it’s highly recommended that the swap space should, as a base minimum, be equal to the amount of RAM. Also, it’s recommended that the swap space is maximum twice the amount of RAM depending upon the amount of hard disk space available for the system because of diminishing returns.
For more modern systems (>1GB), your swap space should be at a minimum be equal to your physical memory (RAM) size «if you use hibernation», otherwise you need a minimum of round(sqrt(RAM)) and a maximum of twice the amount of RAM. The only downside to having more swap space than you will actually use, is the disk space you will be reserving for it.
The «diminishing returns» means that if you need more swap space than twice your RAM size, you’d better add more RAM as Hard Disk Drive (HDD) access is about 10³ slower then RAM access, so something that would take 1 second, suddenly takes more then 15 minutes! And still more than a minute on a fast Solid State Drive (SSD)…
Example Scenarios
(last 3 columns denote swap space)
RAM No hibernation With Hibernation Maximum 256MB 256MB 512MB 512MB 512MB 512MB 1024MB 1024MB 1024MB 1024MB 2048MB 2048MB RAM No hibernation With Hibernation Maximum 1GB 1GB 2GB 2GB 2GB 1GB 3GB 4GB 3GB 2GB 5GB 6GB 4GB 2GB 6GB 8GB 5GB 2GB 7GB 10GB 6GB 2GB 8GB 12GB 8GB 3GB 11GB 16GB 12GB 3GB 15GB 24GB 16GB 4GB 20GB 32GB 24GB 5GB 29GB 48GB 32GB 6GB 38GB 64GB 64GB 8GB 72GB 128GB 128GB 11GB 139GB 256GB 256GB 16GB 272GB 512GB 512GB 23GB 535GB 1TB 1TB 32GB 1056GB 2TB 2TB 46GB 2094GB 4TB 4TB 64GB 4160GB 8TB 8TB 91GB 8283GB 16TB
How do I add more swap?
Swap is generally associated with a swap partition, perhaps because the user is prompted to create a swap partition at the time of installation. In fact, any file can be used as a swapping device, be it a partition or a conventional file. Swap can be added by increasing the size of the swap partition or by adding a swap file. Keep in mind that when creating a swap file that it may not necessarily be using contiguous disk blocks (as a swap partition will), and this could have a negative impact on performance as disk access times may be longer, and the more your system uses swap, the worse it will be. The Linux kernel also accesses swap disk block IO directly bypassing all caching, metadata and filesystem code, so a swap file should have no ill effect on the stability of your base filesystem. Since kernel 2.6.29 the swap system has automatically supported TRIM capable devices like SSDs.
The advantages of a swap file are many, but it is problematic for using the default swsusp hibernation method for powerless sleep. The best solution for maintaining hibernate capability after adding RAM is to increase the size of the swap partition.
How do I add or modify a swap partition?
Process to Increase Size of Swap Partition and use it for Hibernation
- Creating the swap partition
- Activating the swap partition
- Making the new swap partition work for hibernate (optional)
Creating the swap partition
- Boot to Ubuntu install CD and choose the option to run Ubuntu now
-
Go to system -> GParted Partition Editor
- Delete the swap partition and, if there is nothing else in it, the extended partition that holds it. (If by some miracle you’re able to resize your swap partition from here, I imagine your life will be a lot easier than mine.)
- Decrease the size of your primary partition by the amount you want your new swap to be (I made mine 2x RAM + 500MB just to be safe). The easiest way to do this is to fill in the amount of space you want swap to be in the «free space following» field
- In the free space that has now been created, choose new, type linux-swap and you can name the partition «swap» if you like
- Hit the *Apply* button (should be a check mark) to write the changes to disk
- When done, reboot back into Ubuntu
Activating the swap partition
(If your swap is on your primary hard drive, you don’t need to do anything here.) Now you need to find what partition your swap is on and what its UUID is. UUID?! you say? Well that’s the Universally Unique IDentifier for the partition so you can reference it even if it’s on a different mount point from boot-to-boot due to adding disks, etc.
-
Pull up a terminal and run gksu gparted & and enter your root password. The & lets this process run while still giving you access to the command line.
- Right-click on your swap partition and choose *Information*. You should see the **Path** and **UUID** listed there. Keep this open for further reference.
-
Run gksu gedit /etc/fstab & and look for the line that has *swap* in it. It should be the third column, separated by spaces or tabs. You can either use the path or the UUID to tell Linux where to find your swap partition. I recommend UUID because it’ll stay constant even if you move the partition around or the disk somehow becomes sdb instead of sda or something like that. Make the appropriate edits and save the file. Your line should look something like this if you used UUID (with your UUID instead, of course):
-
UUID=41e86209-3802-424b-9a9d-d7683142dab7 none swap sw 0 0
-
or this if you used path: /dev/sda2 none swap sw 0 0
-
- Save the file.
-
Enable the new swap partition with this command.
sudo swapon --all
OR
$ sudo swapon --all --verbose swapon on /dev/sda2 swapon: /dev/sda2: found swap signature: version 1, page-size 4, same byte order swapon: /dev/sda2: pagesize=4096, swapsize=2147483648, devsize=2147483648
-
Confirm that the swap partition exists.
$ cat /proc/swaps Filename Type Size Used Priority /dev/sda2 partition 2097148 0 -1
- Reboot to make sure the new swap gets activated properly at startup
Making the swap partition work for hibernate (optional)
‘INFO: This will not work for 12.04, resume from hibernate work differently in 12.04.‘
-
Pull up a Terminal again and run cat /proc/swaps and hopefully you see the path to your swap partition listed there. If not chances are something went wrong in the steps above. Here’s my output:
Filename Type Size Used Priority /dev/sda2 partition 2676732 73380 -1
-
gksu gedit /etc/default/grub & to pull up the boot loader configuration
-
Look for the line GRUB_CMDLINE_LINUX=»» and make sure it looks like this (using your UUID of course) GRUB_CMDLINE_LINUX=»resume=UUID=41e86209-3802-424b-9a9d-d7683142dab7″ and save the file
-
sudo update-grub and wait for it to finish
-
gksu gedit /etc/initramfs-tools/conf.d/resume & and make sure its contents are resume=UUID=41e86209-3802-424b-9a9d-d7683142dab7 (with your UUID of course in place of mine). Save the file!
-
sudo update-initramfs -u
- Reboot!
Now you should be able to hibernate and resume!
How do I add a swap file?
Note: btrfs does not support swap files at the moment. See man swapon. and btrfs Faq
Create the Swap File:
We will create a 1 GiB file (/mnt/1GiB.swap) to use as swap:
sudo dd if=/dev/zero of=/mnt/1GiB.swap bs=1024 count=1048576
We need to set the swap file permissions to 600 to prevent other users from being able to read potentially sensitive information from the swap file.
sudo chmod 600 /mnt/1GiB.swap
Format the file as swap:
sudo mkswap /mnt/1GiB.swap
Enable use of Swap File
sudo swapon /mnt/1GiB.swap
The additional swap is now available and verified with: cat /proc/swaps
Enable Swap File at Bootup
Add the swap file details to /etc/fstab so it will be available at bootup:
echo '/mnt/1GiB.swap swap swap defaults 0 0' | sudo tee -a /etc/fstab
Example of making a swap file
This is an example of making and using a swap file on a computer with no swap partition.
$ sudo fallocate -l 1g /mnt/1GiB.swap $ sudo chmod 600 /mnt/1GiB.swap $ sudo mkswap /mnt/1GiB.swap Setting up swapspace version 1, size = 1048576 kB $ sudo swapon /mnt/1GiB.swap $ cat /proc/swaps Filename Type Size Used Priority /home/swapfile file 1048576 1048576 -1 $ echo '/mnt/4GiB.swap swap swap defaults 0 0' | sudo tee -a /etc/fstab $ reboot $ free -h total used free shared buff/cache available Mem: 15G 9.3G 454M 4.0G 5.8G 1.9G Swap: 1.0G 1.0G 0B
Disable and Remove a Swap File
Disable the swap file from the running system and the delete it:
sudo swapoff /mnt/1Gib.swap sudo rm /mnt/1Gib.swap
Remove the swap file details from fstab:
gksudo gedit /etc/fstab
Removing the swap file line
/mnt/1GiB.swap swap swap defaults 0 0
What is swappiness and how do I change it?
The swappiness parameter controls the tendency of the kernel to move processes out of physical memory and onto the swap disk. Because disks are much slower than RAM, this can lead to slower response times for system and applications if processes are too aggressively moved out of memory.
- swappiness can have a value of between 0 and 100
- swappiness=0 tells the kernel to avoid swapping processes out of physical memory for as long as possible
- swappiness=100 tells the kernel to aggressively swap processes out of physical memory and move them to swap cache
The default setting in Ubuntu is swappiness=60. Reducing the default value of swappiness will probably improve overall performance for a typical Ubuntu desktop installation. A value of swappiness=10 is recommended, but feel free to experiment. Note: Ubuntu server installations have different performance requirements to desktop systems, and the default value of 60 is likely more suitable.
To check the swappiness value
cat /proc/sys/vm/swappiness
To change the swappiness value A temporary change (lost on reboot) with a swappiness value of 10 can be made with
sudo sysctl vm.swappiness=10
To make a change permanent, edit the configuration file with your favorite editor:
gksudo gedit /etc/sysctl.conf
Search for vm.swappiness and change its value as desired. If vm.swappiness does not exist, add it to the end of the file like so:
vm.swappiness=10
Save the file and reboot.
What is the priority of swap containers?
The Linux kernel assigns priorities to all swap containers. To see the priorities that the Linux Kernel assigns to all the swap containers use this command.
cat /proc/swaps
Priorities can be changed by using the swapon command or defined in /etc/fstab. Consult the manual page of swapon for more info
man swapon
Should I reinstall with more swap?
Definitely not. With the 2.6 kernel, «a swap file is just as fast as a swap partition.» (Wikipedia:Paging, LKML).
Why is my swap not being used?
My swap is not being used! When I issue the free command, it shows something like this:
tom@tom:~$ free total used free shared buffers cached Mem: 515980 448664 67316 0 17872 246348 -/+ buffers/cache: 184444 331536 Swap: 674688 0 674688
Note: This regards mainly swap on hard disk partitions, but it could help anyway. In these examples /dev/hda8 is considered as swap.
Swap may not be needed
Start many memory consuming applications (e.g. Gimp, web browsers, LibreOffice etc) and then issue the free command again. Is swap being used now?
Ubuntu Desktop uses Swap to Hibernate (PC off, no power needed, program states saved). If Hibernation is important to you, have more swap space than ram + swap overflow.
Is there a swap partition at all?
Use this command to see all partitions
sudo parted --list
You should be able to see something like this in the output
5 236GB 256GB 20.0GB linux-swap(v1)
If not, you either need to create a swapfile or create a swap partition. To create a swap partition you can
- boot from your Ubuntu install CD, create a swap partition out of the free space on your hard disk and then interrupt your installation.
-
use Cfdisk.
Enabling a swap partition
In case you do have a swap partition, there are several ways of enabling it.
- Use the following command
cat /etc/fstab
- Ensure that there is a line link below. This enables swap on boot.
/dev/sdb5 none swap sw 0 0
- Then disable all swap, recreate it, then re-enable it with the following commands.
sudo swapoff -a sudo /sbin/mkswap /dev/sdb5 sudo swapon -a
Empty Swap
Even if you have lots of RAM and even if you have a low swappiness value, it is possible that your computer swaps. This can hurt the multitasking performance of your desktop system.
You can use the following script to get the swap manually back into RAM:
- Place the script e.g. /usr/local/sbin:
gksudo gedit /usr/local/sbin/swap2ram.sh
- Copy-paste the script into the file:
-
#!/bin/sh mem=$(LC_ALL=C free | awk '/Mem:/ {print $4}') swap=$(LC_ALL=C free | awk '/Swap:/ {print $3}') if [ $mem -lt $swap ]; then echo "ERROR: not enough RAM to write swap back, nothing done" >&2 exit 1 fi swapoff -a && swapon -a
- Save and close gedit
- Make the script executable:
sudo chmod +x /usr/local/sbin/swap2ram.sh
- Execute:
sudo /usr/local/sbin/swap2ram.sh
CategoryFaq
Оперативной памяти много не бывает. Виртуальная память предназначена для рационального распределения оперативной памяти между пользовательскими и системными процессами. Проще говоря, чтобы не расходовать оперативную память на хранение статичной информации, выделяют некоторую область жесткого диска для ее размещения.
Общая информация
В системе Линукс для размещения виртуальной памяти можно выделить отдельный раздел жесткого диска или использовать обычный файл. Линукс позволяет комбинировать эти два способа. По умолчанию в Unix системах применяется SWAP раздел. Производительность отдельного SWAP раздела жесткого диска выше, чем производительность виртуальной памяти размещенной в файле. Единственным минусом SWAP раздела является сложность его редактирования.
Если Вы до эксплуатации сервера знаете какой емкости нужна SWAP область, то обязательно используйте отдельный раздел жесткого диска. Если нагрузка на SWAP область пока неизвестна, то лучше разместить виртуальную память в файле, после чего определив потребности системы, создать раздел нужного размера.
Система Linux позволяет одновременно использовать несколько SWAP разделов и SWAP файлов. Это позволяет более гибко подойти к вопросу расширения виртуальной памяти в случае нехватке размера SWAP области на сервере. Чаще всего, на работающем сервере с существующим SWAP разделом выясняется, что текущего размера виртуальной памяти уже не хватает. Целесообразнее добавить тестовый файл подкачки для определения нагрузки на SWAP область, а уже после увеличить размер раздела.
Создание, редактирование и удаление любых разделов из под загруженной в данный момент операционной системы не безопасно, поэтому создание SWAP раздела, вместо SWAP файла, делается только с использованием LiveCD. Статья на тему безопасного редактирования разделов будет написана в будущее время.
В системе Windows виртуальная память размещена только в отдельном файле — pagefile.sys (для Windows 2000 и выше) и win386.swp (для Windows 9x).
Для любой операционной системы, если используется спящий режим (Hebernation), размер виртуальной памяти следует делать не меньше объема оперативной памяти. В общих случаях наиболее эффективно использовать размер виртуальной памяти кратный 4 (1024 Мб, 2048 Мб и т.д.), так как ядро системы производит обмен страницами с памятью по 4 Кб в каждой. Размер виртуальной памяти легче посчитать от объема оперативной памяти *2, *3. Область подкачки стоит размещать на самом быстром жестком диске ближе к началу.
Хочу обратить Ваше внимани, что приведенные ниже инструкции касается только изменения размера ФАЙЛА ВИРТУАЛЬНОЙ ПАМЯТИ, а не изменение размера отдельной директории SWAP.
Ниже приведены пошаговые инструкции, которые позволят создать, изменить и удалить файл SWAP.
Создание SWAP файла
- Создаем файл необходимого размера для swap области, где /home/swap-tmp — это имя и путь файла, а count=1024K его размерв, в данном случае — 1024 Мб):
sudo dd if=/dev/zero of=/home/swap-tmp bs=1024 count=1024K
На экране получим:
[user@localhost user]#sudo dd if=/dev/zero of=/home/swap-tmp bs=1024 count=1024K
1048576+0 записей считано
1048576+0 записей написано
скопировано 1073741824 байта (1,1 GB), 137,509 c, 7,8 MB/c - Далее производим запись в начало файла системную информацию, которая будет используется ядром системы для работы с файлом подкачки:
sudo mkswap /home/swap-tmp
После окончания операции на экране появится:
[user@localhost user]# sudo mkswap /home/swap-tmp
Устанавливается пространство для свопинга версии 1, размер = 1073737 кБ
без метки, UUID=54c60583-e61a-483a-a15c-2f1be966db85 - Следующим шагом активируем только что созданный SWAP файл:
sudo swapon /home/swap-tmp
Для просмотра результата просматриваем все объекты, которые используются для размещения виртуальной памяти:
cat /proc/swaps
- После перезагрузки системы SWAP файл необходимо активировать снова или добавить строчка для автоматической загрузки в файл fstab.
Редактировать файл fstab можно самостоятельно или командой, которая добавляет в конец файла fstab строку /home/swap-tmp swap swap defaults 0 0:
echo «/home/swap-tmp swap swap defaults 0 0» | sudo tee -a /etc/fstab
Тоже самое действие но добовление через UUID, который присваивается в пункте 2:
echo «UUID=54c60583-e61a-483a-a15c-2f1be966db85 swap swap defaults 0 0» | sudo tee -a /etc/fstab
Удаление SWAP файла
- Просматриваем все объекты, которые используются для размещения виртуальной памяти
cat /proc/swaps
Выбираем ненужный.
- Деактивируем, для примера, созданный выше SWAP файл:
sudo swapoff /home/swap-tmp
- Удаляем SWAP файл:
sudo rm /home/swap-tmp
Если Вы раньше добавляли строчку в fstab, для автоматической загрузки SWAP файла при старте операционной системы, то следует ее удалить. Выводим файл /etc/fstab для редактирования на экран:
sudo gedit /etc/fstab
В нем удаляем строчку монтирования SWAP файла.
Редактирование размера SWAP файла
Действия по редактирование объема SWAP файла сводятся к удалению уже созданного файла SWAP и созданию нового файла требуемого размера. То есть нужно сначало сделать пункт 3, а после пункт 2.
Комментарии (12)
Объём оперативной памяти в компьютере ограничен. Чаще всего из финансовых соображений, хотя и чисто технически в конкретную материнскую плату не установишь ОП больше, чем предусмотрено её спецификациями. А раз так, то ситуации, когда возникает нехватка памяти, нередки, особенно для многозадачных операционных систем. В их число входит и Linux, и хотя она считается менее требовательной к ресурсам ПК, идеальной её назвать тоже нельзя. Дефицит ОЗУ решается разными способами. Одним из самых оптимальных из них считается использование файла или раздела на диске, где временно хранятся данные, которые извлекаются в физическую память по мере необходимости.
Что такое swap
В линуксоподобных ОС под свопом понимают механизм организации виртуальной памяти, при которой часть хранимых в ОЗУ данных (как правило, редко используемых), перемещается на временное хранение в специальный раздел или файл на жёстком или твердотельном диске.
Весь объём физической памяти в Linux разбивается на страницы. По мере необходимости содержимое отдельных страниц перемещается на выделенный раздел диска, именуемый swap space или на отдельный файл (аналог файла подкачки в Windows). Сама процедура освобождения ОП называется свопингом, а общий размер физической и swap-памяти – объёмом доступной виртуальной памяти.
Для чего нужен swap
Многозадачность не означает одновременное открытие многих программ. Даже если мы запустим браузер, он сам по себе использует множество библиотек, каждая из которых использует свою область памяти. Каждая новая вкладка, каждый открытый документ – это всё новые и новые страницы памяти, которых в определённый момент времени может и не хватить.
И если для новой вкладки свободных страниц уже нет, операционная система вынуждена заняться освобождением памяти. А что освобождать, если все страницы заняты нужными данными или кэшем? Что используется реже. Но рано или поздно выгруженный кусочек кода понадобится, а его в памяти уже не окажется. Такая ситуация называется page fault, и ОС придётся её обрабатывать по новой. Если недостающие данные на диске не обнаружатся, процесс завершится аварийно. Если он есть, система загрузит код с диска, но для этого потребуется освободить энное количество других страниц памяти. В результате начинается процесс, называемый трэшингом, когда ОС только тем и занимается, что освобождает новые страницы, удаляя их содержимое и загружая в них недостающие данные.
Наличие swap-файла как раз и решает эту дилемму. Вместо того, чтобы просто очищать страницы памяти, система сбрасывает их содержимое на диск, который как бы расширяет объём физического ОЗУ. При этом трэшинг заменяется на однократную процедуру чтения/записи.
Разумеется, мы описали процесс достаточно схематично, на самом деле он имеет множество нюансов и достаточно сложный алгоритм реализации. В любом случае картина получается следующая: если сделать swap-файл достаточно большим, редко используемые и неизменённые данные при возникновении дефицита из ОЗУ «уезжают» на диск, откуда могут по необходимости извлекаться столько раз, сколько нужно.
Если файл/раздел подкачки маленький, пользы от него будет немного, поскольку рано или поздно свободное место исчерпается и на нём, и тогда снова начнутся «пляски» с постоянными операциями записи-чтения в файл подкачки, из-за чего система будет сильно тормозить.
Отвечая на вопрос о необходимости swap в Linux, можно утверждать следующее:
- он помогает разгрузить систему, когда программа запрашивает объём физической памяти, которого в системе нет. В таких случаях ядро Linux анализирует, к каким страницам обращение происходит реже всего, сбрасывает их содержимое на диск и выделяет необходимое количество страниц текущему процессу;
- особенность многих программ состоит в том, что в момент их запуска часть страниц оказывается занята данными, которые используются только в момент инициализации процесса/приложения. Система может и должна сбрасывать эти страницы в swap, разгружая ОП.
Но не всё так просто. Swap тоже не лишён недостатков, главным из которых является скорость операций записи/чтения с диска. Достаточно сказать, что при операциях с физической памятью эта скорость измеряется в наносекундах (просто посмотрите характеристики чипов ОЗУ), а для жёсткого диска это миллисекунды, то есть на несколько порядков больше. У SSD-дисков скорости обмена данными намного больше, но из-за медленного интерфейса всё равно несравнимы с показателями ОЗУ. Вот и получается, что при частых сбросах страниц памяти в swap система тоже может работать медленнее.
Особенно часто такое случается, если компьютер используется в качестве сервера, а с Linux это большинство ПК. При нехватке памяти обычно в число первых пострадавших попадают базы данных, и если это MySQL, то его падение грозит недоступность сайта или его страниц, поэтому для серверов так важно иметь swap-раздел большого объёма – пускай лучше сайт будет работать медленнее, чем будет недоступен совсем.
Как создать и настроить файл подкачки на примере Ubuntu
Процедура создания файла подкачки достаточно сложная, требующая наличия определённых навыков работы с командной строкой.
И первый этап – нам нужно выяснить, имеется ли в системе раздел или файл, выделенный под swap.
Проверка наличия swap в Ubuntu
Используем команду:
swapon -s
или
free –m
Если swap отсутствует, в первом случае вы получите пустую результирующую строку, во втором – таблицу использования виртуальной памяти, в которой строка Swap будет содержать нули.
Если файла подкачки нет, нужно определиться, имеется ли возможность его создать.
Проверка наличия свободного пространства на диске
Выполняем команду
df -h
Отобразится таблица примерно такого содержания:
На диске порядка 23 ГБ свободного пространства, этого более чем достаточно для создания swap-файла.
Какого размера создать swap
Размер файла подкачки зависит от множества факторов:
- сколько ОЗУ имеется в системе;
- каков состав используемых программ/приложений;
- намерены ли вы задействовать режим сна;
- будут ли использоваться файлы с секретными данными.
Разумеется, главным аспектом является объём физической памяти. Если её меньше 2 ГБ, sawp-файл нужнее размером в 1,5-2 раза больше, то есть до 4 ГБ.
Если у вас 3-4 ГБ ОЗУ, то определитесь сначала, будете ли вы использовать режим сна. Если да, объём файла подкачки желательно выбирать из расчёта 110-115% от объёма оперативной памяти, если нет – идеальным вариантом будет swap-файл такого же объёма.
Если у вас мощный компьютер и объём ОП превышает 6 ГБ, размер swap-файла в Linux выбирайте из расчёта половины объёма оперативной памяти. Если планируется использование режима гибернации, может потребоваться эксперимент для выяснения, сколько ОЗУ используется для режима сна и выбирать значение, исходя из полученных результатов. Благо сформировать файл подкачки можно в любой момент времени, не обязательно на этапе установки Linux.
Рекомендуемые размеры swap-файла в Linux в документации Fedora
Создание swap-файла в Linux
Процедура создания файла подкачки в Linux имеет несколько вариантов, один из которых считается традиционным, а другой – ускоренным.
Для начала ознакомимся с быстрым способом, который заключается в использовании одной команды:
fallocate -l 2G /swapfile
Здесь второй параметр указывает на размер создаваемого файла, выраженный в ГБ (если букву не указывать, система будет интерпретировать параметр в КБ, это нужно обязательно учитывать).
При этом файл будет создан и доступен сразу после выполнения команды, так что желательно использовать именно этот способ.
Второй вариант, традиционный:
dd if=/dev/zero of=/swapfile bs=1М count=2096
Здесь параметр bs указывает, в каких единицах мы задаём размер одного блока для swap-файла. В данном случае – 1 мегабайт. Параметр count указывает на количество таких блоков, выделяемых под файл подкачки, и в сумме получаются те же 2 ГБ, как в первом варианте.
Сама команда dd в Linux обозначает побайтовое копирование, параметр if указывает, откуда копировать, в нашем случае это /dev/zero – специальный файл с нулевыми байтами. Параметр of указывает, что записывать эти нулевые байты мы будем в файл /swapfile.
Отметим, что при использовании этой команды ошибки недопустимы. Если вы неправильно укажете параметр of, то имеется вероятность повреждения важных данных.
Если вы указали недостаточный размер файла подкачки (это может выясниться много позже), увеличить или просто изменить размер swap Ubuntu можно отключив текущий (как это сделать, мы расскажем позже) и создав его заново по приведённому здесь алгоритму с указанием правильного размера.
Как подключить swap-файл
Файл подкачки является важным с точки зрения операционной системы, и его редактирование может привести к её краху. Поэтому важно ограничить доступ к swap следующей командой:
chmod 600 /swapfile
В результате право чтения и записи в него будет иметь только пользователь root (аналог admin в Windows).
Дальнейшая настройка swap-файла заключается в преобразовании /swapfile в файл подкачки с помощью команды
mkswap /swapfile
И заключительная команда, действие которой заключается в подключении swap к системе (его включению):
swapon /swapfile
Теперь он полностью готов к работе.
Добавление swap в автозагрузку
Чтобы после каждой перезагрузки не выполнять подключение файла подкачки к системе последней командой предыдущего раздела, вписываем в файл /etc/fstab с помощью любого текстового редактора строку, которая будет использоваться при каждой загрузке Linux:
/swapfile none swap defaults 0 0
После перезагрузки компьютера можно проверить правильность срабатывания командой free –m.
Как очистить swap в Ubuntu
Иногда может потребоваться временно освободить место на диске, и зачастую именно файл подкачки – единственный реальный кандидат для этих целей.
Очистка swap (вернее, отключение) осуществляется командой
swapoff –a
Включение производится командой
swapon -a
СОВЕТ. Отключать swap таким способом не рекомендуется, поскольку данные просто обнуляются, без переноса в оперативную память. Если в числе удалённых данных окажутся те, которые используются системными процессами, может проследовать крах системы.
Если вы решили и вовсе отказаться от использования файла подкачки, удалить swap можно следующим образом:
cat /proc/swaps (определяем местоположение swap-файла)
swapoff /dir/swapXXXXX (отключаем файл подкачки, здесь dir – это результат выполнения предыдущей команды, то есть директория с файлом, а swapXXXXX – имя самого файла подкачки)
rm /dir/swapXXXXX (удаляем файл с диска)
Если вы добавляли swap в автозагрузку, его нужно оттуда убрать, удалив соответствующую строчку в файле /etc/fstab (например, редактором gedit).
Но напомним, что без наличия swap-файла система может работать нестабильно, особенно при малом объёме оперативной памяти, поэтому удаление файла подкачки без создания нового настоятельно не рекомендуется.