Хостинг

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

ADVERTISEMENT

Вступление

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

ADVERTISEMENT

Что такое своп?

Swap — это область на жестком диске, обозначенная как место, где операционная система может временно хранить данные, которые она больше не может хранить в оперативной памяти. По сути, это дает вам возможность увеличить объем информации, которую ваш сервер может хранить в своей рабочей «памяти», с некоторыми оговорками. Пространство подкачки на жестком диске будет использоваться в основном, когда в ОЗУ больше нет места для хранения данных приложения.

Информация, записываемая на диск, будет значительно медленнее, чем информация, хранящаяся в ОЗУ, но операционная система предпочтет сохранить данные приложения в памяти и использовать подкачку для более старых данных. В целом, использование пространства подкачки в качестве запасного варианта, когда ОЗУ вашей системы истощается, может быть хорошей защитой от исключений нехватки памяти в системах с доступным хранилищем без SSD.

Проверка системы на наличие информации об обмене

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

Мы можем увидеть, имеет ли система какой-либо настроенный обмен, набрав:

sudo swapon --show

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

Вы можете проверить, что нет активного обмена, используя утилиту + free +:

free -h
Output             total       used       free     shared    buffers     cached
Mem:          1.0G       331M       668M       4.3M        11M       276M
-/+ buffers/cache:        44M       955M

Как вы можете видеть в строке вывода * Swap *, подкачка в системе не активна.

Проверка доступного пространства на разделе жесткого диска

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

df -h
OutputFilesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  946M   23G   4% /
udev             10M     0   10M   0% /dev
tmpfs           201M  4.3M  196M   3% /run
tmpfs           501M     0  501M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           501M     0  501M   0% /sys/fs/cgroup
tmpfs           101M     0  101M   0% /run/user/1001

Устройство с + / + в столбце + Установлено на + в данном случае является нашим диском. В этом примере у нас достаточно места (используется только 946M). Ваше использование, вероятно, будет другим.

Хотя существует множество мнений относительно подходящего размера пространства подкачки, оно действительно зависит от ваших личных предпочтений и требований вашего приложения. Как правило, объем, равный или удвоенный объем оперативной памяти в вашей системе, является хорошей отправной точкой. Другое хорошее практическое правило заключается в том, что что-либо более чем 4G подкачки, вероятно, не нужно, если вы просто используете его как запасной вариант ОЗУ.

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

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

Мы создадим файл с именем + swapfile + в нашем корневом каталоге (/). Файл должен выделять количество места, которое мы хотим для нашего файла подкачки.

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

Мы можем создать файл объемом 1 гигабайт, набрав:

sudo fallocate -l 1G /swapfile

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

ls -lh /swapfile
Output-rw-r--r-- 1 root root  May 30 15:07 /swapfile

Как видите, наш файл создан с правильным количеством выделенного пространства.

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

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

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

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

sudo chmod 600 /swapfile

Проверьте изменение разрешений, набрав:

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

Как видите, только у пользователя * root * включены флаги чтения и записи.

Теперь мы можем пометить файл как пространство подкачки, набрав:

sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1048572 KiB
no label, UUID=757ee0b7-db04-46bd-aafb-adf6954ea077

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

sudo swapon /swapfile

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

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

Мы можем проверить вывод утилиты + free +, чтобы подтвердить наши выводы:

free -h
Output             total       used       free     shared    buffers     cached
Mem:          1.0G       925M        74M       4.3M        13M       848M
-/+ buffers/cache:        63M       936M

Наш обмен был успешно установлен, и наша операционная система начнет использовать его по мере необходимости.

Создание файла подкачки постоянным

Наши последние изменения включили файл подкачки для текущего сеанса. Однако, если мы перезагружаемся, сервер не будет автоматически сохранять настройки подкачки. Мы можем изменить это, добавив файл подкачки в файл + / etc / fstab.

Создайте резервную копию файла + / etc / fstab + на случай, если что-то пойдет не так:

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

Добавьте информацию о файле подкачки в конец файла + / etc / fstab +, набрав:

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

Далее мы рассмотрим некоторые настройки, которые мы можем обновить, чтобы настроить пространство подкачки.

Настройка параметров свопинга

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

Настройка свойства Swappiness

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

При значениях, близких к нулю, ядро ​​не будет выгружать данные на диск без крайней необходимости. Помните, что взаимодействие с файлом подкачки «дорого», так как оно занимает намного больше времени, чем взаимодействие с ОЗУ, и может привести к значительному снижению производительности. Указание системе не полагаться на своп слишком часто сделает вашу систему быстрее.

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

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

cat /proc/sys/vm/swappiness
Output60

Для рабочего стола настройка перестановки 60 не является плохим значением. Для сервера вы можете захотеть переместить его ближе к 0.

Мы можем установить swappiness на другое значение, используя команду + sysctl +.

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

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

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

sudo nano /etc/sysctl.conf

Внизу вы можете добавить:

/etc/sysctl.conf

vm.swappiness=10

Сохраните и закройте файл, когда вы закончите.

Регулировка настройки давления кэша

Другим связанным значением, которое вы можете изменить, является + vfs_cache_pressure +. Этот параметр определяет, сколько система выберет для кэширования inode и dentry информации поверх других данных.

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

cat /proc/sys/vm/vfs_cache_pressure
Output100

В настоящее время наша система слишком быстро удаляет информацию об индексах из кэша. Мы можем установить более консервативную настройку, например, 50, набрав:

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

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

sudo nano /etc/sysctl.conf

Внизу добавьте строку, которая задает ваше новое значение:

/etc/sysctl.conf

vm.vfs_cache_pressure=50

Сохраните и закройте файл, когда вы закончите.

Заключение

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

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

ADVERTISEMENT
Подписаться
Уведомить о
guest

0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии