В этой статье рассмотрим вопрос сборки сетевого хранилища NFS на базе Ubuntu 22.04LTS для кластера Proxmox, в роли быстрого хранилища для виртуальных машин и для удобства администрирования установим Cockpit.
Я знаю, что вы скажете возьми специализированный дистрибутив и не пудри людям мозг. Все зависит от того спектра задач, которые необходимо выполнить. Под простую и тривиальную задачу чем проще решение, тем лучше, без лишних наворотов и с минимальными системными требованиями.
Содержание статьи
- Параметры железа под хранилище
- Сетевое оборудование
- Подготовка сервера
- Установка NFS
- Создание директорий на сервере
- Настройка доступа к директориям
- Настройка брандмауэра
- Подключение хранилища к кластеру Proxmox
- Вывод
Параметры железа под хранилище
- Процессор от 4-х ядер от 3Ггц
- Оперативная память от 4Гб
- Материнская плата с 2-мя m.2
- m.2 SSD 2ТБ - 2шт для RAID1
- Двойная сетевая карта 10Гбит
- Управляемый 8-ми портовый Коммутатор 10гбит/с.
Пример оборудования:
- Процессор Intel Core i3 - 10105F LGA 1200, 4-ядерный, 3700 МГц, Turbo: 4400 МГц, Comet Lake-S, Кэш L2 - 1.5 Мб, L3 - 6 Мб, 14 нм, 65 Вт --- 5900руб
- Оперативная память 4Gb DDR4 2400MHz Exegate Value 4 Гб, DDR4, 19200 Мб/с, CL17, 1.2 В --- 1120руб *2шт =2240руб
- Материнская плата MSI H510M-A PRO LGA 1200, Intel H510, 2xDDR4, PCI-E 4.0, 2xM.2, 2xUSB 3.2 Gen1, HDMI, mATX --- 5960руб
- Накопитель SSD 2Tb Netac NV3000 внутренний SSD, M.2, 2000 Гб, PCI-E x4, NVMe, чтение: 3300 МБ/сек, запись: 2900 МБ/сек --- 10 580руб * 2шт = 21160руб
- Сетевая карта LR-LINK LREC9812AF-2SFP+ 10Гбит --- 7450руб
- Коммутатор (свитч) TP-Link TL-SX3016F управляемый коммутатор, уровень 3, 16 портов SFP 10 Гбит/с, монтаж в стойку, размеры 440 x 44 x 220 мм --- 37600руб
Итого: 80260руб без учета сетевых карт для гипервизоров и патч-кордов.
Можно плюнуть на производительность сэкономив и взяв неуправляемый 8-ми портовый коммутатор за 17000руб, решать вам.
Сетевое оборудование
Одним из самых важных вопросов при организации системы хранения для виртуальной инфраструктуры является производительность сети передачи данных.
Если мы организуем дисковую подсистему на SATA SSD в RAID1, то получим производительность на чтении/записи около 500мбайт/с, с точки зрения производительности сети это составит 5Гбит/с.
В зависимости от потребностей и использования документооборота на основе серьёзных и требовательных к аппаратным ресурсам продуктов, вам скорее всего не хватит производительности SATA SSD и вы решите организовать массив на m.2 SSD, где средняя скорость на чтении/записи 2500мбайт/с и с точки зрения производительности сети это составит 20Гбит/с и потребуется установить на сетевом хранилище двойную сетевую карту 10Гбит и настроить режим агрегации.
Подготовка сервера
Обязательно, при установке Ubuntu создаем софтовый raid1 из m.2 SSD.
Как всегда повышаем наши права:
sudo -s
Обновите пакетный список репозитория:
apt update
Обновляем пакеты дистрибутива:
apt upgrade -y
Перезагружаем наш сервер:
reboot
Дадим созвучное имя нашему серверу:
hostnamectl set-hostname nfs
Установим необходимые пакеты:
apt install nano mc net-tools apt-transport-https curl wget software-properties-common -y
Установка NFS
Установим пакеты сервера NFS
apt install nfs-kernel-server -y
Добавим в автозапуск службу NFS:
systemctl enable nfs-server
Проверяем статус службы:
systemctl status nfs-server
Статус должен быть "Active", если inactive запускаем службу:
systemctl start nfs-server
Создание директорий на сервере
Мы с вами создадим отдельные папки под виртуальные машины, контейнеры и образы ISO:
mkdir /VM
mkdir /LXC
mkdir /ISO
Настройка доступа к директориям
Все настройки сервера хранятся в файле /etc/exports . Открываем его на редактирование:
nano /etc/exports
добавляем в конце файла наши правила доступа к директориям с опциями:
/VM IP_Proxmox(rw,sync,no_subtree_check)
/LXC IP_Proxmox(rw,sync,no_subtree_check)
/ISO IP_Proxmox(rw,sync,no_subtree_check)
Расшифровка команд:
- /VM –путь к папке, для которой раздается доступ;
- IP_Proxmox - указываем адрес гипервизора или целиком подсеть, которой разрешен доступ к папке
- (rw, sync, no_subtree_check) –набор опций.
- rw - права на чтение и запись
- sync – синхронный режим доступа указывает на то, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами. Опция async указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, т.к. в случае обрыва соединения или отказа оборудования возможна потеря данных;
- all_squash– подразумевает, что все подключения будут выполнятся от анонимного пользователя
- subtree_check (no_subtree_check)- в некоторых случаях приходится экспортировать не весь раздел, а лишь его часть.
Перезапустите nfs сервер:
systemctl restart nfs-server
Можно идти на гипервизор проверять.
Установка Cockpit
Для удобства администрирования установим web панель Cockpit, она есть в репозиториях Ubuntu, поэтому устанавливаем командой:
apt install cockpit
WEB интерфейс доступен по адресу:
http://ip_address:9090
Существует сторонний плагин под Cockpit для настройки Samba и NFS сервера. Если есть желание установить идём дальше, если не хотите переходим к настройке файрволла.
Перед установкой рекомендую скопировать конфигурационные файлы Samba и NFS, так как плагин импортирует настройки и пере затирает их оставляя перенаправление на собственный:
cp /etc/samba/smb.conf /etc/samba/smb_backup.conf
cp /etc/exports /etc/exports_backup
Добавим репозиторий:
curl -sSL https://repo.45drives.com/setup | sudo bash
Обновляем список пакетов в репозиториях:
apt update
Устанавливаем плагин cockpit-file-sharing:
apt install cockpit-file-sharing
Идём в web интерфейс проверять.
Настройка брандмауэра
Первым делом одной командной строкой включим файрволл и разрешим доступ по SSH:
ufw enable && ufw allow from 192.168.1.30 to any port 22
Добавляем правило для доступа к Cockpit:
ufw allow from 192.168.1.30 to any port 9090
Разрешаем доступ по протоколу NFS:
ufw allow nfs
После каждой команды вы можете дописать from и адрес/сеть, которой разрешен доступ.
Все остальные входящие запросы запрещены.
Подключение хранилища к кластеру Proxmox
Заходим в раздел хранилище и нажимаем добавить NFS
Заполняем параметр id, указываем адрес сервера и в пункте экспорт видим наши расшаренные каталоги:
В пункте Содержимое выбираем образ диска и нажимаем добавить:
В пункте узлы по умолчанию выбраны все узлы, наш ресурс появится в качестве хранилища на всех гипервизорах
И так по порядку добавляем все три ресурса при этом выбираем только то содержимое, которое эквивалентно названию.
Вывод
На мой взгляд текущая программная реализация одна из самых простых, надёжных, неприхотливых в процессе эксплуатации и обновлений, что достигается за счёт реализации на основе пакетной базы репозитория Ubuntu и долгосрочной поддержки.