Ubuntu 18 swap настройка
Один из наиболее простых способов предотвратить ошибки нехватки памяти в приложениях — добавить пространство подкачки на сервер. В этом руководстве мы расскажем, как добавить файл подкачки на сервер Ubuntu 18.04.
Предупреждение: Хотя подкачка в целом рекомендуется для систем с использованием традиционных жестких дисков, ее использование с SSD-накопителями может со временем вызывать ухудшение аппаратного обеспечения. В связи с этим мы не рекомендуем использовать подкачку с DigitalOcean или с любым другим провайдером, использующим SSD-накопители. Использование подкачки может повлиять на надежность соответствующего аппаратного обеспечения у вас и ваших соседей. Настоящее руководство предоставляет справочные данные для пользователей, у которых в других местах имеются системы вращающихся дисков.
Если вам нужно повысить производительность сервера на DigitalOcean, рекомендуем обновить Droplet. Это приведет к лучшим результатам в целом и снизит вероятность создания проблем с аппаратным обеспечением, способных повлиять на ваши работы.
Что такое подкачка?
Область подкачки — раздел на жестком диске, отведенный для того, чтобы операционная система могла временно хранить данные, которые она больше не может удерживать в оперативной памяти. По сути, она дает возможность увеличить количество информации, которую сервер может сохранить в рабочей «памяти», с некоторыми оговорками. Область подкачки на жестком диске будет использоваться в основном тогда, когда в оперативной памяти больше нет достаточного места хранения данных для приложений.
Чтение и запись информации с диска намного медленнее, чем из оперативной памяти. Операционная система будет по-прежнему предпочитать работать с данными приложений в памяти, а подкачку использовать для более старых данных. Как правило, полезно перестраховываться и иметь область подкачки в качестве резерва на случай нехватки оперативной памяти, чтобы исключить ошибки памяти в системах без SSD.
Шаг 1 — Проверка информации о подкачке в системе
Сначала мы можем посмотреть, есть ли уже в системе область подкачки. Можно иметь несколько файлов или разделов подкачки, но обычно одного достаточно.
Можно узнать, сконфигурирована ли в системе подкачка, введя:
Если после этой команды ничего не появляется, в системе сейчас нет области подкачки.
Можно убедиться в отсутствии активной подкачки при помощи утилиты free :
В строке Swap видно, что в системе отсутствует активная подкачка.
Шаг 2 — Проверка свободного пространства в разделе жесткого диска
Перед созданием файла подкачки проверим текущее состояние диска, чтобы убедиться, что у нас достаточно места. Вводим:
В данном случае устройство с / в столбце Mounted on — наш диск. В данном примере у нас достаточно места (использовано только 1,4 Гбайт). Ваше использование, вероятно, будет другим.
Хотя существует много мнений относительно правильного размера области подкачки, на самом деле он зависит от ваших личных предпочтений и требований приложений. Обычно можно начать с объема, равного объему оперативной памяти в системе, или в два раза большего. Еще одно полезное общее правило — любое превышение 4 Гбайт для области подкачки, скорее всего, не нужно, если вы используете ее только для резервирования оперативной памяти.
Шаг 3 — Создание файла подкачки
Теперь, когда известно свободное место на жестком диске, можно создать файл подкачки в нашей файловой системе. Поместим файл под названием swapfile с необходимым для подкачки размером в корневую (/) директорию.
Лучше всего создавать файл подкачки при помощи программы fallocate . Эта команда мгновенно создает файл указанного размера.
Поскольку на сервере в нашем случае 1 Гбайт оперативной памяти, в этом руководстве создадим файл размером 1 Гбайт. Скорректируйте с учетом необходимости на вашем сервере:
Чтобы проверить правильность выделенного объема памяти, введите:
Файл создан с правильным выделенным объемом памяти.
Шаг 4 — Активация файла подкачки
Теперь, когда у нас есть файл правильного размера, нам нужно превратить его в пространство подкачки.
Сначала нужно изменить права доступа к файлу, чтобы только пользователи с правами root могли читать его содержимое. Это предотвращает доступ обычных пользователей к файлу — такой доступ может существенно влиять на безопасность.
Чтобы передать все права доступа пользователям root, введите:
Проверьте изменение прав доступа, введя следующее:
Теперь только у пользователя root отмечены флажки чтения и записи.
Теперь можем отметить файл как пространство подкачки, введя следующее:
После этого можем активировать файл подкачки, чтобы система начала использовать его:
Убедитесь, что пространство подкачки активировано, введя следующее:
Чтобы подтвердить наши выводы, можем снова проверить ответ утилиты free :
Подкачка успешно настроена, и операционная система начнет использовать ее по мере необходимости.
Шаг 5 — Сделать файл подкачки постоянным
В результате внесенных нами изменений файл подкачки активирован для текущей сессии. После перезагрузки сервер не сохранит настройки подкачки автоматически. Мы можем изменить это, добавив файл подкачки к файлу /etc/fstab .
Сделайте резервную копию файла /etc/fstab на случай если что-то пойдет не так:
Добавьте информацию о файле подкачки в конец файла /etc/fstab , введя следующее:
Далее рассмотрим некоторые настройки, которые мы сможем обновить, чтобы настроить пространство подкачки.
Шаг 6 — Изменение настроек подкачки
Существует несколько настраиваемых опций, влияющих на производительность системы при работе с пространством подкачки.
Настройка параметра Swappiness
Параметр swappiness определяет, как часто система выгружает данные из оперативной памяти в пространство подкачки. Его значение выражается числом от 0 до 100 процентов.
При значениях, близких к нулю, ядро не будет выгружать данные на диск, если в этом нет абсолютной необходимости. Взаимодействие с файлом подкачки требует гораздо больше времени, чем взаимодействие с оперативной памятью, и может вызывать значительное снижение производительности. Если система не зависит от подкачки, то, как правило, ее производительность повышается.
При значениях, близких к 100, система будет пытаться выгрузить больше данных на подкачку, чтобы разгрузить оперативную память. В зависимости от профиля памяти приложений и от тех задач, которые ставятся перед сервером, в некоторых случаях это плюс.
Можем увидеть текущее значение фактора swappiness, введя следующее:
Для настольного компьютера неплохое значение swappiness — 60. Для сервера, возможно, вы захотите приблизить его к 0.
Можно задать другое значение swappiness при помощи команды sysctl .
Например, чтобы установить значение swappiness 10, можно ввести следующее:
Эта настройка будет сохраняться до следующей перезагрузки. Можно автоматически задать это значение при перезагрузке, добавив строку в файл /etc/sysctl.conf :
Внизу можно ввести следующее:
Сохраните файл и закройте его после завершения.
Изменение настроек нагрузки кэш-памяти
Еще одно связанное значение, которое вы, возможно, захотите изменить — vfs_cache_pressure . Эта настройка определяет, насколько система будет кэшировать данные inode и dentry по сравнению с другими данными.
По сути, это данные доступа к файловой системе. Как правило, искать их довольно сложно, а запрашиваются они часто, так что кэш-память в этом случае весьма полезна. Чтобы узнать текущее значение этого параметра, можно еще раз запросить файловую систему proc :
Согласно текущим настройкам, система удаляет данные инодов из кэша слишком быстро. Можно задать более консервативное значение — например, 50 — введя следующее:
Опять-таки, это значение действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) изменить файл конфигурации:
Внизу добавьте строку с новым значением:
Сохраните и закройте файл после завершения.
Заключение
Следуя настоящему руководству, можно использовать оперативную память более эффективно, предотвращая исключения нехватки памяти. Пространство подкачки может быть весьма полезным для предотвращения некоторых распространенных проблем.
Когда возникают ошибки нехватки памяти или когда система не может запустить нужные приложения, наилучшее решение — оптимизировать конфигурации приложений или обновить сервер.
Сегодня мы будем говорить о файле подкачки в Linux. Расскажем для чего он нужен, как создать, изменить размер или удалить. В общем, все, что вам может понадобиться при работе со swap .
В операционной системе Linux, как и в других ОС, файл подкачки нужен для страховки оперативной памяти. Когда установленный объем ОЗУ заканчивается, используется именно выделенная область из файла подкачки. Это может понадобиться в двух случаях:
- Для того чтобы при полной занятости и, как следствие, отсутствия свободной оперативной памяти, компьютер не тормозил.
- Для распределения приоритетов (важным процессам отдается физическая оперативная память, а второстепенным файл подкачки Linux).
Сам по себе swap - это отдельный логический раздел вашего диска либо просто файл на системном разделе. Чаще всего он создается именно при установке операционной системы. Но создать swap linux можно и после завершения инсталляции ОС.
В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.
Как посмотреть swap в Linux
Прежде чем приступить к процессу добавления, настройки или удаление файла подкачки , необходимо проверить его наличие. Для этого проще всего использовать приведенную ниже команду. В нашем случае она выглядит так:
Используемая команда отображает размер файла подкачки вашей операционной системы. Однако, по ее результатам мы не можем определить – это файл подкачки или раздел подкачки. Поэтому будем использовать дополнительный другую команду, чтобы посмотреть swap linux. Вводим в терминал следующее:
Как видите, в нашем случае под swap выделено 1.4 Гб и это файл. То есть, он находится не на отдельном разделе, а на том же диске, на котором установлена операционная система.
Если это будет отдельный логический том, то под надписью « TYPE » мы увидим слово «partition».
Если бы файл подкачки в вашей операционной системе отсутствовал, результат работы команды free - h выглядел бы примерно так:
То есть, вместо каких-либо данных о файле подкачки вы увидите нули.
Создание файла подкачки Linux
Если вы удостоверились в том, что файл подкачки отсутствует, можно переходить к его созданию. Пример, приведенный ниже, будет показан с использованием операционной системы Ubuntu 18.04, но работать это должно и на других дистрибутивах Linux.
Шаг 1: Создаем swap файл
Давайте создадим файл подкачки для нашей Ubuntu. Для примера его размер составит 1 Гб. Запустите терминал и введите команду, приведенную ниже:
sudo fallocate -l 1G /swapfile
Для обеспечения безопасности файла обязательно устанавливаем на него нужные права.
sudo chmod 600 /swapfile
При этом вместо «swapfile» мы можем указать любое другое название.
Шаг 2: Создание файловой системы
Создание swap linux ещё не завершено. Теперь необходимо указать нашей операционной системе, что созданный объект должен использоваться как файл подкачки. Для этого мы будем использовать команду, приведенную ниже:
sudo mkswap /swapfile
Если все сделано верно, результат будет выглядеть так:
Шаг 3: Активируем файл подкачки
Хорошо, теперь наш Linux понимает, что это файл подкачки, но этого недостаточно. Нам также необходимо включить SWAP :
sudo swapon /swapfile
Давайте проверим, все ли мы сделали правильно:
Отлично, операционная система распознала наш файл подкачки и начала его использовать. Мы видим тип в поле TYPE и размер в поле SIZE .
Шаг 4. Сохранение изменений после перезагрузки
Все операции, которые мы предприняли выше, временны. Как только компьютер будет перезагружен, они отменятся. Для того чтобы сделать изменения постоянными, нам необходимо дописать кое-какую информацию в /etc/fstab. Для этого поступаем так:
Прежде чем начать работать с файлом, о котором мы говорим, необходимо обязательно создать его резервную копию:
sudo cp /etc/fstab /etc/fstab.back
После этого можно переходить непосредственно к добавлению нужных нам данных. Нам надо добавить в файл такую строчку:
/swapfile none swap sw 0 0
Это реализуется через текстовый редактор, запущенный с правами суперпользователя, либо при помощи введенной в терминал команды:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Готово. Изменения сохранены и файл подкачки не сбросится после перезагрузки операционной системы.
Настройка swappiness
Дальше будет рассмотрена настройка swap linux. У файла подкачки существуют параметры, которые сообщают ОС, как часто его нужно использовать. Это явление называется «свопингом» и может иметь значение в пределах 0 - 100. Если это значение ближе к 100, ядро будет перемещать в раздел подкачки больше информации чтобы освободить память. При значениях ближе к нулю, система будет использовать подкачку только при крайней необходимости.
К примеру, в версии Ubuntu L inux для рабочего стола устанавливается параметр 60, а в серверных редакциях операционной системы - 1. Для того чтобы проверить, какой параметр используется в нашей ОС, вводим в терминал такую команду:
Как видите, в нашем случае «свопинг» установлен как 60. Если же вы хотите поменять swappiness, можете воспользоваться оператором, цифра в конце которого и будет новым значением:
sudo sysctl vm.swappiness=25
Как и в случае с конфигурацией файла подкачки, данный параметр изначально будет временным и обнулится при следующей перезагрузке. Для того чтобы сделать его постоянным, в самом конце файла /etc/sysctl.conf записываем значение vm.swappiness=25.
Для этого можно воспользоваться, например, текстовым редактором, запущенным с администраторскими полномочиями.
Размер swap файла в Linux
Существует сразу несколько вариантов, позволяющих увеличить файл подкачки linux или уменьшить его. Однако, прежде чем их рассмотреть, необходимо напомнить об одном очень важном моменте:
Когда вы полностью отключаете файл подкачки, ваша операционная система использует только ОЗУ и в случае ее нехватки это может привести к полной остановке работы компьютера. Система просто зависнет.
Для того чтобы этого не произошло, в тот момент, когда мы удаляем или изменяем основной файл подкачки, необходимо создать второй, временный swap. Если вы это сделали или уверены в том, что имеющейся оперативной памяти хватит, можно переходить непосредственно к процессу изменения размера файла подкачки. Для этого давайте сначала отключим его:
sudo swapoff /swapfile
Вторым этапом меняем размер файла подкачки, воспользовавшись командой, приведенной ниже. При этом размер вашего swap файла нужно указать вместо параметра 2G (2 гигабайта):
sudo fallocate -l 2G /swapfile
Теперь форматируем полученный файл в файловую систему swap:
sudo mkswap /swapfile
А затем включаем его обратно:
sudo swapon /swapfile
При этом операционная система Linux позволяет использовать сразу несколько swap.
Как удалить файл подкачки в Linux
Если по каким-то причинам файл подкачки вам не нужен, можете удалить его. Для этого сначала надо отключить swap linux:
sudo swapoff /swapfile
А потом удаляем:
sudo rm /swapfile
Не забудьте установить права на вновь созданный файл подкачки так, как мы описывали это выше.
В заключение
Надеемся теперь концепция файла подкачки в Linux ясна вам на 100%. Можете переходить к практике и проверять наличие swap на вашем компьютере или ноутбуке, его настройке, созданию или даже удалению. Если в результате у вас останутся какие-то вопросы, предложения или замечания, можете задать их нам, воспользовавшись формой комментирования ниже.
Нет похожих записей
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Оцените статью:
(25 оценок, среднее: 4,60 из 5)Об авторе
18 комментариев
>> В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.
Конечно же это не так!
Есть приедложение: вставляй скриншоты именно тех окон, которые необходимы по ходу статьи а не ввесь скриншот твоего рабочего стола, для лучшей читабельности скриншота.
Вообще, автор несколько недоговаривает насчет свапа в GNU/Linux (вероятно, ввиду незнания). Дело в том, что свап нужен не столько для срочного получения памяти, сколько для ровного и эффективного высвобождения памяти. Использовать его в качестве "срочной памяти" в общем случае очень вредно.
И отключение swap не спасает от проблемы дискового ввода/вывода при конкуренции за память — дисковый I/O просто перемещается с анонимных страниц на файловые. Это не только может быть менее эффективным, поскольку остаётся меньший пул страниц, доступных для высвобождения, но и само по себе может способствовать появлению этой высокой конкуренции.
И включение свопа тоже не спасает от заполнения озу дисковым кэшем. На разных дистрибутивах периодически сталкиваюсь с одной и той же проблемой. ОЗУ забивается дисковым кэшем и система начинает тормозить, при том что своп есть, активен, но он не используется. Опытным путем пришел к выводу что система начинает юзать своп отталкиваясь не от параметра в графе "свободно", а от параметра в графе "доступно". Я не знаю верный ли вывод сделал, но со стороны все выглядит именно так. Имею на борту 8 гб ОЗУ. Во время работы системы постепенно дисковый кэш начинает увеличиваться в размере и занимает около 6гб, при этом под реальные нужды используется всего 1,5гб, в графе "свободно" указано около 500мб, в графе доступно около 6,5гб. Стоит только запустить какую-нибудь задачу, которая потребляет озу хотя бы 1,5 -3 гб (игра), как система идёт в штопор, количество свободной памяти уменьшается до минимума прописанного в ядре - 65мб, потом начинает высвобождаться дисковый кэш, но он его просто дропает, а не пишет в своп. Причем дропает примерно до размера чтобы в графе "свободно" было 150-180мб. И после этого система начинает балансировать на этих 180 мб. Всё, естественно, становится дерганным и лагучим. Своп по прежнему не используется. Опытным путем выяснено что своп начинает использоваться тогда, когда в графе "доступно" появляется значение сопоставимое с выставленным параметром swappiness. Мне интересно, так задумано или это баг?
Приходилось устанавливать минимальное количество свободной озу на 500мб вместо 65. Подбирать swappiness в соответствии с нуждами. Но сам по себе своппинг, тоже по сути зло. В момент доступа к диску все равно наблюдались микрофризы, хотя своп находится на ссд. Решением стала настройка и уменьшение дискового кэша. Конечно, это имеет и свою отрицательную сторону, но тут, как говорится, из двух зол выбирай меньшее.
Ещё забыл добавить, что если просто во время лагов вручную дропнуть кэш, то система оживает и работает хорошо до тех пор пока озу снова не забьётся кэшем.
Пространство подкачки может иметь форму выделенного раздела подкачки или файла подкачки. Обычно при запуске Ubuntu на виртуальной машине раздела подкачки нет, и единственный вариант - создать файл подкачки.
Прежде чем вы начнете
Прежде чем продолжить это руководство, проверьте, включена ли в вашей установке Ubuntu подкачка, набрав:
Если вывод пуст, это означает, что в вашей системе не включено пространство подкачки.
В противном случае, если вы получите что-то вроде ниже, у вас уже включен свопинг на вашем компьютере.
Хотя это возможно, не принято иметь несколько пространств подкачки на одной машине.
Создание файла подкачки
Пользователь, под которым вы вошли в систему, должен иметь права sudo, чтобы иметь возможность активировать свопинг. В этом примере мы добавим 1G своп. Если вы хотите добавить больше подкачки, замените 1G размер подкачки, которая вам нужна.
Выполните следующие шаги, чтобы добавить пространство подкачки в Ubuntu 18.04.
Начнем с создания файла, который будет использоваться для свопа:
Только пользователь root должен иметь возможность писать и читать файл подкачки. Установите правильные разрешения , набрав:
Воспользуйтесь mkswap утилитой для настройки области подкачки Linux для файла:
Активируйте файл подкачки с помощью следующей команды:
Чтобы сделать изменение постоянным, откройте /etc/fstab файл:
и вставьте следующую строку:
Убедитесь, что своп активен, используя команду swapon или free команду , как показано ниже:
Регулировка значения подкачки
Swappiness - это свойство ядра Linux, которое определяет, как часто система будет использовать пространство подкачки. Подкачка может иметь значение от 0 до 100. Низкое значение заставит ядро по возможности избегать подкачки, в то время как более высокое значение заставит ядро более агрессивно использовать пространство подкачки.
Значение swappiness по умолчанию - 60. Вы можете проверить текущее значение swappiness, введя следующую команду:
Хотя значение подкачки 60 подходит для большинства систем Linux, для производственных серверов вам может потребоваться установить более низкое значение.
Например, чтобы установить значение swappiness равным 10, выполните:
Чтобы сделать этот параметр постоянным при перезагрузке, добавьте в /etc/sysctl.conf файл следующую строку :
Оптимальное значение swappiness зависит от рабочей нагрузки вашей системы и того, как используется память. Вы должны регулировать этот параметр небольшими приращениями, чтобы найти оптимальное значение.
Удаление файла подкачки
Чтобы деактивировать и удалить файл подкачки, выполните следующие действия:
Начните с деактивации области подкачки, набрав:
Затем удалите запись файла подкачки /swapfile swap swap defaults 0 0 из /etc/fstab файла.
Наконец, удалите сам файл подкачки с помощью rm команды:
Заключение
Вы узнали, как создать файл подкачки, а также активировать и настроить пространство подкачки в вашей системе Ubuntu 18.04.
В этом руководстве описаны шаги, необходимые для добавления файла подкачки в системах Ubuntu 18.04.
Подготовка
Прежде чем продолжить это руководство, проверьте, включена ли в вашей установке Ubuntu подкачка, набрав:
Если вывод пуст, это означает, что в вашей системе не включено пространство подкачки.
В противном случае, если вы получите что-то вроде ниже, на вашем компьютере уже включен свопинг.
Хотя это возможно, не принято иметь несколько пространств подкачки на одной машине.
Создание файла подкачки
Пользователь, под которым вы вошли в систему, должен иметь права sudo, чтобы иметь возможность активировать свопинг. В этом примере мы добавим своп 1G . Если вы хотите добавить больше подкачки, замените 1G размером пространства подкачки, которое вам нужно.
Выполните следующие шаги, чтобы добавить пространство подкачки в Ubuntu 18.04.
Начнем с создания файла, который будет использоваться для свопа:
Только пользователь root должен иметь возможность писать и читать файл подкачки. Установите правильные разрешения , набрав:
Используйте утилиту mkswap для настройки области подкачки Linux для файла:
Активируйте файл подкачки с помощью следующей команды:
Чтобы сделать изменение постоянным, откройте файл /etc/fstab :
и вставьте следующую строку:
Убедитесь, что своп активен, используя команду swapon или free , как показано ниже:
Регулировка значения подкачки
Хотя значение подкачки 60 подходит для большинства систем Linux, для производственных серверов вам может потребоваться установить более низкое значение.
Например, чтобы установить значение swappiness равным 10, выполните:
Чтобы сделать этот параметр постоянным при перезагрузке, добавьте следующую строку в /etc/sysctl.conf :
Оптимальное значение swappiness зависит от рабочей нагрузки вашей системы и того, как используется память. Вы должны настраивать этот параметр небольшими приращениями, чтобы найти оптимальное значение.
Удаление файла подкачки
Чтобы деактивировать и удалить файл подкачки, выполните следующие действия:
Начните с деактивации области подкачки, набрав:
Затем удалите запись файла подкачки /swapfile swap swap defaults 0 0 из файла /etc/fstab .
Наконец, удалите фактический файл подкачки с помощью команды rm :
Выводы
Вы узнали, как создать файл подкачки, а также активировать и настроить пространство подкачки в вашей системе Ubuntu 18.04.
Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.
Добавление пространства swap (подкачки) – один из самых простых способов увеличить активность сервера и предотвратить ошибки приложений out of memory. Данное руководство поможет создать и включить swap-пространство на сервере Ubuntu 18.04.
Важно! Пространство swap рекомендуется добавлять в системах, использующих традиционные жесткие диски; использование swap в системах, работающих на SSD, со временем может вызвать проблемы и даже привести к порче оборудования. В связи с этим крайне не рекомендуется включать swap на серверах провайдеров, использующих SSD-хранилища.
Что такое swap?
Swap – это раздел на жестком диске, в котором операционная система может временно хранить данные, которые она больше не может удерживать в RAM. Это позволяет увеличить количество информации, хранящейся в рабочей памяти, но с некоторыми нюансами. Пространство жесткого диска будет использоваться, главным образом, когда RAM уже недостаточно для передачи данных.
1: Проверка системы на swap
Для начала нужно уточнить, активировано ли swap-пространство в данной системе. В целом, в рамках одной системы может быть несколько swap-файлов или swap-разделов, но одного должно быть вполне достаточно.
Чтобы узнать, есть ли активное swap-пространство в текущей системе, наберите:
sudo swapon --show
Если команда не вернула никакого результата, в текущей системе нет swap.
Еще один способ проверки swap-пространства – утилита free, которая показывает использование памяти системы. Чтобы узнать текущее состояние памяти и swap, наберите:
free -h
total used free shared buff/cache available
Mem: 985M 84M 222M 680K 678M 721M
Swap: 0B 0B 0B
Как можно видеть, общее использование swap в сети равно 0, что совпадает с результатом предыдущей команды.
2: Свободное пространство на жёстком диске
Как правило, в качестве swap-пространства используется специально выделенная область диска. Тем не менее, изменить схему разбиения диска не всегда возможно. В таком случае swap-пространство можно создать в уже существующем разделе.
Сначала нужно узнать текущее состояние диска. Чтобы получить эти данные, введите:
df -h
Filesystem Size Used Avail Use% Mounted on
udev 481M 0 481M 0% /dev
tmpfs 99M 656K 98M 1% /run
/dev/vda1 25G 1.4G 23G 6% /
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/vda15 105M 3.4M 102M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000
В данном случае диск – это устройство / в солбце Mounted on; как видите, места на нём достаточно много.
Существует множество расхожих мнений о «правильном» размере swap-пространства. В целом, это зависит от личных предпочтений пользователя и требований приложения. Как правило, swap-пространство должно быть равно или вдвое больше объема оперативной памяти системы. В этом вопросе нужно ориентироваться на свободное дисковое пространство. Например, если RAM системы – 4 гигабайта, а вдвое большее swap-пространство (т.е., 8 гигабайт) займет существенную часть диска, swap должен быть не более 4 гигабайт.
3: Создание swap-файла
Ознакомившись с важными моментами установки swap и узнав доступное пространство жесткого диска, можно приступить к созданию swap-файла в данной файловой системе.
В мануале такой файл называется swapfile и находится в root-каталоге (/). Файл должен иметь объем необходимого swap-пространства.
Быстрее всего создаёт такой файл программа fallocate. Она мгновенно создает файл заранее выделенного размера без необходимости писать фиктивное содержимое.
Поскольку в данном случае используется сервер с 1 Гб RAM, мы создадим 1 Гб swap-пространства.
sudo fallocate -l 1G /swapfile
Чтобы проверить выделенный объём памяти, введите:
ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
Как видите, команда создала файл с указанным объёмом памяти.
4: Включение swap-пространства
Теперь файл создан, но система пока что не знает, что его можно использовать. Нужно отформатировать данный файл, а затем включить его.
Но прежде необходимо изменить права на файл, чтобы только root имел право на чтение. Swap-файл с правами на чтение и изменение другими пользователями – огромный риск для безопасности сервера. Чтобы передать все права пользователю root, введите:
sudo chmod 600 /swapfile
Проверьте права на файл:
ls -lh /swapfile
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile
Теперь только пользователь root может читать файл и вносить изменения в него. Итак, файл защищен, теперь можно указать системе на swap-пространство с помощью команды:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
Чтобы включить swap-пространство, введите:
sudo swapon /swapfile
Убедитесь, что процедура прошла успешно, проверив отчеты системы о swap:
sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
Также можно использовать утилиту free:
free -h
total used free shared buff/cache available
Mem: 985M 84M 220M 680K 680M 722M
Swap: 1.0G 0B 1.0G
Теперь система сообщает о включенном swap-пространстве.
5: Автозагрузка swap
Итак, теперь swap пространство включено, но при перезапуске сервер не будет запускать его автоматически. Чтобы изменить это, отредактируйте файл fstab. Создайте резервную копию файла на всякий случай:
sudo cp /etc/fstab /etc/fstab.bak
Добавьте данные о swap в конец файла.
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
6: Тонкая настройка swap
Существует несколько опций, которые могут влиять на производительность системы при работе swap.
Параметр swappiness
Параметр swappiness задает частоту использования системой swap-пространства. Значение swappiness выражается числом от 0 до 100 и измеряется в процентах.
Если это значение близко к нулю, ядро не будет передавать данные в swap без крайней необходимости. Помните, взаимодействие со swap-файлом затратно для сервера, поскольку требует больше ресурсов, чем взаимодействие с оперативной памятью, что, следовательно, может привести к значительному снижению производительности. Обычно система работает продуктивнее, если не очень полагается на swap.
Если значение swappiness ближе к 100, система будет передавать в swap большое количество данных с целью сохранить больше свободного места в RAM. В зависимости от профиля памяти приложения и цели использования сервера, это может быть лучше в некоторых случаях.
Чтобы просмотреть текущее значение swappiness, введите:
cat /proc/sys/vm/swappiness
60
Значение 60 не так уж плохо, но для виртуального выделенного сервера лучше установить меньшее значение.
Чтобы, к примеру, задать параметру swappiness значение 10, нужно ввести:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
Данное значение будет действительным до следующей перезагрузки. Чтобы значение сохранялось и после перезагрузки сервера, откройте файл /etc/sysctl.conf в текстовом редакторе:
sudo nano /etc/sysctl.conf
Добавьте в конец файла:
Сохраните и закройте файл.
Параметр vfs_cache_pressure
Еще одна важная опция – это vfs_cache_pressure. Она управляет склонностью ядра восстанавливать память, которая используется для кэширования каталогов и инодов объектов.
В основном, это данные доступа к файловой системе. Как правило, найти их не так просто, а запрашиваются они часто, так что использовать кэш-память в этом случае очень удобно. Чтобы узнать текущее значение этого параметра, можно запросить файловую систему proc:
cat /proc/sys/vm/vfs_cache_pressure
100
Согласно текущим настройкам, система удаляет иноды из кэша слишком быстро. Установив меньшее значение (например, 50), система будет хранить информацию дольше:
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
Опять же, это значение действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) открыть конфигурационный файл sysctl в текстовом редакторе:
sudo nano /etc/sysctl.conf
и добавить в него строку:
Сохраните и закройте sysctl.
Заключение
Данный мануал рассказал вам, как рационально использовать оперативную память. Добавленное swap-пространство может предотвратить некоторые общие проблемы системы.
Столкнувшись с ошибкой OOM (out of memory) или обнаружив, что система не может запустить нужные приложения, можно попробовать оптимизировать конфигурации приложений или обновить сервер. Настройка swap дает большую гибкость и сэкономит время при работе с менее мощным сервером.
Читайте также: