Задача: Хочу в своей локальной сети поднять NFS сервис, как общий ресурс для виртуальных машин гипервизора Debian 10 + Proxmox 6. Это одна из частей большой заметки, про то как познакомиться к кластером из двух нод Proxmox 6

А вот сервис NFS будет развернут на обычном компьютере и конечно же под Ubuntu 18.04 Server, а вот диски под это дело у меня буду M.2, т.е. я по-сути смогу смоделировать как будто бы у меня выделенное хранилище.

Что понадобится:

Гипервизор на базе Debian 10 + Proxmox 6

  • Hostname: srv-proxmox
  • IP: 172.33.33.25

Станция/Сервер

  • Hostname: srv-nas
  • IP: 172.33.33.21

На заметку: Часть настроек была взята из заметки »

Шаг №1: Моя базовая настройка системы Ubuntu 18.04 Server на последующую работу:

ekzorchik@srv-nas:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject

ekzorchik@srv-nas:~$ sudo ./dproject/default

Шаг №2: Поднимаю на системе Ubuntu 18.04 Server сервис NFS версии 3 (Network File System):

ekzorchik@srv-nas:~$ sudo apt-get install -y nfs-kernel-server

Шаг №3: Произвожу настройки на доступ в каталог /srv/vm куда по сети буду складываться и работать их него виртуальные машины сервиса Debian 10 + Proxmox 6:

ekzorchik@srv-nas:~$ sudo mkdir /srv/vm

ekzorchik@srv-nas:~$ sudo chown nobody:nogroup /srv/vm

ekzorchik@srv-nas:~$ sudo nano /etc/exports

/srv/vm 172.33.33.0/24(rw,sync,no_subtree_check,no_root_squash)

Шаг №4: Перезапускаю сервис NFS для активации настроек

ekzorchik@srv-nas:~$ sudo exportfs -a

ekzorchik@srv-nas:~$ sudo exportfs

/srv/vm 172.33.33.0/24

ekzorchik@srv-nas:~$ sudo systemctl restart nfs-kernel-server && sudo systemctl status nfs-kernel-server | head -n5

● nfs-server.service - NFS server and services

Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)

Active: active (exited) since Thu 2020-04-30 09:44:40 MSK; 11ms ago

Process: 2358 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)

Process: 2357 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)

ekzorchik@srv-nas:~$

Шаг №5: Чтобы отобразить какие ресурсы и для кого расшарены:

ekzorchik@srv-nas:~$ sudo showmount -e

Export list for srv-nas:

/srv/vm 172.33.33.0/24

ekzorchik@srv-nas:~$

из вывода видно, что папка /srv/vm доступна всем из сети 172.33.33.0/24

Шаг №6: Подключаю NFS ресурс в Proxmox 6

https://IP&DNS:8006 (https://172.33.33.25:8006) — user&pass — Datacenter — Storage — Add — NFS

Добавляю в Proxmox 6 сетевое хранилище на базе NFS

Затем указываю настройки добавления NFS хранилища:

Указываю настройки добавления NFS хранилища

  • ID (Имя хранилища): nfs
  • Nodes: srv-proxmox
  • Server (Адрес хоста где поднята серверная часть NFS): 172.33.33.21
  • Enable (Включение/Выключение хранилища): отмечено галочкой
  • Max Backups (Максимальное численное значение сохраняемых файлов резервных копий. Более старые файлы резервных копий автоматически удаляются): 100
  • Export (Доступный разделяемый ресурс NFS): /srv/vm
  • Content (Тип сохраняемого содержимого): Disk image, ISO image, VZDump backup file
  • Advanced: отмечаю галочкой
  • NFS Version: 3

и нажимаю Add

Шаг №7:

Результат используемых хранилищ на моем гипервизоре Debian 10 + Proxmox 6

Результат используемых хранилищ на моем гипервизоре Debian 10 + Proxmox 6

Сделаю пояснения, что это за хранилища:

  • disk1,disk2 (LVM-Thin) создан по заметке «Как добавить диск, как LVM-Thin в Proxmox 6 on Debian 10«
  • local (Directory) — это единственный диска на компьютере, на нем стоит Debian 10 + Proxmox 6
  • nfs (NFS) — это сетевая файловая система на другой системе, там у меня диск размером в 1Tb.

Теперь у Вас есть возможность при создании VM указать что файлы виртуальной машины расположить на NFS-разделе

При создании VM можно указать использовать NFS

ekzorchik@srv-nas:~$ sudo apt-get install -y tree

ekzorchik@srv-nas:~$ sudo tree /srv/vm

/srv/vm

├── dump

├── images

│   └── 103

│   └── vm-103-disk-0.qcow2

└── template

└── iso

5 directories, 1 file

ekzorchik@srv-nas:~$

Шаг №8: Помимо создания и указания, что в роли хранилища будет выступать NFS, можно клонировать VM и т.д, как если бы это было локально подключенные диски.

На заметку: Обязательно в этом случае должна быть схема:

  • Гипервизоре (ether gigabit)
  • NFS (ether gigabit)
  • Роутер (ether gigabit)

т.е. вся Ваша сеть должна быть не менее 1Gb/s дабы не было мучительно долго ожидать отклика от виртуальных маших и взаимодействия с ними. А лучше сделать объединение сетевых интерфейсов, т.е. настроить bonding. Два по 1Gb/s превратятся в 2Gb/s.

Шаг №9: Также можно не через Web-интерфейс Proxmox 6 настроить подключение, а через правку конфигурационных файлов:

ekzorchik@srv-proxmox:~$ sudo pvesm nfsscan 172.33.33.21
/srv/vm 172.33.33.0/24
ekzorchik@srv-proxmox:~$ 
ekzorchik@srv-proxmox:~$ sudo bash -c "cat /etc/pve/storage.cfg"
[sudo] password for ekzorchik: 
lvmthin: disk1
	thinpool data
	vgname disk1
	content images,rootdir

dir: local
	path /var/lib/vz
	content vztmpl,rootdir,iso,images,snippets
	maxfiles 0

lvmthin: disk2
	thinpool data2
	vgname disk2
	content images,rootdir

nfs: nfs
	export /srv/vm
	path /mnt/pve/nfs
	server 172.33.33.21
	content images,iso,backup
	maxfiles 100
	nodes srv-proxmox
	options vers=3
ekzorchik@srv-proxmox:~$ systemctl restart pveproxy.service

На заметку: Я в этом случае ("Шаг №9") выбираю все же добавление хранилища через Web-интерфейс.

Итого данной заметкой я получил возможность сделать общее сетевое хранилище для виртуальных машин своего тестового полигона на базе связки Debian 10 + Proxmox 6. К тому же если в Вашей сети есть NFS, то можно опубликовать отдельный каталог для VM, для Backup — ведь бекап не так часто используется, да и будет располагаться не на самом хосте. Ведь по правилам, бекап должен быть в другом месте, а не на сервере/системе где он делается. А лучше бекап бекапа. Итого заметка работоспособна, на этом пока все, с уважением автор блога Олло Александр aka ekzorchik.