Добавление пространства подкачки (swap) на ваш сервер — отличный способ компенсировать ошибки нехватки памяти. Linux позволяет пользователям добавлять пространство подкачки в систему, когда оперативная память (RAM) заполнена. Создание выделенного раздела позволяет физической памяти работать бесперебойно, не беспокоясь о нехватке места на диске.
Обзор Swap
Пространство подкачки в Linux — это часть виртуальной памяти машины, используемая при нехватке физической памяти. Пространство подкачки идеально подходит для временного хранения неактивных страниц памяти, особенно при работе с ресурсоемкими программами или приложениями, требующими дополнительной памяти. Создание пространства подкачки позволяет сохранять данные во время работы крупных программ, снижая вероятность сбоев приложений. Это означает, что если системе требуется больше памяти, а RAM заполнена, все неактивные страницы переносятся в swap, и программы продолжают работать без прерываний.
Какой объем пространства подкачки мне нужен?
Объем пространства подкачки зависит от нескольких факторов, включая объем доступной оперативной памяти, нагрузку на систему и необходимость поддержки режима гибернации (suspend-to-disk). В таблице ниже приведены рекомендации по объему swap в зависимости от объема RAM:
|
№ п/п |
Доступный объем RAM |
Рекомендуемый объем Swap |
|
1. |
1 ГБ |
1 ГБ |
|
2. |
2 ГБ |
1 ГБ |
|
3. |
3 ГБ |
2 ГБ |
|
4. |
4 ГБ |
2 ГБ |
|
5. |
5 ГБ |
2 ГБ |
|
6. |
6 ГБ |
2 ГБ |
|
7. |
8 ГБ |
3 ГБ |
В этом руководстве мы подробно рассмотрим шаги по добавлению пространства подкачки в Ubuntu 20.04. Давайте начнем!
Предварительные требования
Для выполнения этого руководства вам понадобятся:
- Установленная Ubuntu на вашей системе.
- Обычный пользователь с настроенной учетной записью и привилегиями sudo на вашем компьютере.
Шаг 1. Проверка информации о Swap
Размер пространства подкачки зависит от оперативной памяти системы. Поэтому перед его созданием важно проверить наличие уже настроенного swap. Введите команду ниже, чтобы проверить, настроен ли swap в системе:
|
1 |
$ sudo swapon --show |
Если вывод отображается, это означает, что в системе есть настроенное пространство подкачки. Отсутствие вывода указывает на то, что активного пространства подкачки нет.
Используйте утилиту free, чтобы убедиться в отсутствии активного swap:
|
1 |
$ free -h |
Вы увидите пустую строку swap в выводе:
Шаг 2. Проверка доступного места на жестком диске
Аналогично проверке доступности системы, давайте проверим текущее использование диска, чтобы убедиться в наличии достаточного свободного места. Используйте команду df, чтобы проверить доступность разделов жесткого диска:
|
1 |
df -h |
Устройство с / в столбце Mounted on — это наш диск, на котором 11% свободного места. Вы увидите следующий вывод:
После проверки системных требований перейдем к созданию файла подкачки в нашей файловой системе.
Шаг 3. Создание файла подкачки
Чтобы создать файл подкачки в нашей файловой системе, выделите файл с именем swapfile в корневом каталоге (/) с помощью программы fallocate. Выделение размера файла зависит от ваших потребностей. Чтобы руководство оставалось простым и понятным, мы создадим файл размером 1G и выделим 1G оперативной памяти. Используйте команду sudo для создания файла подкачки:
|
1 |
sudo fallocate -l 1G /swapfile |
Затем введите эту команду, чтобы проверить зарезервированное место:
|
1 |
$ ls -lh /swapfile |
Теперь, когда мы создали пространство подкачки в нашей системе, давайте включим его на следующем шаге.
Шаг 4. Включение файла подкачки
После того как файл нужного размера создан, давайте преобразуем его в пространство подкачки. Из соображений безопасности крайне важно сделать этот файл доступным только для пользователей root и закрыть доступ для обычных пользователей. Мы добавим ограничения, чтобы только пользователи с правами root могли просматривать файл и читать его содержимое. Используйте следующую команду root, чтобы сделать файл доступным только для пользователей root :
|
1 |
sudo chmod 600 /swapfile |
Затем используйте команду ls, чтобы проверить изменения:
|
1 |
$ ls -lh /swapfile |
Как видите, только у пользователя root включены флаги чтения и записи:
После этого разметьте файл как пространство подкачки:
|
1 |
sudo mkswap /swapfile |
Вы увидите вывод:
После этого включите файл подкачки и разрешите нашей системе начать его использование:
|
1 |
sudo swapon /swapfile |
Затем проверьте доступность пространства подкачки:
|
1 |
$ sudo swapon --show |
Вы увидите следующий вывод:
Как и на Шаге 1, мы снова проверим свободное место с помощью утилиты free:
|
1 |
free -h |
Вы увидите следующий вывод:
Наш файл подкачки успешно настроен, и операционная система начнет использовать его по мере необходимости. На следующем шаге мы сделаем файл подкачки постоянным.
Шаг 5. Как сделать файл подкачки постоянным
По умолчанию сервер не сохраняет настройки подкачки автоматически при перезагрузке. Чтобы изменить настройки по умолчанию и перестраховаться, мы добавим файл подкачки в наш файл /etc/fstab. Используйте команду sudo для создания резервной копии файла /etc/fstab:
|
1 |
sudo cp /etc/fstab /etc/fstab.bak |
Затем добавьте информацию о файле подкачки в конец вашего файла /etc/fstab, введя:
|
1 |
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab |
После этого давайте рассмотрим некоторые настройки и внесем изменения, чтобы оптимизировать наше пространство подкачки.
Шаг 6. Изменение настроек подкачки
На этом шаге мы настроим параметры и внесем некоторые изменения. Давайте отрегулируем свойство swappiness и изменим давление кэша (cache pressure).
-
Настройка свойства Swappiness
Параметр swappiness представляет собой настраиваемый параметр ядра. Он изменяет баланс между вытеснением оперативной памяти и отвечает за обмен данными при переносе данных из ОЗУ в пространство подкачки. Это параметрическое значение выражается в процентах в диапазоне от 0 до 100.
Значение vm.swappiness оказывает прямое влияние на поведение подкачки системы. Чем выше vm.swappiness, тем больше система будет использовать подкачку, и наоборот. Если значение близко к нулю, ядро не будет переносить данные в подкачку, что может привести к снижению производительности. Настройка системы таким образом, чтобы она не сильно зависела от подкачки — отличный способ повысить ее производительность и добиться высокой скорости отклика.
С другой стороны, значение vm.swappiness, приближающееся к 100, пытается поместить больше данных в подкачку и меньше в физическую память. В отличие от низкого или среднего значения vm.swappiness, интенсивное использование подкачки системой имеет крайне нежелательные последствия, когда большие объемы данных активно перемещаются в ОЗУ и обратно.
Проверьте текущее значение swappiness, введя:
|
1 |
cat /proc/sys/vm/swappiness |
Вы увидите следующий вывод:
Вы также можете установить желаемое значение swappiness с помощью команды sysctl. Давайте установим значение swappiness равным 15, введя:
|
1 |
sudo sysctl vm.swappiness = 15 |
Вы увидите следующий вывод:
До перезагрузки системы настройки останутся прежними. Добавьте строку в наш файл /etc/sysctl.conf чтобы значение устанавливалось автоматически при перезапуске/перезагрузке:
|
1 |
sudo nano /etc/sysctl.conf |
Вы можете добавить следующий код в самый конец:
|
1 |
Vm.swappiness = 15 |
Затем сохраните и закройте файл.
-
Настройка давления кэша (Cache Pressure)
Далее мы собираемся изменить параметр vfs_cache_pressure, который будет отдавать приоритет информации inode и dentry перед другими данными. Эти настройки vfs_cache_pressure settings также управляют склонностью ядра возвращать память, используемую для кэширования каталогов. Снова обратитесь к файловой системе proc, чтобы проверить текущее значение:
|
1 |
cat /proc/sys/vm/vfs_cache_pressure |
Вы увидите следующий вывод:
Поскольку настройка уже выполнена, наша система будет удалять информацию об inode из кэша. Давайте установим параметр sysctl vm.vfs_cache_pressure в более стабильное значение, например так:
|
1 |
sudo sysctl vm.vfs_cache_pressure = 60 |
Вы увидите следующий вывод:
Аналогично тому, что мы делали для настройки swappiness, мы можем изменить конфигурацию и здесь:
|
1 |
sudo nano /etc/sysctl.conf |
В самом низу вставьте строку с новым созданным вами значением:
|
1 |
Vm.vfs_cache_pressure = 60 |
Наконец, сохраните и закройте файл.
Заключение
Вы можете добавить пространство подкачки в виде выделенного раздела подкачки, файла подкачки или их комбинации. Вы можете создать пространство подкачки и использовать его преимущества для бесперебойной работы приложений, не беспокоясь о предупреждениях о нехватке памяти. Хотя создание пространства подкачки является дополнительным преимуществом в системах с ограниченным объемом памяти, его не следует рассматривать как альтернативу увеличению объема оперативной памяти. Помните, что пространство подкачки расположено на жестком диске, поэтому время доступа к нему может быть немного больше, чем к физической памяти.
Вот еще несколько руководств в нашем блоге, которые помогут вам начать работу с серверами Ubuntu:
- Настройка монтирования NFS в Ubuntu 20.04
- Установка Nginx в Ubuntu 18.04
- Настройка брандмауэра с помощью UFW в Ubuntu 18.04
Приятной работы!










Комментарии
Комментариев пока нет. Будьте первым.