Увеличить SWAP на Ubuntu/Debian/Mint

Увеличить SWAP на Ubuntu/Debian/Mint

Была проблема, у меня на Debian была создана подкачка (swap) в 1Гб, но как оказалось, мне этого мало и нужно увеличить хотя бы до 3-хГб. Данная тема «Увеличить SWAP на Ubuntu/Debian/Mint», как раз затронет этот вопрос.

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

1. Проверим сколько у нас  выделено Swap-а:

# htop

Если не установлен, то установите или используйте аналог программы, под  названием top. Чтобы установить используйте команду:

# sudo apt-get install htop

И смотрим сколько у нас выделено памяти:

используем утилиту htop для вывода swap

используем утилиту 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

увеличиваем раздел подкачки командой 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

Создание образа 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

вывод количества swap

Собственно, видно что все работает нормально, но еще сейчас запустим утилиту htop и посмотрим что показывает она:

# htop
вывод количества swap с помощью программы 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 завершена.

8 thoughts on “Увеличить SWAP на Ubuntu/Debian/Mint

  1. Спасибо,
    Скажите а почему на Виртуальной машине лучше приблизить swappiness к 0?

    • Если swappiness приблизить к 0 — это приведет к тому, что SWAP не будет использоваться до того времени, пока не будет использовано 100% RAM. На мой взгялд — это не логично и я бы поставил swappiness на 10. Но о swappiness я хотел рассказать немного позже. Уже имеется черновик. Постараюсь выложить на днях.

  2. Статья хорошая, но (!) как именно изменить размер — как раз не рассказано.

    • Как по мне, все очевидно:
      — Отмонтировать старый swap.
      — Удалить файл подкачки.
      — Создать новый файл подкачки с нужным размером.

  3. Это не раздел подкачки, а файл подкачки. Это два разных способа. Если есть раздел подкачки, то его и надо увеличить, а не создавать еще и файл по этой статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.