Debian включить файл подкачки

Обновлено: 04.07.2024

Когда может понадобиться своп

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

При подобных симптомах и ошибках может помочь своппинг.

Преимущества SWAP

Сравнение стоимости оперативной памяти и SSD
(цены актуальны на 7 июля 2017 года) IHOR FirstVDS
Оперативная память, в среднем за 1 гигабайт 100 рублей в месяц 170 рублей в месяц
SSD, в среднем за 1 гигабайт 10 рублей в месяц 13 рублей в месяц

Как видно из таблицы, экономия выйдет примерно в 10 раз.

Недостатки SWAP

Медленная работа Если файл или раздел свопа хранится на HDD (жёстком диске), то скорость чтения данных с него намного меньше, чем из оперативной памяти. Получше дела обстоят с SSD (твёрдотельным накопителем), однако, надо понимать, что поиск и чтение данных происходит через оперативную память, что, в свою очередь, всё равно увеличивает время отклика. Поэтому, если Вы решили сэкономить на оперативной памяти, полностью положившись на SWAP, то я категорически не рекомендую так делать. Необходимо наличие свободного места на диске Вам необходимо зарезервировать свободное место на диске под своп, иначе стабильность работы не гарантируется. Это не то, чтобы недостаток свопа, просто его надо учитывать и помнить о нём.

Как создать и подключить файл подкачки SWAP

Далее, в работе используется командная строка SSH.
Инструментарий: Far Manager или Putty.
Для примера приводятся команды из под root . Если Вы работаете не под root , перед командами задавайте префикс sudo

Проверка наличия свопа в системе

Для начала, нужно убедиться, что своп ещё не подключен:

Если команда выдала пустой результат или что-то навроде:

Дополнительно проверим командой:

Своп нулевой


Если в таблице в строке swap стоит 0, значит своп отсутствует.

Проверка наличия свободного места на диске

Теперь, надо проверить, сколько свободного места есть на диске:

В результате, мы увидим что-то подобное:

Какого размера создать swap

Создание файла SWAP

Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:

Быстрый способ Используем fallocate :

Результатом будет пустая строка, это нормально.
В отличие от dd , результат будет получен почти сразу, и я рекомендую именно его. Традиционный, медленный способ Или используем команду:

Синтаксис команды простой:

Будьте очень внимательны с синтаксисом команды, потому что если, например, ошибиться с определением пути для of= (куда сохранять файл), можно повредить данные на диске.

Теперь, когда файл создан, проверим результат:

В результате увидим:
-rw-r--r-- 1 root root 4.0G Jul 07 16:16 /swapfile
Как видим, файл создался верно и с нужным объёмом.

Как подключить SWAP файл

Для начала, ограничим права доступа к вновь созданному файлу.

Предоставление другим пользователям возможности читать или писать в этот файл будет представлять собой огромный риск для безопасности, поэтому ограничение командой ниже строго обязательно:

В результате, мы должны увидеть подобное:
-rw------- 1 root root 4.0G Jul 07 16:16 /swapfile
Права прописаны верно.

Теперь нужно сделать из swapfile файл подкачки:

В результате, увидим примерно следующее:
Setting up swapspace version 1, size = 4193300 KiB
no label, UUID=e5f3e9cf-c1a9-4ed4-b8ab-711b6a7d6544

Теперь, файл готов в роли свопа. Подключим его к системе:

Если на данном этапе выходит похожая ошибка, значит, скорее всего, своп запрещено подключать в систему. Такое ограничение часто ставят на VDS с виртуализацией OpenVZ. Рекомендую использовать IHOR, сервера от 100 рублей в месяц и виртуализация KVM позволяют включать SWAP.

Всё, теперь своп подключен и работает. Осталось проверить правильность работы самой первой командой:

Своп также будет виден в стандартных командах:

Всё, теперь точно, своп в системе готов и будет использоваться при необходимости.

Добавление свопа в автозагрузку

Чтобы при перезагрузке сервера своп автоматически подтягивался в систему, нужно прописать его в /etc/fstab :

Теперь система знает, где и как при перезагрузке искать и подключать своп.
Проверить, подключен ли своп в автозагрузке, можно с помощью редактора:

