Как добавить Swap на Ubuntu 14.04

swap__tw_-4

Вступление

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

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

Информация, записанная на диск, будет читаться медленнее, чем информация, хранящаяся в оперативной памяти, но операционная система предпочтёт продолжать работать с данными приложения в памяти и использовать Swap для более старых данных. В целом, в случае переполнения ОЗУ, файл подкачки поможет избежать падения вашего сервера.

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

Заметка

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

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

Проверяем систему на Swap-информацию

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

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

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

Другой, более привычный способ проверки файла подкачки – утилита free, которая показывает нам использование системной памяти. Мы можем увидеть нашу текущую память и использование Swap в мегабайтах, набрав:

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

Проверяем свободное место на разделе жёсткого диска

Типичный способ распределения пространства для Swap – использовать отдельный раздел, посвящённый этой задаче. Тем не менее, изменение схемы разбиения не всегда возможно. Мы можем так же легко создать файл подкачки, который находится на существующем разделе.

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

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

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

Так как моя система имеет 4 Гб оперативной памяти, и удваивание этого количества займёт значительный кусок моего дискового пространства, с которым я не готов расстаться, я буду создавать пространство подкачки на 4 гигабайта, чтобы соответствовать RAM моей системы.

Создаём файл подкачки

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

Мы создадим файл с именем swapfile в корневом (/) каталоге. Файл должен назначить объём пространства, который мы хотим выделить для нашего файла подкачки. Есть два основных способа сделать это:

Традиционный, медленный способ

По традиции мы создали бы файл с заранее выделенным пространством с помощью команды dd. Это универсальная утилита записи на диск из одного места в другое.

Мы можем это использовать чтобы записать нули в файл из специального устройства в системах Linux, расположенных в /dev/zero, которое просто выплёвывает столько нулей, сколько запрашивали.

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

В нашем примере мы хотим создать файл на 4 гигабайта. Мы можем сделать это, указав размер блока 1 Гб и количество 4:

Проверьте вашу команду, прежде чем нажать ENTER, поскольку это может уничтожить данные, если вы укажете of (которое ставится для выходного файла) в неправильном месте.

Мы можем увидеть что 4 гигабайта были выделены, набрав:

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

Если вы хотите узнать, как создать файл быстрее, удалите этот файл и следуйте указаниям ниже:

Быстрый способ

Более быстрый способ получить тот же самый файл – использовать программу fallocate. Эта команда создаёт файл с назначенным размером мгновенно, фактически без необходимости писать фиктивное содержимое.

Мы можем создать файл на 4 Гб, набрав:

Запрос будет возвращён вам почти сразу. Мы можем проверить, что было зарезервировано правильное количество пространства, набрав:

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

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

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

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

Убедитесь, что файл имеет верные права доступа, набрав:

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

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

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

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

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

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

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

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

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

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

Сохраните и закройте файл, когда вы закончите.

Отладим настройки файла подкачки

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

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

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

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

Мы можем посмотреть текущее значение swappiness, набрав:

Для рабочего стола установка swappiness на 60 – неплохое значение. Для системы VPS, мы, вероятно, хотели бы переместить его ближе к 0.

Мы можем установить swappiness другое значение с помощью команды sysctl.

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

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

В нижней части вы можете добавить:

Сохраните и закройте файл, когда вы закончите.

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

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

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

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

В нижней части добавьте строку, которая устанавливает ваше новое значение:

Сохраните и закройте файл, когда вы закончите.

Заключение

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

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

Источник: digitalocean.com

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

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