Как добавить своп (swap) в CentOS 7
Один из самых простых способов сделать ваш сервер более быстрым и решить вопрос по ошибкам нехватки памяти в вашем приложении - это добавить немного места для подкачки (swap). Swap - это область на дисковом накопителе, где операционная система может временно хранить данные, которые не помещаются в оперативную память.
Это дает вам возможность увеличить объем информации, которую ваш сервер может хранить в своей рабочей памяти. Но есть недостаток в том что чтение из файлов подкачки и запись происходит медленнее, чем при использовании оперативной памяти.
Что произойдет если на сервере закончится оперативная память?
Без подкачки сервер, у которого заканчивается память, может начать убивать приложения, чтобы освободить память, или даже дать сбой что произведет к зависанию сервера.
Поэтому чтобы обеспечить надежный доступ к данным, некоторым приложениям для работы требуется свопинг.
В этом руководстве мы расскажем, как создать и включить файл подкачки на сервере CentOS 7.
Проверьте систему на наличие swap
Мы можем посмотреть, есть ли в нашей системе какой-либо настроенный своп, используя универсальную утилиту подкачки. С -s флагом swapon отобразится сводка использования и доступность подкачки на нашем запоминающем устройстве:
Если команда ничего не вернула, значит, сводка пуста и файл подкачки не существует.
Другой способ проверить пространство подкачки - использовать утилиту free, которая показывает нам общее использование памяти системой. Чтобы получить отображение памяти с использованием подкачки (в мегабайтах), нужно набрать:
Проверить доступное место для хранения
Типичный способ выделения места для подкачки - использование отдельного раздела, предназначенного для этой задачи. Однако изменение схемы разделов не всегда возможно из-за аппаратных или программных ограничений. К счастью, мы можем так же легко создать файл подкачки, который находится на существующем разделе.
Прежде чем мы это сделаем, мы должны знать, какое количество дисков используется в настоящее время. Мы можем получить эту информацию, набрав:
Примечание:-h флаг просто производит вывод информации о дисках удобном формате. Например, вместо того, чтобы выводить необработанное количество блоков памяти в разделе, df -h показывает информацию об использовании и доступности пространства в M (для мегабайт) или G (для гигабайт).
Создать файл подкачки
Теперь, когда мы знаем доступное пространство для хранения, мы можем приступить к созданию файла подкачки в нашей файловой системе. Мы создадим файл с именем swapfileв нашем /каталоге root ( ), хотя вы можете назвать файл как-нибудь иначе, если хотите. Файл должен выделить столько места, сколько мы хотим для нашего файла подкачки, и он должен быть создан в одном непрерывном блоке.
Лучше всего это сделать с помощью ddутилиты. Эта команда создаст файл размером 4 гигабайта:
После ввода пароля для авторизации sudoпривилегий будет создан файл подкачки. Это может занять некоторое время, после чего вам вернется запрос. Мы можем проверить, что для свопа был зарезервирован правильный объем пространства, используя ls:
Включить файл подкачки
Прямо сейчас наш файл создан, но наша система не знает, что он должен использоваться для свопа. Нам нужно указать нашей системе отформатировать этот файл как файл подкачки, а затем включить его.
Прежде чем мы это сделаем, мы должны настроить разрешения для нашего файла подкачки, чтобы его не мог читать никто, кроме учетной записи root. Разрешение другим пользователям читать или писать в этот файл было бы огромной угрозой безопасности. Мы можем заблокировать разрешения с помощью chmod:
Это ограничит права чтения и записи только для учетной записи root. Мы можем убедиться, что файл подкачки имеет правильные параметры, ls -lh:
Теперь, мы можем указать нашей системе настроить пространство подкачки для использования, набрав:
Сделать файл подкачки постоянным
В настоящий момент наш файл подкачки включен, но при перезагрузке сервер не разрешит использование файла автоматически. Мы можем изменить это, изменив файл fstab, который представляет собой таблицу, которая управляет файловыми системами и разделами.
Отредактируйте файл с sudoправами в текстовом редакторе:
Внизу файла нужно добавить строку, которая сообщит операционной системе, что она должна автоматически использовать созданный вами файл подкачки:
После того как вы добавили строку, можете сохранить и закрыть файл. Сервер будет проверять этот файл при каждой загрузке, поэтому с этого момента файл подкачки будет готов к использованию.
Настройка параметров свопа
Вы можете настроить несколько параметров, которые повлияют на производительность вашей системы при работе со свопингом. Эти конфигурации в большинстве случаев являются необязательными, и вносимые вами изменения будут зависеть от потребностей вашего приложения и ваших личных предпочтений.
Swappiness
swappiness - параметр определяющий, как часто данные вашей системы SWAPS будут загружаться из памяти в пространство подкачки. Это значение от 0 до 100, которое представляет процент использования памяти, который запускает использование подкачки.
При значениях, близких к нулю, система не будет передавать данные на диск без крайней необходимости. Помните, что взаимодействие с файлом подкачки «дорого», поскольку оно намного медленнее, чем взаимодействие с памятью, и эта разница в скорости чтения и записи может привести к значительному снижению производительности приложения. Указание системе не полагаться на подкачку так сильно, как правило, сделает вашу систему быстрее.
Значения, близкие к 100, будут пытаться поместить больше данных в подкачку, чтобы освободить больше памяти. В зависимости от профиля памяти ваших приложений или того, для чего вы используете свой сервер, в некоторых случаях это может быть лучшим выбором.
Мы можем увидеть текущее значение подкачки, прочитав swappinessфайл конфигурации:
CentOS 7 по умолчанию имеет настройку подкачки 30, что является справедливым компромиссом для большинства настольных компьютеров и локальных серверов. Для системы VPS мы, вероятно, захотим приблизить его к 0.
Мы можем установить для swappiness другое значение с помощью sysctlкоманды. Например, чтобы установить для swappiness значение 10, мы могли бы ввести:
Давление кеша
Еще одно связанное значение, которое вы, возможно, захотите изменить, - это vfs_cache_pressure. Этот параметр влияет на хранение специальных записей метаданных файловой системы. Постоянное чтение и обновление этой информации, как правило, очень затратно, поэтому хранение ее в кэше на более длительное время отлично подходит для производительности вашей системы.
Вы можете увидеть текущее значение этого давления кеша, procснова запросив файловую систему:
В соответствии с текущими настройками наша система слишком быстро удаляет информацию об индексных дескрипторах из кеша. Мы можем установить более консервативное значение, например 50, используя sysctl:
Опять же, это действительно только для нашего текущего сеанса. Мы можем изменить это, добавив его в наш файл конфигурации, как мы это сделали с настройкой подкачки: