Добавить Swap в CentOS/Fedora/RedHat

Добавить Swap в CentOS/Fedora/RedHat

Иногда, приходит время использовать SWAP из-за того что «заканчивается» оперативная память. Ну или нужно изменить файл подкачки ( увеличить или уменьшить). Т.к данные действия производятся очень редко, то я не держу в голове и мне приходится обращаться за помощью в гугл. Но данная статья «Добавить Swap в CentOS/Fedora/RedHat» будет служить как заметкой на момент использования.

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

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

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

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

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

Еще один способ — это с утилитой htop/top:

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

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

Т.к SWAP использует фал созданный на вашем HDD, то необходимо знать сколько имеется свободного места для данной операции. Я обычно использую утилиту — df:

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

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

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

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

—- СПОСОБ 1 — Это использование утилиты fallocate.

Самый быстрый и простой способ для создания файла подкачки — использование fallocate. Эта команда создает файл с мгновенным размером. Я выделю себе файл подкачки с 3 Гб, набрав:

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

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

—- СПОСОБ 2 — Это использование утилиты dd.

Определите размер нового файла подкачки в мегабайтах (парметр «count») и умножить на 1024, чтобы определить количество блоков. Например, создаем файл подкачки с 1Гб:

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

Я использовал утилиту «time» для того чтобы показать на сколько долго это занимает времени.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Т.к я использую виртуальную машину для тестов  — установка swappiness в 60 — дает не плохое значение, но для VPS желательно приблизить данный параметр в 0. И чтобы изменить swappiness используйте команду SYSCTL.

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

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

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

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

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

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

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

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

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

Полезная статья:

Увеличить SWAP на Ubuntu/Debian/Mint

Вот и все, тема «Добавить Swap в CentOS/Fedora/RedHat» завершена.

One thought on “Добавить Swap в CentOS/Fedora/RedHat

  1. dd: writing `/home/captain/swap/swap.img’: No space left on device
    0+5 records in
    0+4 records out
    10615627776 bytes (11 GB) copied, 144.066 s, 73.7 MB/s

    Не моргнул глазом и прям так в статью и запостил.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *