Centos 7 изменить размер swap

Обновлено: 05.07.2024

Проверка системы на наличие и использование свопа

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

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

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

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

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

Важно убедится в наличии доступного места на носителе:

Для использования еще доступно 26G и этого достаточно.

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

Создать 1-гигабайтный файл подкачки указанного размера используя команду fallocate:

С помощью ls можно убедится в его наличии и в достаточном количестве зарезервированного пространства:

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

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

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

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

Сразу включить файл подкачки

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

В данный момент файл подкачки включен и при необходимости используется. После перезагрузки сервер должен автоматически включать для использования файл свопа. На подключение укажет строка дописанная в таблицу управляющую файловыми системами и разделами в файле fstab.
На этом этапе, есть вероятность получить следующую ошибку swapon failed: Invalid argument:

Пишет, что недопустимый аргумент, в этом случае поможет это CentOS 7 — swapon failed: Invalid argument решение.

Подключение файла подкачки после загрузки системы

Чтобы файл подключался во время загрузки системы, в файл fstab

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

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

Своп (англ. Swap) – один из самых простых способов повысить реакцию сервера и предотвратить ошибки приложения «out of memory». Своп – это область на накопителе, в которой операционная система может временно хранить данные, которые больше не могут находиться в памяти. Это увеличивает количество информации, которое может храниться на сервере, но при этом нужно учитывать некоторые нюансы: обработка информации в области своп намного медленнее, чем в памяти. Тем не менее, своп может защитить сервер от ошибок, связанных с нехваткой памяти. Если у сервера без активированного своп-пространства закончится память, он начнет останавливать приложения, чтоб освободить нужный объем памяти, что может привести к аварийным отказам и сбоям. Своп необходим некоторым приложениям для того, чтобы обеспечить надежный и бесперебойный доступ к данным. В данном руководстве показано, как создать и включить своп-файл на сервере CentOS 7.

Требования

Для начала нужно подготовить систему. Чтобы следовать данному руководству, необходимо предварительно настроить сервер CentOS 7 и создать нового пользователя с расширенными привилегиями (sudo). Чтобы получить инструкции по начальной настройке сервера CentOS 7, читайте эту статью. Выполнив все предварительные требования, создайте SSH-подключение к серверу и приступайте к созданию своп-файла.

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

Для начала нужно проверить сервер на наличие активированного своп-пространства. На самом деле, в рамках одной системы можно создать несколько областей своп, но в целом одной своп-области будет достаточно. Узнать, есть ли активное swap-пространство в текущей системе, можно при помощи утилиты общего назначения 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

Swap: 0 0 4095

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

Доступное пространство на жестком диске

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

df -h

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 59G 1.5G 55G 3%

/ 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 выводит информацию в удобном для восприятия человеком формате. То есть, вместо того, чтобы выводить необработанный ряд блоков памяти, команда df -h покажет использование памяти и доступное пространство в мегабайтах (М) или гигабайтах (G).

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

Создание своп-файла

Ознакомившись с важными моментами установки своп-пространства, а также узнав доступное пространство жесткого диска, приступайте к созданию своп-файла в данной файловой системе. В этом руководстве такой файл называется swapfile и находится в root-каталоге (/); конечно, назвать и разместить файл можно согласно собственным предпочтениям. Файл должен иметь объем необходимого swap-пространства. Это можно сделать несколькими способами. Рассмотрим наиболее быстрый способ – это команда fallocate, которая мгновенно создает файл заранее выделенного размера. Итак, чтобы создать файл в 4 гигабайта, наберите:sudo fallocate -l 4G /swapfileВведите пароль текущего пользователя, чтобы получить доступ к привилегиям sudo, после чего практически сразу же будет создан нужный файл. Чтобы убедиться, что для данного файла выделено необходимое количество пространства, используйте:

ls -lh

/swapfile -rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile

Как видите, все было выполнено должным образом.

Активация своп-файла

Теперь файл создан и готов к работе, но система не знает, что его нужно использовать как swap-пространство. Нужно отформатировать этот файл, а затем активировать его. Для начала необходимо изменить права на файл, запретив доступ к нему всем пользователям, кроме root. Swap-файл с правами на чтение и изменение другими пользователями является серьезной уязвимостью для безопасности сервера. Чтобы передать все привилегии пользователю root, используйте chmod:sudo chmod 600 /swapfileДанная команда передаст root-пользователю исключительные права на чтение и изменение файла. Чтобы убедиться, что привилегии установлены верно, запустив команду ls –lh:

ls -lh

/swapfile -rw------- 1 root root 4.0G Oct 30 11:00 /swapfile

Теперь файл защищен и готов к работе в качестве swap-пространства; укажите системе на данный файл с помощью команды:sudo swapon /swapfileЧтобы убедиться, что процедура прошла успешно, проверьте отчеты системы о swap (как в начале статьи):swapon -s Filename Type Size Used Priority /swapfile file 4194300 0 -1Этот результат подтверждает, что новый своп-файл работает должным образом. Чтоб подтвердить результат, используйте также утилиту free:

free -m

total used free shared buffers

cached Mem: 3953 315 3637 8 11 107 -

/+ buffers/cache: 196 3756 Swap: 4095 0 4095

Готово! Своп-файл успешно добавлен; теперь операционная система может использовать его в случае необходимости.

Автоматизация запуска swap-файла

Своп-файл активирован, но при перезапуске сервера его придется запускать вручную. Чтобы сервер запускал его автоматически, отредактируйте файл fstab (который управляет файловыми системами и разделами) с привилегиями root, открыв его в текстовом редакторе:sudo nano /etc/fstabВ конец файла нужно внести строку, которая будет автоматически запускать созданный своп-файл:

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

Тонкая настройка swap (дополнительно)

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

Параметр Swappiness

Параметр swappiness определяет, как часто система может отправлять данные из оперативной памяти в своп. Значение swappiness выражается числом от 0 до 100 (это использованная ОП в процентах; достижение этого значения приведет к использованию своп-пространства). Если значение swappiness близко к нулю, ядро не будет передавать данные в swap без крайней необходимости. Помните, взаимодействие со swap-файлом «дорого обходится» серверу, поскольку требует больше ресурсов, чем взаимодействие с оперативной памятью, что может привести к существенному снижению производительности. Система, как правило, работает продуктивнее, если не слишком часто обращается к swap. Если значение swappiness ближе к 100, система будет передавать в swap огромное количество данных с целью сохранить больше свободного места в RAM. В некоторых случаях этот вариант может быть лучше (это зависит от профиля памяти приложения и цели использования сервера). Чтобы узнать текущее значение swappiness, обратитесь к конфигурационному файлу swappiness:cat /proc/sys/vm/swappiness 30Стандартное значение swappiness в CentOS 7 – 30, что в большинстве случаев достаточно неплохо. Но для VPS лучше установить более близкое к 0 значение. Чтобы изменить значение swappiness, используйте команду sysctl. К примеру, чтобы задать swappiness значение 10, введите:sudo sysctl vm.swappiness=10 vm.swappiness = 10Данное значение будет действительным до следующей перезагрузки. Чтобы значение сохранялось и после перезагрузки сервера, откройте файл sysctl:sudo nano /etc/sysctl.confи внесите в него нужное значение:vm.swappiness = 10Затем сохраните и закройте файл. Теперь сервер будет автоматически устанавливать нужное значение параметра swappiness при каждой перезагрузке.

Параметр cache_pressure

Еще один важный параметр – vfs_cache_pressure; он управляет хранением записей специальных метаданных файловой системы. Постоянно чтение и обновление этой информации, как правило, требует большого количества ресурсов, поэтому хранить ее в кэше очень полезно для производительности системы. Текущее значение этого параметра можно узнать, запросив файловую систему proc:cat /proc/sys/vm/vfs_cache_pressure 100. Согласно текущим настройкам, система удаляет иноды из кэша слишком быстро. Установив меньшее значение при помощи команды sysctl (например, 50), система будет хранить информацию дольше:

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

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

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

Заключение

Данное руководство поможет научиться рационально использовать оперативную память. Кроме того, оно знакомит с основами использования swap-пространства, что может предотвратить некоторые общие проблемы. Столкнувшись с ошибкой «out of memory» или обнаружив, что система не может запустить нужные приложения, попробуйте оптимизировать настройки приложений или обновить сервер. Настройка своп-файла, однако, дает большую гибкость и позволяет сэкономить время при работе с менее мощным сервером.

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Начните с деактивации области подкачки, набрав:

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

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

Выводы

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

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


Проверяем наличие SWAP-а в CentOS/Fedora/RedHat

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

Через утилиту swapon:

Если ничего не возвращается командой, то на сервере нет файла для подкачки. У меня он есть, я ему выделил 2Гб. Но предположим что мне этого мало и я хотел бы увеличить его до 3-4Гб.

Удобный для проверки способ выбирайте сами.

Проверяем дискового пространства и свободного места в CentOS/Fedora/RedHat

Как я вижу из вывода, место имеется и я смогу выделить 3Гб легко.

Создание файла подкачки (SWAP) в CentOS/Fedora/RedHat

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

Вы можете использовать любое другое место.

Чтобы проверить что вышло, выполните:

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

Так же, можно указать создаваемый блок не в мегабайтах, а в гигабайтах:

Включаем/Подключаем Swap в CentOS/Fedora/RedHat

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

Смотрим что вышло:

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

Наш файл подкачки теперь готов к использованию, но нужно еще его включить:

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

Этот вывод подтверждает, что в системе имеется новый файл подкачки. Вот еще один вывод:

С помощью утилиты free, видно что у меня своп уже не 2Гб ( как было ранее), а уже 5Гб. Swap был успешно установлен и ОС начнет использовать его по мере необходимости.

Чтобы выключить его с ОС, используйте:

Он будет работать до перезагрузки ОС.

Автоматическое монтирование Swap в CentOS/Fedora/RedHat

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

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

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

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

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

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

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

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

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

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

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

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

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

В самом низу происываем строку, которая определяет ваше новое значение:

Как видим, все работает и нет ничего сложного.

Недавно я купил неимущую версию ECS от Alibaba Cloud. Память составляет всего 1 G. Он используется для запуска GitLab. Он вообще не может работать, поэтому я могу только увеличить пространство подкачки, чтобы замаскировать память и записать процесс работы.

  1. free -m
  2. cat /proc/meminfo | grep -i swap
  3. fdisk -l
  4. swap -s
  1. Используйте файлы разделов для увеличения SWAP
  2. Используйте пространство разделов для увеличения SWAP

(Официально рекомендуется Redhat5)

RAM SWAP
RAM<=4G 2G
4G<RAM<16G 4G
16G<RAM<64G 8G
64G<RAM<256G 16G

(Официально рекомендовано Redhat6 / 7)

RAM SWAP
RAM<=2G 2*RAM
2G<RAM<8G RAM
8GRAM<64G >=4G
RAM>=64G >=4G

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

  1. Создать файл подкачки
  1. Установите права доступа к файлам, чтобы разрешить работу только пользователям root
  1. Проверьте правильность размера файла и прав доступа
  1. Установить этот файл как файл подкачки
  1. Включить файл подкачки
  1. Сделать файл подкачки постоянным

Добавьте в конце:

Изменить, если есть, добавить, если нет: (изменить значение при необходимости)

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

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

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