Centos 7 создает своп

Обновлено: 01.07.2024

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

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

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

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

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

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

Предпосылки

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

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

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

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

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

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

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

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

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

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

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

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

Примечание: флаг -h просто указывает dh выводить информацию о диске в удобном для чтения формате. Например, вместо того, чтобы выводить необработанное количество блоков памяти в разделе, df -h сообщит нам об использовании и доступности пространства в M (для мегабайт) или G (для гигабайт).

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

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

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

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

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

Лучший способ сделать это — использовать утилиту dd. Эта команда создаст файл размером 4 гигабайта:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Измените настройки обмена (необязательно)

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

Обмен

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

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

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

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

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

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

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

Добавьте параметр swappiness в конец файла:

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

Нехватка кеша

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

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

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

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

Внизу добавьте строку, указывающую новое значение:

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

Заключение

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

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

Подкачка — это пространство на диске, которое используется, когда объем физической оперативной памяти заполнен. Когда в системе Linux заканчивается ОЗУ, неактивные страницы перемещаются из ОЗУ в пространство подкачки.

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

В этом руководстве объясняется, как добавить файл подкачки в системах CentOS 7.

Прежде чем продолжить работу с этим учебным пособием, проверьте, включен ли своп в вашей установке CentOS, набрав:

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

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

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

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

Следуйте приведенным ниже инструкциям, чтобы добавить пространство подкачки в системе CentOS 7.

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

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

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

Затем настройте область подкачки Linux в файле:

Выполните следующую команду, чтобы активировать обмен:

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

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

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

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

Значение подкачки по умолчанию в CentOS 7 равно 30. Текущее значение подкачки можно проверить, введя следующую команду:

Несмотря на то, что значение swappiness, равное 30, подходит для настольных компьютеров и компьютеров для разработки, для рабочих серверов может потребоваться установить более низкое значение.

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

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

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

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

Для начала деактивируйте пространство подкачки, набрав:

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

Наконец, удалите фактический файл подкачки с помощью rm :

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

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

Решение

Для целей этого поста давайте предположим, что в вашей системе не настроен своп. /dev/sdc — диск без разделов. Поскольку мы собираемся создать один раздел, заполняющий весь диск, обратите внимание, что все данные, находящиеся в настоящее время на этом диске, будут потеряны. Следуйте инструкциям ниже, чтобы добавить раздел /dev/sdc1 в качестве нового раздела подкачки в системе.

<р>1.Используйте команду fdisk от имени пользователя root, чтобы создать раздел подкачки.

Появится новое приглашение, введите «p», чтобы отобразить текущие разделы. Убедитесь, что здесь нет существующих разделов.

проверить раздел в fdisk

Чтобы создать новый раздел подкачки, введите «n». Поскольку это будет первый раздел, сделайте его основным, выбрав «p». Выберите «1» для номера раздела. Чтобы принять настройки по умолчанию для начального сектора, просто нажмите «Ввод». В следующем запросе введите значение +2G, чтобы установить размер раздела подкачки.

создать основной раздел для подкачки CentOS RHEL

В следующем запросе нажмите ‘t’, чтобы изменить тип раздела. Введите число «1», чтобы изменить только что созданный раздел.
Введите «82» и нажмите клавишу ввода. Тип 82 предназначен для разделов подкачки. Проверьте результаты, проверив таблицу разделов, набрав «p». Введите «w», чтобы записать сделанные изменения.

установить тип раздела подкачки CentOS RHEL в fdisk

<р>2. Перечитайте раздел с помощью команды partprobe, чтобы ядро ​​увидело только что созданный раздел подкачки.

<р>3. Создайте ассоциацию обмена на новом устройстве:

<р>4. вы можете использовать UUID из вывода mkswap при создании свопа, чтобы добавить запись в /etc/fstab. Эта запись гарантирует, что раздел подкачки активируется после каждой перезагрузки.

Важной частью поддержания производительности системы CentOS Enterprise Linux является обеспечение достаточного пространства подкачки, сравнимого с требованиями к памяти, предъявляемыми к системе. Таким образом, цель этой главы — предоставить обзор управления подкачкой в ​​CentOS.

Содержание

Что такое пространство подкачки?

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


сообщить об этом объявлении

Рекомендуемое пространство подкачки для CentOS

  • Для 4 ГБ ОЗУ требуется как минимум 2 ГБ пространства подкачки.
  • Для ОЗУ от 4 ГБ до 16 ГБ требуется как минимум 4 ГБ пространства подкачки.
  • Для ОЗУ от 16 ГБ до 64 ГБ требуется не менее 8 ГБ пространства подкачки.
  • Для ОЗУ от 64 ГБ до 256 ГБ требуется не менее 16 ГБ пространства подкачки.

Определение текущего использования пространства подкачки

Текущий объем свопа, используемый системой CentOS, можно определить несколькими способами. Один из вариантов — запустить файл /proc/swaps с помощью cat:

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

Наконец, можно также использовать команду free:

Добавление файла подкачки в систему CentOS

Дополнительный своп можно добавить в систему, создав файл и назначив его как своп. Это достигается следующим образом. Создайте файл подкачки с помощью команды dd (размер можно изменить, настроив переменную count=; в следующем файле создается файл размером 131 МБ):

Настроить файл как файл подкачки:

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

Наконец, измените файл /etc/fstab, чтобы автоматически добавлять новую подкачку во время загрузки системы, добавив следующую строку:

Добавление подкачки в том подкачки CentOS LVM

По умолчанию CentOS настраивает пространство подкачки с помощью управления логическими томами (LVM). Таким образом, альтернативой добавлению подкачки через файл является расширение логического тома, используемого для подкачки.

Первый шаг — определить текущий доступный объем подкачки, а также группу томов и логический том, используемые для пространства подкачки (дополнительную информацию о LVM см. в главе «Добавление нового диска в группу томов CentOS и логический том»). Объем):

Очевидно, что своп находится на логическом томе LogVol-01, который является частью группы томов VolGroup00. Следующим шагом является проверка наличия свободного места в группе томов, которое можно выделить для тома подкачки:

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

Затем переформатируйте том подкачки и снова включите подкачку:

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

Добавление пространства подкачки в группу томов CentOS

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

Приведенный выше вывод показывает, что в группе томов доступно только 64 МБ. Предположим, однако, что у нас есть требование добавить 2 ГБ к свопу в системе. Очевидно, что для этого потребуется добавить больше места в группу томов. Для целей этого примера предполагается, что раздел диска размером 2 ГБ, представленный /dev/sdc, доступен для добавления в группу томов. Первый шаг — превратить этот раздел в физический том:

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

На этом этапе команда vgs должна сообщить о добавлении 2 ГБ пространства в группу томов:

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

Затем расширьте логический том, чтобы использовать новое пространство:

Повторно создайте своп на логическом томе:

Затем снова включите подкачку:

Наконец, используйте команду swapon –s, чтобы проверить добавление пространства подкачки в систему:

Вы читаете образец главы из книги CentOS 5 Essentials Essentials.

Купите копию полностью обновленной версии CentOS 8 в формате электронной книги (24,99 долл. США) или печати (36,99 долл. США)

Печать CentOS 8 Essentials и электронная книга (ePub/PDF/Kindle) содержат 31 главу и более 260 страниц. Узнать больше.

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