Привет Пикабу!
В этом посте мы успешно зарегистрировали бесплатный VPS - сервер от Oracle, а в этом установили на него Ubuntu 20.04. Как известно, уровень Oracle Always Free включает в себя всего 1 Гбайт оперативной памяти, чего зачастую вполне достаточно для одновременной работы нескольких сервисов, например VPN-сервер, MQTT-брокер, Home Аssistant Supervised..., вполне можно установить и настроить Nginx с Let's Encrypt SSL с помощью Docker и Docker Compose.... Но, при запуске сборки контейнеров, или скриптов установки пакетов и их настройки, ваша виртуальная машина может просто зависнуть из-за нехватки оперативной памяти. Связано это с тем, что в установленной нами Ubuntu 20.04 отсутствует активный файл подкачки (swap).
Убедимся в этом, для чего ведём в терминале:
(в конце этого поста, как это сделать через PuTTy по SSH , если забыли):
$ free -h
Проверяем, что у нас достаточно места для добавления раздела swap:
$ df -h
Мнений о необходимом объёме раздела swap множество ))) Мы, в рамках этой статьи, будем придерживаться того, что этот объем должен быть равен или быть в два раза больше объема оперативной памяти вашей системы. Т.е. в нашем случае это будет объём 2 Гб. (Из практики известно, что иметь swap более 4 Гб зачастую бессмысленно).
Разместим файл нужного размера swapfile в директории root (/) с помощью программы fallocate:
$ sudo fallocate -l 2G /swapfile
Проверим, что сработало:
$ ls -lh /swapfile
Делаем файл подкачки доступным только для root:
$ sudo chmod 600 /swapfile
Проверим, что сработало:
$ ls -lh /swapfile
Говорим системе, что этот раздел у нас для файла подкачки:
$ sudo mkswap /swapfile
Включаем его:
$ sudo swapon /swapfile
Проверим, что всё ok:
$ sudo swapon --show
Следующие две команды позволят использовать файл подкачки не только для текущего сеанса, но и после перезагрузки системы.
Сделаем резервную копию конфигурационного файла fstab:
$ sudo cp /etc/fstab /etc/fstab.bak
Добавим в него информацию о файле подкачки:
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Вот в принципе и В С Ё . . . )))
Ну можно ещё настроить swap, что бы ядро по возможности избегало использование файла подкачки.
Swappiness - это свойство ядра Linux, которое определяет, как часто система будет использовать пространство подкачки. Подкачка может иметь значение от 0 до 100.
Проверим текущее значение:
$ cat /proc/sys/vm/swappiness
60 - считается нормой для настольного ПК, но для сервера желательно это значение свести к минимуму, например - 10:
$ sudo sysctl vm.swappiness=10
Сохраним это значение и после перезапуска системы, для этого открываем файл /etc/sysctl.conf:
$ sudo nano /etc/sysctl.conf
Добавляем в конец эту строчку:
$ vm.swappiness = 10
Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
Ну, а если по какой-то причине решите удалить файл подкачки, то нужно сделать следующее:
1) Деактивируйте swap:
$ sudo swapoff -v /swapfile
2) Удалите запись файла подкачки из /etc/fstab файла:
$ sudo nano /etc/fstab
Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
3) Удалите сам файл подкачки с помощью rmкоманды:
$ sudo rm /swapfile
На этом у меня В С Ё !!! )))
Если по какой-то причине не удобно копировать команды для терминала из этого поста, то можете взять их с моего файла README.md, который лежит на GitHub - здесь.
Всем пока и "Бобра" ;-)