Ubuntu 20.04 LTS. Что нового?
Ubuntu - популярный дистрибутив Linux, который отличается стабильностью, и большим сообществом, благодаря чему стабильные релизы дистрибутивов выходят в срок и имеют продолжительный срок официальной поддержки. Окончание публичной поддержки Ubuntu 20.04 «Focal Fossa» датировано апрелем 2025 года, а приватной 2030 года.
Минимальный требования к ресурсам Ubuntu 20.04 Server Live: 1CPU, 1024Mb RAM и 3GB свободного дискового пространства. Особых отличий Ubuntu 20.04 Server Live от Ubuntu 20.04 Desktop нет, оба используют один и тот же репозиторий, ядро имеет ту же конфигурацию, но в исталяторе серверной версии «из коробки» не предусмотрено графическое окружение и программное обеспечение характерное для настольных версий.
Что нового в Ubuntu 20.04? Стоит отметить свежее ядро Linux Kernel 5.4, повышающее производительность и безопасность сервера и некоторые его особенности:
1. В версии 5.4 улучшен Lockdown. Это режим блокировки ядра, который ограничивает доступ пользователя root различными частями функционала ядра, что будет полезно администраторам, которые занимаются его тюнингом. Таким образом, вредоносное п.о, получившее права root, не сможет выполнить свой код и на уровне ядра.
2. Доступен высокопроизводительный драйвер virtio — virtio-fs. Файловая система virtio-fs ускоряет обмен данными между хостом и гостевой системой. Предусмотрен проброс каталогов между ними с более высокой производительностью и совместимостью, чем если бы было использовано, например, NFS.
3. Fs-verity позволяет верифицировать подлинность и целостность файлов по хэшам на уровне файловой системы.
4. Доступен модуль dm-clone, позволяющий клонировать существующее блочное устройство. Например, есть блочное устройство доступное в режиме чтения, модуль позволит создать локальную копию, при этом допустима запись во время процесса клонирования.
5. Реализована защита, запрещающая запись в активные файлы подкачки.
6. Включена поддержка exFAT от Microsoft.
7. Флаги MADV_COLD и MADV_PAGEOUT позволяют определить, какие данные в памяти не критичны для работы процесса. Они перемещают эти данные в SWAP освобождая память.
8. Алгоритма сжатия ядра Linux LZ4 и загрузочного образа initramfs позволяет сократить время загрузки операционной системы.
9. Десятки других изменений, который затронули работу с дисковой и файловой подсистемой, памятью, сетевой подсистемой, аппаратной архитектурой и оборудованием.
Кроме того, в Ubuntu 20.04 реализована полная поддержка Кubernetes 1.18 (MicroK8s и kubeadm), при установке доступны Prometheus, Docker, NextCloud и многое другое. Так же в Ubuntu 20.04 улучшена поддержка ZFS.
Установка Ubuntu 20.04 Server
Получить установочный образ можно на официальном сайте разработчиков. Создав загрузочный флеш накопитель приступим к установке. Выберите язык:
На следующем этапе будет предложено использовать действительный инсталятор, или обновить его. Обновление происходит в фоновом режиме и занимает не более 10 секунд, обновите его:
Выберите раскладку клавиатуры. Указывайте везде English:
Настройте сеть. По умолчанию, получение IP адреса настроено по DHCP. В нашем примере мы будем использовать статический IP адрес. Используя интуитивно понятную навигацию, заполните необходимые поля
Если доступ в интернет у вас осуществляется через proxy-сервер, укажите его:
Далее, установщик предложим вам ближайшее зеркало (Mirror), исходя из вашего регионального расположения. Оставьте предложенное по умолчанию, или укажите свой:
На этом этапе будет предложено разметить дисковое пространство. Выбрав «Use an entire disk» установщик сам разметит диски в автоматическом режиме. В зависимости от задач, вы можете выполнить разбивку разделов на собственное усмотрение, выбрав «Custom storage layout»:
Следующий пример для наглядности, выносить даздел boot отдельно нет необходимости, вы можете все отдать под корень «/», что будет равнозначно «Use an entire disk». Вы можете сделать отдельным разделом boot или swap, выбрать формат файловой системы. Так же есть возможность создания LVM разделов. Меню интуитивно понятное:
Проверьте внимательно, все ли настроено как нужно и нажмите Done
Выберите «Continue» для подтверждения настроек:
Укажите имя сервера и пользовательские данные для доступа к серверу. Вы можете выбрать любого пользователя кроме «root» и «admin», которые зарезервированы системой. Так же придумайте сложный пароль, он должен быть не менее 10 символов, включать в себя строчные и заглавные символы латинского алфавита, а так же цифры и спецсимволы:
Отметьте установку OpenSSH Server, для возможности удаленного подключения к нему, и нажмите «Done»:
Перед вами появится длинный список того что можно установить «из коробки». Очень интересный этап, здесь доступна и интеграция с Kubernetes 1.18, etcd, интеграция с Google Cloud, Postgresql10, Prometheus и много чего другого. Выбирать компоненты для установки нужно осознанно, при условии, что вам это действительно необходимо для задач.
Подтвердите «Done» и перед вами появится консоль установки в интерактивном режиме:
По окончанию установки, внизу интерактивной консоли появится «Reboot». Извлеките носитель с установщиком и выполните перезагрузку сервера.
Первоначальная перезагрузка займет более продолжительное время, чем это будет в дальнейшем. Будут инициализированы службы snapd, выполнится инициализация устройств cloud-init и прочее. Все зависит от того, каким образом устанавливается Ubuntu, на гипервизоре, или baremetall. По окончанию вы увидите окно аутентификации в систему. Так же, сервер будет доступен по ssh.
Настройка сервера
При подключении, установите минимальный набор утилит, которые понадобятся для работы:
root@dedicated:~# apt-get update root@dedicated:~# apt-get install atop wget ntp vim net-tools -y
Подключение к серверу по ssh
Первое, на что стоит обратить внимание, это то, что в Ubuntu пользователь root отключен от аутентификации. Это выполнено с точки зрения безопасности. Подключение к серверу происходит по имени пользователя, который указан при установке:
admt@freehost:~$ ssh user@178.20.152.78 user@178.20.152.78's password:
Чтобы попасть в режим суперпользователя, введите следующую команду, которая запросит пароль пользователя user и переключит в жежим суперпользователя:
user@dedicated:~# sudo su [sudo] password for user: *********** root@dedicated:/home/user#
Если по каким-то причинам вы хотите разрешить доступ пользователя root при подключении по ssh, то смените для него пароль:
root@dedicated:~# passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@dedicated:~#
Затем в конфигурационном файле /etc/ssh/sshd_config раскоментируйте строку PermitRootLogin указав значение yes:
PermitRootLogin yes
Однако, в целях безопасности сервера, доступ по логину root лучше не предоставлять.
Настройка сетевых интерфейсов
Начиная с Ubuntu 18.04 настройка сетевых интерфейсов происходит не в привычном каталоге /etc/network/interfaces как это реализовано в Debian-подобных дистрибутивах, а в каталоге /etc/netplan/. После установки ОС, в нем будет сгенерирован конфигурационный файл 00-installer-config.yaml
Если конфигурационный файл по какой-то причине пуст, сгенерируйте го:
root@dedicated:~# netplan generate
Для примера, выполним с ним некоторые операции. Переименуем его в более удобный вид:
root@dedicated:~# mv /etc/netplan/00-installer-config.yaml /etc/netplan/01-netcfg.yaml
Применить настройки:
root@dedicated:~# netplan apply
Конфигурационный файл имеет следующий вид:
Он имеет формат yaml и чувствителен регистру. При конфигурации файлов данного формата табуляция недопустима. Только четная последовательность пробелов и структура наследования директив, иначе, вы получите синтаксическую ошибку.
В нашем примере, сетевой интерфейс имеет название eth0, но при инсталляции Ubuntu он имел название enp0s8. Переименовать в конфиге сетевой интерфейс недостаточно. Так же следует править загрузчик grub:
root@dedicated:~# mcedit /etc/default/grub
найдите и отредактируйте значение:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" root@dedicated:~# grub-mkconfig -o /boot/grub/grub.cfg root@dedicated:~# reboot
Удаление ненужных компонентов
В зависимости от того на чем вы устанавливали сервер, Ubuntu может без вашего ведома инициализировать некоторые компоненты которые с одной стороны полезны, с другой стороны нет, если использование их не планируется. В нашем примере мы устанавливали виртуальный сервер на гипервизор Proxmox, Ubuntu без нашего ведома инициализировала службу cloud-init. Cloud-init представляет собой сценарий активации и инициализации виртуальных машин, который широко применяется для OpenStack и других облачных технологий с помощью скриптов и манифестов. Можно провести параллели с Terraform. Это гибкая и полезная вещь. Однако, если специфика вашей работы не предусматривает автоматизированный деплой виртуальных машин в гипервизор или облако, удалить его можно следующим образом.
root@dedicated:~# echo 'datasource_list: [ None ]' | sudo -s tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg root@dedicated:~# apt-get purge cloud-init -y root@dedicated:~# rm -rf /etc/cloud/ root@dedicated:~# rm -rf /var/lib/cloud/
Пакетный менеджер snap
Давайте так же, командой lsblk отобразим наши дисковые устройства:
Начиная с версии 16.04, Ubuntu все настойчивей пытается продвинуть менеджер управления пакетами snap. Приведем краткое объяснение с официального сайта разработчиков:
«snap пакеты Ubuntu содержат саму программу, а также все ее зависимости. Это имеет несколько преимуществ перед обычными deb или rpm пакетами, обрабатывающими зависимости. А главное, из них - разработчик может быть уверен что нет никаких регрессий из-за изменений версий библиотек в системе»
Snap это удобная вещь, и мы рекомендуем с ним ознакомиться, документация Ubuntu довольно информативна как на русскоязычных, так и на англоязычных ресурсах.
Отобразим список установленных пакетов, которые установились при инсталляции:
root@dedicated:~# snap list
Если нам что-то не нужно, удалим:
root@dedicated:~# snap remove lxd root@dedicated:~# snap remove core18
Добавить пакет можно следующим образом:
root@dedicated:~# snap install docker
Обновить все пакеты:
root@dedicated:~# snap refresh
Обновить определенный пакет:
root@dedicated:~# snap refresh docker
Посмотреть список доступных пакетов:
root@dedicated:~# snap changes
Однако, стоит заметить, сейчас не так много snap пакетов. С полным перечнем вы можете ознакомится на сайте разработчиков https://snapcraft.io/ Вместо snap можете использовать пакетный менеджер apt. Если у вас snapd не установлен, установить его можно следующим образом:
root@dedicated:~# apt install snapd
Подключение swap раздела и настройка кеширования
Для начала убедитесь, что он не подключен:
root@dedicated:~# swapon --show
Если список пуст, создайте файл подкачки, например 2Gb. Измените права, и активируйте его. Порядок команд следующий:
root@dedicated:~# fallocate -l 2G /swapfile root@dedicated:~# sudo chmod 600 /swapfile root@dedicated:~# mkswap /swapfile root@dedicated:~# swapon /swapfile
Проверка результата:
root@dedicated:~# swapon —show root@dedicated:~# free -h
Что бы раздел swap после автозагрузки примонтировался автоматически, добавьте о нем информацию в /etc/fstab
root@dedicated:~# echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Примечание: перед правкой fstab рекомендуется сделать его резервную копию. Если вы допустите какую либо ошибку, сервер может «уйти в себя» при перезагрузке.
Настроим swappiness. Параметр vm.swappiness по умолчанию имеет значение 60, и контролирует процент свободной памяти. Он контролирует значение, после которого начнется активный сброс данных в swap. Значение «60» означает следующее: 100-60=40%. Другими словами, при загрузке ОЗУ более чем 40%, данные начнут кешироваться в swap. Не существует оптимального значения, он обусловлен только конфигурацией вашего сервера. Если ОЗУ достаточно, это значение можно уменьшить следующими командами:
root@dedicated:~# sysctl vm.swappiness=10
В конце файла /etc/sysctl.conf добавьте следующую строку:
vm.swappiness=10
Настройте кеширование. Измените параметр vfs_cache_pressure, отвечающий за скорость удаления индексов из кеша. По умолчанию это значение равно 100. Так как обращение к индексам довольное частое, это значение вы можете уменьшить:
root@dedicated:~# sysctl vm.vfs_cache_pressure=50
В конце файла /etc/sysctl.conf добавьте следующую строку:
vm.vfs_cache_pressure=50
Опционально, не будет лишним удалить поддержку IPv6. Даже если вы этот протокол не используете, некоторое программное обеспечение все равно его прослушивает и иногда случаются сбои в его работе:
root@dedicated:~# sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
В конце файла /etc/sysctl.conf добавьте следующую строку, в зависимости от интерфейсов:
# Отключение на всех интерфейсах net.ipv6.conf.all.disable_ipv6 = 1 # Отключение на определенном интерфейсе net.ipv6.conf.eth0.disable_ipv6 = 1
Заключение
В данном обзоре мы рассмотрели первоначальную настройку и оптимизацию Ubuntu 20.04. Так же рекомендуем ознакомиться со статьей «Как обеспечить безопасность Linux сервера» и другими статьями нашего блога, в котором рассмотрены вопросы администрирования операционных систем и различных приложений. Для наших клиентов облачного VPS хостинга, мы создали готовый шаблон, с помощью которого вы можете установить Ubuntu 20.04 в автоматическом режиме и уже несколько минут приступить к работе. Наша круглосуточная служба технической поддержки поможет с его базовой настройкой, если у вас возникнут сложности.
Дата: 13.05.2020 Автор: Евгений
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus