Один из самых простых способов увеличения оперативности вашего сервера и защиты от ошибок памяти в приложениях, это добавить пространства подкачки. Свап это область на жестком диске, который был назначен в качестве места, где операционная система может временно хранить данные, которые он не может больше держать в памяти.
В принципе, это дает вам возможность увеличить количество информации, которую ваш сервер может сохранить в своей рабочей "памяти", с некоторыми предостережениями. Пространство на жестком диске будет использоваться, главным образом, когда пространству в оперативной памяти больше не хватает места для данных.
Информация, записанная на диск будет отображаться медленнее, чем информация, которая хранится в оперативной памяти, но операционная система будет предпочитать держать рабочие прикладные данные в памяти и использовать своп для старых данных. В целом, имея пространство подкачки как возврат назад, когда ОЗУ вашей системы будет исчерпано является хорошим способом безопасности.
В этом руководстве мы расскажем, как создать и включить файл подкачки на сервере Ubuntu 14.04.
Прежде, чем мы начнем, мы взглянем на нашу операционную систему, чтобы увидеть есть ли у нас уже доступные подкачки. Мы можем иметь несколько доступных файлов подкачки или раздел подкачки. Мы можем иметь несколько файлов подкачки или раздел подкачки, но в целом одного будет достаточно.
Мы можем увидеть, если система имеет какой-нибудь настроенный swap , набрав:
sudo swapon -s
Filename Type Size Used Priority
Если вы только вернете заголовок таблицы обратно, как было показано выше , то вы не включите пространство для подкачки.
Другой, более привычный способ проверки подкачки это подключение бесплатной утилиты, которая показывает нам использование памяти. Мы видим нашу текущую память и использование подкачки в мегабайтах, набрав:
free -m total used free shared buffers cached Mem: 3953 154 3799 0 8 83 -/+ buffers/cache: 62 3890 Swap: 0 0 0
Как вы можете видеть выше. Наше общее пространство подкачки в системе равно 0. Это соответствует тому, что мы видели с предыдущей командой.
Типичный способ распределения пространства для подкачки – это использовать отдельный раздел, посвященный этой задаче. Мы можем так же легко создать файл подкачки, который находится в существующем разделе.
Прежде, чем мы будем это делать – мы должны получить информацию о текущем использовании диска. Мы можем получить эту информацию, набрав:
df -h Filesystem Size Used Avail Use% Mounted on /dev/vda 59G 1.3G 55G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 12K 2.0G 1% /dev tmpfs 396M 312K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 0 2.0G 0% /run/shm none 100M 0 100M 0% /run/user
Как вы можете видеть на первой линии, наш раздел жесткого диска имеет доступные 55 гигабайт, поэтому у нас есть огромное количество пространства для работы. Это последние данные, средний VPS, одна в фактическое использование, может быть очень разным.
Хотя есть много мнений о соответствующем размере подкачки, это действительно зависит от ваших личных предпочтений и требований приложения. Как правило, сумма, равная или двойной объем оперативной памяти в вашей системе является хорошей отправной точкой.
Так как моя система имеет 4 гигабайта оперативной памяти, и удвоение, которое возьмет значительный кусок моего дискового пространства, с которым я не готов расстаться, я создам пространство подкачки 4 гигабайта оперативной памяти, которые будут соответствовать моей системе.
Теперь мы знаем доступное пространство на жестком диске, дальше мы можем создавать файл подкачки в нашей файловой системе.
Мы создадим файл с именем swapfile в root каталог. Файл должен выделить обьем пространства для нашего файла подкачки. Есть два основных способа сделать это:
Традиционный, медленный способ
Традиционно, мы должны создать файл c выделенным пространством с помощью команды dd.
Это универсальная утилита записи на диск из одного места в другое место.
Мы можем использовать это, чтобы написать нули в файле с помощью специального устройства в системах linux, расположенных в /dev/zero,
которое выдает столько нулей, сколько мы запрашивали.
Мы указываем размер файла с помощью комбинации bs для размера блока и подсчитываем количество блоков. Мы можем придать значение параметра полностью произвольным. Значение имеет то, что получиться мультиплеерный продукт.
Например, в нашем примере мы пытаемся создать файл 4 гигабайт. Мы можем сделать это, указав размер блока в 1 гигабайт и количество 4.
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
4+0 records in
4+0 records out
4294967296 bytes (4.3 GB) copied, 18.6227 s, 231 MB/s
Проверьте Вашу команду, прежде чем нажать кнопку Enter, потому что это потенциально может уничтожить данные, если вы укажете точку в неправильном месте.
Мы видим, что 4 гигабайта были выделены набрав:
ls -lh /swapfile -rw-r--r-- 1 root root 4.0G Apr 28 17:15 /swapfile
Если вы завершили команду, указанную выше , вы можете заметить , что она сработала очень быстро. По факту, вы можете увидеть, что система справилась за 18 секунд над созданием файла. Это потому, что система должна была написать 4 гигабайта нулей на диск.
Если вы хотите узнать, как создать файл быстрее, удалите файл и следуйте указаниям ниже:
sudo rm /swapfile
Более быстрый способ получить похожий файл – это использовать программу fallocate. Эта команда создает файл выделенного размера мгновенно, фактически не имея фиктивного содержания.
Мы можем создать файл 4 гигабайта набрав:
sudo fallocate -l 4G /swapfile
Приглашение будет возвращено Вам почти сразу. Мы можем убедиться, что правильное количество пространства было зарезервировано набрав:
ls -lh /swapfile -rw-r--r-- 1 root root 4.0G Apr 28 17:19 /swapfile
Как вы можете видеть, наш файл создается с правильным количеством выделенного пространства.
Прежде, чем мы делаем это, нам нужно настроить разрешения на нашем файле, так чтобы чтение было открыто только для root. Разрешение другим пользователям читать или изменять этот файл будет высоким риском безопасности. Мы можем заблокировать разрешения, набрав:
sudo chmod 600 /swapfile
Убедитесь, что файл имеет соответствующие разрешения, набрав:
ls -lh /swapfile -rw------- 1 root root 4.0G Apr 28 17:19 /swapfile
Как вы можете видеть, только столбцы для суперпользователя имеют чтение и включена запись флагов.
Теперь, наш файл является более безопасным, мы можем сказать что наша система подкачки создана выполнив:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944
Наш файл теперь готов к использованию в качестве подкачки. Мы можем включить это с помощью команды:
sudo swapon -s Filename Type Size Used Priority /swapfile file 4194300 0 -1
Здесь у нас появился новый файл подкачки. Мы можем использовать бесплатную утилиту снова, чтобы подтвердить наши выводы:
free -m total used free shared buffers cached Mem: 3953 101 3851 0 5 30 -/+ buffers/cache: 66 3887 Swap: 4095 0 4095
Наша подкачка была создана успешно, и наша операционная система начнет использовать его по мере необходимости.
У нас включен файл подкачки, но когда мы перезагрузим сервер, то файл не сможет включиться автоматически. Мы можем исправить это создав fstab файл.
Отредактируйте файл с привилегиями суперпользователя в текстовом редакторе:
sudo nano /etc/fstab
В нижней части файла необходимо добавить строку которая укажет операционной системе автоматически использовать созданный файл:
/swapfile none swap sw 0 0
Сохраните и закройте файл, когда закончите работу.
Есть несколько вариантов, которые вы можете настроить, что будет иметь влияние на производительность вашей системы при работе с подкачки.
Параметр swapiness определяет, как часто ваша система меняет данные из оперативной памяти в пространство подкачки.
Это значение между 0 и 100, который представлен в процентном соотношении.
При значении близких к нулю ядро не будет менять данные на диске без крайней необходимости.
Помните, взаимодействия с файлом подкачки «дороги» тем, что они дольше взаимодействуют с ОЗУ и они могут привести к значительному снижению производительности. Приказав системе не полагаться сильно на подкачку, может в главным образом ускорить систему.
Значения, близкие к 100 будут пытаться добавить больше данных в файл подкачки чтобы сохранить больше свободного пространства ОЗУ. В зависимости от профиля памяти ваших приложений или задач, для которых вы используете сервер, это может быть решением в некоторх случаях.
Мы можем увидеть текущее значение подкачки, набрав:
cat /proc/sys/vm/swappiness
60
Для рабочего стола, настройка подкачки на уровне 60 не такой уж и плохой показатель. Для системы VPS будет проблемой приблизить показатель к 10.
Мы можем установить подкачку по разным показателям используя команду sysctl.
Например, чтобы установить подкачку до 10, мы можем набрать:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
Этот параметр не будет сохраняться до следующей перезагрузки. Мы можем установить это значение автоматически при перезагрузке, добавив строку в наш файл /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
В нижней части, вы можете добавить:
vm.swappiness=10
Сохраните и закройте файл после окончания работы.
Другое релевантное значение, которое вы захотите изменить это vfs_cache_pressure.
Этот параметр определяет какое количество кэша индексирует система поверх других данных.
В основном, это данные для доступа файловой системы.
В основном это смотрится объемно и отличный способ для кэширования системы. Вы сможете увидеть текущий показатель сделав снова запрос к процедуре файловой системы:
cat /proc/sys/vm/vfs_cache_pressure
100
Сейчас система настроена таким образом что информация из кэша удаляется очень быстро. Мы можем установить более консервативные настройки , на уровне 50, набрав:
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
Опять же, это справедливо только для нашей текущей сессии. Мы можем изменить это добавив в наши настройки файла настройки которые мы использовали для подкачки:
sudo nano /etc/sysctl.conf
В нижней части добавляем строку, которая указывает наше новое значение:
vm.vfs_cache_pressure = 50
Сохраните и закройте файл после окончания.
После инструкций в нашем руководстве у Вашей оперативной памяти появится передышка во время использования. Пространство подкачки невероятно удобно в использовании во-избежании некоторых проблем.
Во избежании ошибок памяти, или если вы обнаружите что ваша система не в состоянии использовать нужные вам приложения, то лучшим решением будет оптимизировать свои приложения или конфигурации и обновить сервер. Настройка пространства подкачки может дать вам больше гибкости и помочь купить время на более мощном сервере.
Источник здесь