Дополнительные вопросы

Как очистить SWAP в Linux

Вообще, это делается с помощью отключения и включения свопа.

Однако, я не рекомендую прибегать к этому способу, так как swap просто очищается, а не переносится в ОЗУ, и, в случае наличия данных системных процессов, система может стать недоступна.

Как добавить пространство подкачки в Debian 10 Linux

Пространство подкачки может иметь форму выделенного раздела подкачки или файла подкачки. Обычно при запуске виртуальной машины Debian раздел подкачки отсутствует, поэтому единственный вариант - создать файл подкачки.

Прежде чем вы начнете

Хотя это возможно, использование нескольких пространств подкачки на одной машине не является обычным явлением. Чтобы проверить, включена ли в вашей установке Debian свопинг, выполните следующую команду:


Если вывод пуст, это означает, что в системе нет места для подкачки.

В противном случае, если вы получите что-то вроде ниже, в вашей системе Debian уже включен свопинг.

Чтобы активировать подкачку, пользователь, выполняющий команды, должен иметь права sudo .


Создание файла подкачки

В этом примере мы создадим и активируем 1G своп. Чтобы создать более крупный своп, замените 1G его размером желаемого пространства подкачки.

Следующие шаги показывают, как добавить пространство подкачки в Debian 10.

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

Только пользователь root должен иметь возможность читать и записывать файл подкачки. Выполните команду ниже, чтобы установить правильные разрешения :

Используйте этот mkswap инструмент, чтобы настроить область подкачки Linux для файла:

Активируйте файл подкачки:

Чтобы сделать изменение постоянным, откройте /etc/fstab файл:

и вставьте следующую строку:

Убедитесь, что своп активен, используя команду swapon или, free как показано ниже:

Регулировка значения подкачки

Swappiness - это свойство ядра Linux, которое определяет, как часто система будет использовать пространство подкачки. Подкачка может иметь значение от 0 до 100. Низкое значение заставит ядро ​​по возможности избегать подкачки, в то время как более высокое значение заставит ядро ​​использовать пространство подкачки более агрессивно.

Значение подкачки по умолчанию - 60. Проверить текущее значение подкачки можно с помощью cat команды:

Хотя значение подкачки 60 подходит для большинства систем Linux, для производственных серверов следует установить более низкое значение.

Например, чтобы установить значение подкачки 10, введите:

Чтобы сделать этот параметр постоянным при перезагрузке, добавьте в /etc/sysctl.conf файл следующую строку :

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


Удаление файла подкачки

Чтобы деактивировать и удалить файл подкачки, выполните следующие действия:

Отключите пространство подкачки, запустив:

Откройте /etc/fstab файл в текстовом редакторе и удалите запись файла подкачки /swapfile swap swap defaults 0 0 .

Добавление пространства swap (подкачки) – один из самых простых способов увеличить активность сервера и предотвратить ошибки out of memory. Данный мануал поможет создать и включить swap-пространство на сервере Debian 9.

Внимание! Пространство swap рекомендуется добавлять в системах, использующих традиционные жесткие диски; использование swap в системах, работающих на SSD, со временем может вызвать проблемы и даже привести к порче оборудования. В связи с этим крайне не рекомендуется включать swap на серверах провайдеров, использующих SSD-хранилища – лучше увеличить свой сервер.

Что такое swap?

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

1: Проверка системы на swap

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

Чтобы узнать, есть ли активное swap-пространство в текущей системе, введите:

sudo swapon --show

Если команда не вернула никакого результата, в текущей системе нет swap-пространства.

Еще один способ проверки swap – утилита free, которая показывает использование памяти системы. Чтобы узнать текущее состояние памяти и swap, наберите:

free -h
total used free shared buff/cache available
Mem: 996M 44M 639M 4.5M 312M 812M
Swap: 0B 0B 0B

Как видите, общее использование swap в сети равно 0, что совпадает с результатом предыдущей команды.

2: Проверка свободного пространства на жёстком диске

Сначала нужно узнать текущее состояние диска. Чтобы получить эти данные, введите:

df -h
Filesystem Size Used Avail Use% Mounted on
udev 488M 0 488M 0% /dev
tmpfs 100M 4.5M 96M 5% /run
/dev/vda1 25G 989M 23G 5% /
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1001

В данном случае диск – это устройство / в солбце Mounted on; как видите, места на нём достаточно много.

Существует много расхожих мнений о «правильном» размере swap-пространства. В целом, это зависит от личных предпочтений пользователя и требований приложения. Как правило, swap-пространство должно быть равно или вдвое больше объема оперативной памяти системы. В этом вопросе нужно ориентироваться на свободное дисковое пространство. Например, если RAM системы – 4 гигабайта, то вдвое большее swap-пространство (т.е., 8 гигабайт) займет существенную часть диска, а значит swap должен быть не более 4 гигабайт.

3: Создание swap-файла

Ознакомившись с общими условиями в системе для установки swap и узнав доступное пространство жесткого диска, можно приступить к созданию swap-файла в данной файловой системе.

В этом мануале такой файл называется swapfile и находится в root-каталоге (/).

Быстрее всего такой файл создаёт программа fallocate. Она мгновенно создает файл заранее выделенного размера без необходимости писать фиктивное содержимое.

Поскольку в данном случае используется сервер с 1 Гб RAM, мы создадим 1 Гб swap-пространства.

sudo fallocate -l 1G /swapfile

Чтобы проверить выделенный объём памяти, введите:

ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G May 29 17:34 /swapfile

Как видите, команда создала файл с указанным объёмом памяти.

4: Включение swap-пространства

Теперь у вас есть файл, но пока что система не знает, что его можно использовать. Нужно отформатировать данный файл, а затем включить его.

Но прежде нужно изменить права на файл, чтобы право на чтение имел только root. Swap-файл с правами на чтение и изменение другими пользователями – огромный риск для сервера. Чтобы передать все права пользователю root, введите:

sudo chmod 600 /swapfile

Проверьте права на файл:

ls -lh /swapfile
-rw------- 1 root root 1.0G May 29 17:34 /swapfile

Теперь только root может читать файл и вносить в него изменения. Итак, файл защищен, теперь можно указать системе на swap-пространство с помощью команды:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=b591444e-c12b-45a6-90fc-e8b24c67c006f

Чтобы включить swap-пространство, введите:

sudo swapon /swapfile

Убедитесь, что процедура прошла успешно:

sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -1

Также можно использовать утилиту free:

free -h
total used free shared buff/cache available
Mem: 996M 44M 637M 4.5M 314M 811M
Swap: 1.0G 0B 1.0G

Теперь система сообщает о включенном swap-пространстве.

5: Автозагрузка swap

Итак, теперь swap пространство включено, но оно действительно только в текущей сессии. При перезапуске сервер не будет запускать его автоматически. Чтобы изменить это, отредактируйте файл fstab. Создайте резервную копию файла на всякий случай:

sudo cp /etc/fstab /etc/fstab.bak

Добавьте данные о swap в конец файла.

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

6: Тонкая настройка swap

Существует несколько опций, которые могут влиять на производительность системы при работе swap.

Параметр swappiness

Параметр swappiness задает частоту использования swap-пространства системой. Значение swappiness выражается числом от 0 до 100 и измеряется в процентах.

Если значение swappiness близко к нулю, ядро ​​не будет передавать данные в swap без крайней необходимости. Помните, взаимодействие со swap-файлом – затратная для сервера процедура, поскольку требует больше ресурсов, чем взаимодействие с оперативной памятью, что, следовательно, может привести к значительному снижению производительности. Обычно система работает продуктивнее, если не очень полагается на swap.

Если это значение ближе к 100, система будет передавать в swap много данных с целью сохранить больше свободного места в RAM. В зависимости от профиля памяти приложения и цели использования сервера, это может быть хорошим решением в некоторых случаях.

Чтобы просмотреть текущее значение параметра swappiness, введите:

cat /proc/sys/vm/swappiness
60

Значение 60 не так уж плохо, но для виртуального выделенного сервера лучше уменьшить его.

Команда sysctl позволяет менять значение swappiness.

Чтобы, к примеру, задать в swappiness значение 10, нужно ввести:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

Данное значение будет действительным до следующей перезагрузки сервера. Чтобы значение сохранялось и после перезагрузки, откройте /etc/sysctl.conf в текстовом редакторе:

sudo nano /etc/sysctl.conf

Добавьте в конец файла строку:

Сохраните и закройте файл.

Параметр vfs_cache_pressure

Еще одна важная опция – это vfs_cache_pressure. Она управляет склонностью ядра восстанавливать память, которая используется для кэширования каталогов и инодов объектов.

В основном это данные доступа к файловой системе. Как правило, найти их непросто, а запрашиваются они часто, так что использовать кэш-память в этом случае очень удобно. Чтобы узнать текущее значение этого параметра, можно запросить файловую систему proc:

cat /proc/sys/vm/vfs_cache_pressure
100

Согласно текущим настройкам, система удаляет иноды из кэша слишком быстро. Уменьшив значение (например, до 50), вы позволите системе хранить информацию дольше:

sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50

Это значение тоже будет действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) открыть конфигурационный файл sysctl в текстовом редакторе:

sudo nano /etc/sysctl.conf

и добавить в него такую строку:

Сохраните и закройте sysctl.

Заключение

Надеемся, данный мануал научил вас рационально использовать оперативную память. Добавленное swap-пространство может предотвратить общие проблемы системы.

Столкнувшись с ошибкой OOM (out of memory) или обнаружив, что система запускает нужные приложения, вы можете попробовать оптимизировать конфигурации приложений или обновить сервер.

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

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

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

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

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

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

Собственно, у меня

1Гб, и как сказал ранее, я хочу его увеличить.

Так же, можно заюзать утилиту free и узнать какой swap используется:

Как видно по утилитам, данные совпадают.

Если знаете что на сервере имеется свап, но не помните какой размер, так же имеется утилита которая покажет эти данные:

Выбираем какой способ подойдет вам лучше и используем.

2. Создание раздела подкачки.

Проверяем где и сколько имеется свободного места, можно выполнить команду:

Расскажу несколько способов создать данный файл. Создадим папку в которую попозже мы примонтируем файл подкачки:

В созданной папке будет храниться файл подкачки. Следующим действием, создаем файл:

увеличиваем раздел подкачки командой dd

увеличиваем раздел подкачки командой dd

Ждем определенное время, пока оно выполнится.

PS: Возможно прийдется создать сам файл:

Если запускаете от суперпользователя, то не нужно ничего создавать, утилита dd сделает все за вас.

Данная утилита создаст файл мгновенно и тем самым экономит ваше время:

3. Создание swap-а

Для начала, выставляем нужные права на файл:

Делается это командой:

Создание образа swap командой mkswap

Создание образа swap командой mkswap

4. Добавление swap в fstab.

Это нужно сделать чтобы каждый раз при старте мой ОС, автоматически монтировался наш фал подкачки, который мы создали, для этого нужно выполнить команду:

И добавляем следующую строчку:

5. Активируем (включаем) нас swap.

Чтобы это сделать, стоит выполнить команду:

6. Проверка.

Необходимо убедится что у нас все нормально работает, сейчас мы это и проверим:

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

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

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

вывод количества swap с помощью программы htop

вывод количества swap с помощью программы htop

7. Взаимодействие SWAP с ОС. Проверика и настройка.

Есть несколько вариантов, которые вы можете настроить для более лучшей производительности вашей системы при работе со свопом.

Параметр swappiness определяет, как часто ваша система обменивается данными из оперативной памяти в подкачку. Этот параметр имеет диапазон от 0-100 и представляет собой процент.

Значения, которые находятся ближе к 100%, ядро будет пытаться поместить больше данных в своп и освободить RAM.

Чтобы проверить текущее значение swappiness, выполните:

Например, чтобы установить swappiness в 10, выполним:

Этот параметр не сохранится до следующей перезагрузки и чтобы он применялся при каждом запуски ОС автоматически, нужно изменить (добавив строку в) файл /etc/sysctl.conf:

В самом низу файла, прописываем:

Сохраняем и закрываем файл.

Параметр установлен в 100 и тем самым система удаляет информацию инодам из кэша очень быстро. Но если захотите уменьшить, выполните:

Это будет работать только до завершения вашей сессии и вы можем изменить его в файле ( как и ранее):

Читайте также: