Centos 7 изменить размер swap
Проверка системы на наличие и использование свопа
Прежде чем приступить, нужно проверить сводную информацию об использовании и доступности подкачки на устройстве хранения. С помощью команды 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. Он вообще не может работать, поэтому я могу только увеличить пространство подкачки, чтобы замаскировать память и записать процесс работы.
- free -m
- cat /proc/meminfo | grep -i swap
- fdisk -l
- swap -s
- Используйте файлы разделов для увеличения SWAP
- Используйте пространство разделов для увеличения 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 |
Этот метод относительно прост в использовании. Вам не нужно делить раздел для выполнения подкачки. Вам нужно всего лишь использовать файл раздела, чтобы увеличить размер пространства подкачки.
- Создать файл подкачки
- Установите права доступа к файлам, чтобы разрешить работу только пользователям root
- Проверьте правильность размера файла и прав доступа
- Установить этот файл как файл подкачки
- Включить файл подкачки
- Сделать файл подкачки постоянным
Добавьте в конце:
Изменить, если есть, добавить, если нет: (изменить значение при необходимости)
- Перезагрузка вступает в силу
- Используйте метод, упомянутый в начале, чтобы просмотреть результаты
Этот метод должен разделить указанный раздел, чтобы сделать своп
Читайте также: