One place for hosting & domains

      подкачки

      Добавление области подкачки на Ubuntu 20.04


      Введение

      Одним из способов защиты от ошибок, связанных с недостатком памяти в приложениях, является добавление области подкачки на вашем сервере. В этом руководстве мы расскажем, как добавить файл подкачки на сервер Ubuntu 20.04.

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

      Что такое подкачка?

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

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

      Шаг 1 — Проверка информации о подкачке в системе

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

      Можно узнать, сконфигурирована ли в системе подкачка, введя:

      Если после этой команды ничего не появляется, в системе сейчас нет области подкачки.

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

      Output

      total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B 0B

      В строке ​​​Swap видно​​​, что в системе отсутствует активная подкачка.

      Шаг 2 — Проверка свободного пространства в разделе жесткого диска

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

      Output

      Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 932K 98M 1% /run /dev/vda1 25G 1.4G 23G 7% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi /dev/loop0 55M 55M 0 100% /snap/core18/1705 /dev/loop1 69M 69M 0 100% /snap/lxd/14804 /dev/loop2 28M 28M 0 100% /snap/snapd/7264 tmpfs 99M 0 99M 0% /run/user/1000

      В данном случае устройство с / в столбце ​​​​​​Mounted on​​​ — наш диск. В данном примере у нас достаточно места (использовано только 1,4 Гбайт). Ваше использование, вероятно, будет другим.

      Хотя существует много мнений относительно правильного размера области подкачки, на самом деле он зависит от ваших личных предпочтений и требований приложений. Обычно можно начать с объема, равного объему оперативной памяти в системе, или в два раза большего. Еще одно полезное общее правило — любое превышение 4 Гбайт для области подкачки, скорее всего, не нужно, если вы используете ее только для резервирования оперативной памяти.

      Шаг 3 — Создание файла подкачки

      Теперь, когда известно свободное место на жестком диске, можно создать файл подкачки в нашей файловой системе. Мы добавим файл необходимого размера под названием swapfile в корневую (/) директорию.

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

      Поскольку на сервере в нашем случае 1 Гбайт оперативной памяти, в этом руководстве создадим файл размером 1 Гбайт. Скорректируйте с учетом необходимости на вашем сервере:

      • sudo fallocate -l 1G /swapfile

      Чтобы проверить правильность выделенного объема памяти, введите:

      • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

      Файл создан с правильным выделенным объемом памяти.

      Шаг 4 — Активация файла подкачки

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

      Сначала нужно изменить права доступа к файлу, чтобы только пользователи с правами root могли читать его содержимое. Это предотвращает доступ обычных пользователей к файлу — такой доступ может существенно влиять на безопасность.

      Чтобы передать все права доступа пользователям root, введите:

      Проверьте изменение прав доступа, введя следующее:

      Output

      -rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

      Теперь только у пользователя с правами root отмечены флажки чтения и записи.

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

      Output

      Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

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

      Убедитесь, что пространство подкачки активировано, введя следующее:

      Output

      NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2

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

      Output

      total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 1.0Gi 0B 1.0Gi

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

      Шаг 5 — Сделать файл подкачки постоянным

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

      Сделайте резервную копию файла /etc/fstab на случай если что-то пойдет не так:

      • sudo cp /etc/fstab /etc/fstab.bak

      Добавьте информацию о файле подкачки в конец файла /etc/fstab, введя следующее:

      • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

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

      Шаг 6 — Изменение настроек подкачки

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

      Настройка параметра Swappiness

      Параметр swappiness определяет, как часто система выгружает данные из оперативной памяти в пространство подкачки. Его значение выражается числом от 0 до 100 процентов.

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

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

      Можем увидеть текущее значение фактора swappiness, введя следующее:

      • cat /proc/sys/vm/swappiness

      Output

      60

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

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

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

      • sudo sysctl vm.swappiness=10

      Output

      vm.swappiness = 10

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

      • sudo nano /etc/sysctl.conf

      Внизу можно ввести следующее:

      /etc/sysctl.conf

      vm.swappiness=10
      

      Сохраните файл и закройте его после завершения.

      Изменение настроек нагрузки кэш-памяти

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

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

      • cat /proc/sys/vm/vfs_cache_pressure

      Output

      100

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

      • sudo sysctl vm.vfs_cache_pressure=50

      Output

      vm.vfs_cache_pressure = 50

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

      • sudo nano /etc/sysctl.conf

      Внизу добавьте строку с новым значением:

      /etc/sysctl.conf

      vm.vfs_cache_pressure=50
      

      Сохраните и закройте файл после завершения.

      Заключение

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

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



      Source link

      Как добавить пространство подкачки на Ubuntu 18.04


      Предыдущая версия данного обучающего руководства была написана Джастином Эллингвудом

      Введение

      Один из наиболее простых способов предотвратить ошибки нехватки памяти в приложениях — добавить пространство подкачки на сервер. В этом руководстве мы расскажем, как добавить файл подкачки на сервер Ubuntu 18.04.

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

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

      Что такое подкачка?

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

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

      Шаг 1 — Проверка информации о подкачке в системе

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

      Можно узнать, сконфигурирована ли в системе подкачка, введя:

      Если после этой команды ничего не появляется, в системе сейчас нет области подкачки.

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

      Output

      total used free shared buff/cache available Mem: 985M 84M 222M 680K 678M 721M Swap: 0B 0B 0B

      В строке ​​​Swap видно​​​, что в системе отсутствует активная подкачка.

      Шаг 2 — Проверка свободного пространства в разделе жесткого диска

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

      Output

      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​​​ — наш диск. В данном примере у нас достаточно места (использовано только 1,4 Гбайт). Ваше использование, вероятно, будет другим.

      Хотя существует много мнений относительно правильного размера области подкачки, на самом деле он зависит от ваших личных предпочтений и требований приложений. Обычно можно начать с объема, равного объему оперативной памяти в системе, или в два раза большего. Еще одно полезное общее правило — любое превышение 4 Гбайт для области подкачки, скорее всего, не нужно, если вы используете ее только для резервирования оперативной памяти.

      Шаг 3 — Создание файла подкачки

      Теперь, когда известно свободное место на жестком диске, можно создать файл подкачки в нашей файловой системе. Поместим файл под названием swapfile с необходимым для подкачки размером в корневую (/) директорию.

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

      Поскольку на сервере в нашем случае 1 Гбайт оперативной памяти, в этом руководстве создадим файл размером 1 Гбайт. Скорректируйте с учетом необходимости на вашем сервере:

      • sudo fallocate -l 1G /swapfile

      Чтобы проверить правильность выделенного объема памяти, введите:

      • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

      Файл создан с правильным выделенным объемом памяти.

      Шаг 4 — Активация файла подкачки

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

      Сначала нужно изменить права доступа к файлу, чтобы только пользователи с правами root могли читать его содержимое. Это предотвращает доступ обычных пользователей к файлу — такой доступ может существенно влиять на безопасность.

      Чтобы передать все права доступа пользователям root, введите:

      Проверьте изменение прав доступа, введя следующее:

      Output

      -rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

      Теперь только у пользователя root отмечены флажки чтения и записи.

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

      Output

      Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

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

      Убедитесь, что пространство подкачки активировано, введя следующее:

      Output

      NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2

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

      Output

      total used free shared buff/cache available Mem: 985M 84M 220M 680K 680M 722M Swap: 1.0G 0B 1.0G

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

      Шаг 5 — Сделать файл подкачки постоянным

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

      Сделайте резервную копию файла /etc/fstab на случай если что-то пойдет не так:

      • sudo cp /etc/fstab /etc/fstab.bak

      Добавьте информацию о файле подкачки в конец файла /etc/fstab, введя следующее:

      • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

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

      Шаг 6 — Изменение настроек подкачки

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

      Настройка параметра Swappiness

      Параметр swappiness определяет, как часто система выгружает данные из оперативной памяти в пространство подкачки. Его значение выражается числом от 0 до 100 процентов.

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

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

      Можем увидеть текущее значение фактора swappiness, введя следующее:

      • cat /proc/sys/vm/swappiness

      Output

      60

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

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

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

      • sudo sysctl vm.swappiness=10

      Output

      vm.swappiness = 10

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

      • sudo nano /etc/sysctl.conf

      Внизу можно ввести следующее:

      /etc/sysctl.conf

      vm.swappiness=10
      

      Сохраните файл и закройте его после завершения.

      Изменение настроек нагрузки кэш-памяти

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

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

      • cat /proc/sys/vm/vfs_cache_pressure

      Output

      100

      Согласно текущим настройкам, система удаляет данные инодов из кэша слишком быстро. Можно задать более консервативное значение — например, 50 — введя следующее:

      • sudo sysctl vm.vfs_cache_pressure=50

      Output

      vm.vfs_cache_pressure = 50

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

      • sudo nano /etc/sysctl.conf

      Внизу добавьте строку с новым значением:

      /etc/sysctl.conf

      vm.vfs_cache_pressure=50
      

      Сохраните и закройте файл после завершения.

      Заключение

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

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



      Source link