Как добавить своп на CentOS 7

Вступление

Один из самых простых способов сделать ваш сервер более отзывчивым и защититься от ошибок нехватки памяти в вашем приложении - это добавить пространство подкачки. * Swap * - это область на накопителе, где операционная система может временно хранить данные, которые она больше не может хранить в памяти.

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

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

В этом руководстве мы рассмотрим, как создать и включить файл подкачки на сервере CentOS 7.

Note

Предпосылки

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

Вам потребуется сервер CentOS 7, установленный и настроенный пользователем без полномочий root с привилегиями + sudo +. Если вы этого еще не сделали, вы можете выполнить шаги 1-4 в начальной настройке сервера CentOS 7 руководство, чтобы создать эту учетную запись.

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

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

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

Мы можем увидеть, имеет ли система какой-либо настроенный своп, используя + swapon +, утилиту подкачки общего назначения. С флагом + -s + + swapon + отобразит сводную информацию об использовании и доступности подкачки на нашем устройстве хранения:

swapon -s

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

Еще один способ проверки пространства подкачки - утилита + free +, которая показывает общее использование памяти системой. Мы можем увидеть наше текущее использование памяти и подкачки (в мегабайтах), набрав:

free -m
            total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
         0       4095

Как видите, наше общее пространство подкачки в системе равно 0. Это соответствует тому, что мы видели с + swapon +.

Проверьте доступное место для хранения

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

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

df -h
Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  8.3M  2.0G   1% /run
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
  • Примечание: * флаг + -h + просто говорит + dh + выводить информацию о диске в удобном для человека формате чтения. Например, вместо вывода необработанного числа блоков памяти в разделе, + df -h + сообщит нам об использовании и доступности пространства в М (для мегабайт) или G (для гигабайт).

Как видно из первой строки, в нашем разделе хранения доступно 59 гигабайт, поэтому у нас достаточно места для работы. Имейте в виду, что это свежий экземпляр VPS среднего размера, поэтому фактическое использование может сильно отличаться.

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

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

Создать файл подкачки

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

Самый быстрый и простой способ создать файл подкачки - использовать + fallocate +. Эта команда мгновенно создает файл заранее выделенного размера. Мы можем создать 4-гигабайтный файл, набрав:

sudo fallocate -l

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

ls -lh
-rw-r--r-- 1 root root  Oct 30 11:00

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

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

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

Прежде чем мы это сделаем, мы должны настроить разрешения для нашего файла подкачки, чтобы он не мог быть прочитан кем-либо, кроме учетной записи root. Разрешение другим пользователям читать или писать в этот файл было бы огромной угрозой безопасности. Мы можем заблокировать разрешения с помощью + chmod:

sudo chmod 600

Это ограничит права на чтение и запись только для учетной записи root. Мы можем проверить, что у файла подкачки есть правильные разрешения, снова используя + ls -lh +:

ls -lh
-rw------- 1 root root  Oct 30 11:00

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

sudo mkswap
Setting up swapspace version 1, size =  KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

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

sudo swapon

Чтобы убедиться, что процедура прошла успешно, мы можем проверить, сообщает ли наша система пространство подкачки:

swapon -s
Filename                Type        Size    Used    Priority
              file         0     -1

Этот вывод подтверждает, что у нас есть новый файл подкачки. Мы можем снова использовать утилиту + free +, чтобы подтвердить наши выводы:

free -m
            total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
         0       4095

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

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

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

Отредактируйте файл с привилегиями + sudo + в вашем текстовом редакторе:

sudo nano /etc/fstab

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

  swap    swap    sw  0   0

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

Настройте параметры подкачки (необязательно)

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

Swappiness

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

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

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

Мы можем увидеть текущее значение подкачки, прочитав файл конфигурации + swappiness +:

cat /proc/sys/vm/swappiness
30

По умолчанию для CentOS 7 задано значение «swappiness», равное 30, что является хорошим промежуточным положением для большинства настольных компьютеров и локальных серверов. Для системы VPS мы, вероятно, хотели бы переместить ее ближе к 0.

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

sudo sysctl vm.swappiness=
vm.swappiness =

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

sudo nano /etc/sysctl.conf

Добавьте настройки подкачки в конец файла:

vm.swappiness =

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

Давление кэша

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

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

cat /proc/sys/vm/vfs_cache_pressure
100

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

sudo sysctl vm.vfs_cache_pressure=
vm.vfs_cache_pressure =

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

sudo nano /etc/sysctl.conf

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

vm.vfs_cache_pressure =

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

Заключение

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

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

Related