Увеличить SWAP на Ubuntu/Debian/Mint
Была проблема, у меня на Debian была создана подкачка (swap) в 1Гб, но как оказалось, мне этого мало и нужно увеличить хотя бы до 3-хГб. Данная тема «Увеличить SWAP на Ubuntu/Debian/Mint», как раз затронет этот вопрос.
Раздел подкачки является независимым разделом жесткого диска, используемого исключительно для подкачки. Swap представляет собой специальный файл в файловой системе, которая находится среди вашей системы и файлов данных.
1. Проверим сколько у нас выделено Swap-а:
# htop
Если не установлен, то установите или используйте аналог программы, под названием top. Чтобы установить используйте команду:
# sudo apt-get install htop
И смотрим сколько у нас выделено памяти:
Собственно, у меня ~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
Ждем определенное время, пока оно выполнится.
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
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
Собственно, видно что все работает нормально, но еще сейчас запустим утилиту htop и посмотрим что показывает она:
# 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 завершена.
Спасибо!
Спасибо, все получилось. В п.2. надо добавить еще один пункт touch swapfile.img
Спасибо большое
Спасибо,
Скажите а почему на Виртуальной машине лучше приблизить swappiness к 0?
Если swappiness приблизить к 0 — это приведет к тому, что SWAP не будет использоваться до того времени, пока не будет использовано 100% RAM. На мой взгялд — это не логично и я бы поставил swappiness на 10. Но о swappiness я хотел рассказать немного позже. Уже имеется черновик. Постараюсь выложить на днях.
Статья хорошая, но (!) как именно изменить размер — как раз не рассказано.
Как по мне, все очевидно:
— Отмонтировать старый swap.
— Удалить файл подкачки.
— Создать новый файл подкачки с нужным размером.
Это не раздел подкачки, а файл подкачки. Это два разных способа. Если есть раздел подкачки, то его и надо увеличить, а не создавать еще и файл по этой статье.