Introduction à Proxmox PVE

Introduction à Proxmox PVE

Dans mon réseau que je vous ai décris sur un post précédent, il y a une partie "machines physiques" et aussi une partie "machines virtuelles".
On va parler ici de la virtualisation.

La virtualisation en informatique c'est de pouvoir créer sur une seul entité physique, plusieurs machines dépourvues de matériel mais qui auront les mêmes fonctions et capacités que les machines "hardware".

Par exemple : Des serveurs web, des nas, des applications web, des routeurs réseau ou encore des stations de travail Linux, Windows, MacOS, etc.
Comme je l'ai dit précédemment, j'ai choisi la solution de virtualisation PROXMOX VE dont la dernière version est la 8.3.

Il s'agit d'un système basé sur DEBIAN, l'hyperviseur KVM, l'émulateur QEMU et le système de virtualisation pour conteneurs LXC. Il est de type barre metal, c'est à dire qu'on l'installe directement sur une machine physique, il repose sur une couche matériel contrairement à VirtualBox qui lui s'adosse sur un système d'exploitation.
C'est un logiciel OpenSource, il peut être utilisé librement sans assistance et ressources de l'éditeur (payantes).


Le prérequis


Je l'ai adossé au matériel dont je reprends la description ici :

  • Boitier Lian-li assez vaste pour le refroidissement.
  • Une carte mère AsrockRack X470D4U2-2T avec IPMI.
  • 2 ports Ethernet 10G + 1 port dédié IPMI
  • Un processeur AMD Ryzen 5 2600X 6 coeurs-12 threads.
  • 2 x 16 Go de mémoire Type DDR4 ECC
  • 2 disques SSD NVMe
  • 4 disques de stockage HDD 4 To
  • Une carte graphique RADEON RX 470

La présence d'une carte mère serveur avec de la mémoire ECC n'est pas obligatoire, mais ces deux éléments participe grandement à la stabilité du système.
Une carte mère serveur est dite "sans tête" car elle possède un accès à une interface web (IPMI). permettant de la gérer entièrement sans écran. Cette gestion est indépendante du système installé.

Deux ports Ethernet minimum 1000 Mbps si vous le souhaitez, par exemple, virtualiser le routeur pfSense-CE ou OPNsense.

La présence d'une carte graphique est optionnelle, mais elle permettra ultérieurement d'être connectée à une machine virtuelle. Ce principe est nommé
"passthrough"
C'est un mécanisme qui permet de transférer le contrôle d'un périphérique PCi (carte graphique, disque, clavier, souris, caméra, dongle Bluetooth, etc.)à la machine virtuelle.
C'est très intéressant lorsque vous virtualisez un système d'exploitation comme Windows ou une distribution Linux.

Une fois qu'on a assemblé sa petite machine, on est prêt à installer Proxmox VE

  • Un des deux disques SSD va recevoir cette installation, pensez à le distinguer lors de la procédure.
  • Une clé USB
  • Banana Etcher pour créer le boot

Voici le lien de téléchargement de la dernière version :


On n'en a pas parlé, mais avant tout, si on veut virtualiser quelque chose, il faut avoir activé des petites options sur votre carte mère qui ne le sont pas forcément par défaut.
En premier. Il faut activer l'option de capacité de virtualisation du processeur
celle-ci prend une appellation différente selon les modèles
de carte mère.

  • Pour MSI, cela se trouve dans "advanced" -- "Cpu Configuration".
  • Pour Intel :"Intel Virtualization Technology" et AMD :"AMD SVM".

Je ne vais pas toutes les faire, vous trouverez facilement sur internet ce qui correspond à votre carte.
En second, on va activer le "Iommu" l'appellation est différente selon le modèle de carte, ici pour une carte MSI:
Menu: "advanced"
VT-d pour INTEL et "Iommu" pour les AMD.

Cet option existe dans les cartes récentes, attention si vous êtes sur de l'ancien matériel. Sans le "IOMMU", vous ne pourrez pas faire du "passthrough".


Installation et 1ʳᵉ connexion


L'installation est extrêmement simple, il suffit de suivre les indications.

  • Si vous constatez un souci en mode graphique, vous pouvez, lors du boot, passez dans un mode classique pour l'installation.
  • Faire attention au disque que vous allez sélectionner.
  • Vous avez la possibilité de fixer vous-même la répartition de celui-ci proposée par Pve mais je n'en vois pas trop l'intérêt sur la dernière version du logiciel.
  • Je vous conseille aussi de fixer une IP que vous aurez préalablement préparée sur votre routeur.
  • Donnez lui un nom, choisissez le bien, car malgré qu'il soit possible d'en changer, cela peut créer quelques problèmes par la suite.

Si tout s'est bien passé, vous devriez pouvoir vous connecter via l'IP que vous avez renseigné sur le port dédié à Promox:

https://monip:8006

pve-connect.png

Lorsque vous vous connectez, un petit message vous dit que vous n'avez pas de souscription.
Pour remédier à cela, on va aller chercher un petit script "Proxmox VE Post Install" Vous pouvez le télécharger sur le site Proxmox Helper Scripts (CE).
On peut remercier l'équipe du site de mettre à disposition leur travail, vous pouvez dans la mesure de vos moyens les aider, ici : Site de la communauté.
Pour l'installer, il sufit de copier-coller le lien dans le shell du noeud de Proxmox et validez par la touche entrée. Ce petit script procédera également à la mise à jour de Proxmox sur la dernière version.
Ce site est une mine d'or sur les installations automatisées concernant essentiellement Proxmox, Je vous laisse découvrir par vous-même.


J'ai cité plus haut l'utilisation du "IOMMU"et son activation matérielle. Pour que Proxmox l'utilise à son tour, il faut le déclarer via le boot de démarrage "GRUB".
On va se rendre sur le shell de Promox en cliquant sur le nom du nœud.

shell.png

Sur le shell, vous allez taper cette commande:

root@pve-S:~# dmesg | grep -e DMAR -e IOMMU

Il n'y pas réponse à cette commande ou alors le shell affiche ceci :

iommudisabled.png

Cela veut dire qu'il est détecté, mais non activé sur Proxmox.
Pour le rendre actif sur le système, on va devoir modifier le fichier Grub de démarrage :

root@pve-S:~# nano /etc/default/grub

grub.png

Selon votre processeur AMD ou INTEL, rajoutez l'une ou l'autre ligne dans le fichier Grub, commenter la ligne par défaut.

Sauvegarde le fichier et exécuter la commande de mise à jour de Grub.

root@pve-S:~# update-grub

Faites en suite un "reboot" du système.

On vérifie à nouveau en exécutant la commande

root@pve-S:~# dmesg | grep -e DMAR -e IOMMU

IOMMUENABLED.png

Voilà, il n'y rien d'autre à faire, les nouvelles versions de Proxmox n'ont besoin d'aucune autre modification ou ajout.

Si vous rencontrez des probèmes à ce sujet, je vous invite à consulter la documentation de Proxmox.

PCI Passthrough - Proxmox VE

Proxmox est prête à ce stade. Si vous avez d'autres disques SSD et HDD présent sur votre système, vous pouvez les intégrer à Proxmox. Il est possible de joindre une unité directement à une VM.
Les SSD doivent être réservé aux installations des applications, car elles seront plus véloces. Les HDD seront quant à eux affectés au stockage.


Ajouter un disque et le rendre disponible sur Proxmox PVE


Pour mettre à disposition un disque, afin qu'il puisse être intégré Proxmox, on peut utiliser plusieurs méthodes

  • La méthode graphique
    On clique sur le noeud de Promox à gauche, on se rend sur "Disks".Vous appercevez à droite tous les disques présents dans votre système.
    il suffit de sélectionnez le disque et procéder au "wipe". Cela effacera toutes les données du disque et le mettra à disposition de Proxmox.

  • Une autre méthode, consiste à utliser l'outil "Fdisk" sur le shell du noeud Pve:
    On utilise la commande suivante afin de repérer le disque que l'on souhaite ajouter:
    root@pve-apps:~# fdisk -l

Ensuite, on utilisera la commande suivante afin d'accéder au disque :

root@pve-apps:~# fdisk /dev/sde

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Command (m for help): g

Created a new GPT disklabel (GUID: D049A792-C342-4047-894B-9334FFE7AD97).
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@pve-apps:~# 

On va détruire les partitions existantes par la commande "d", on le fera pour toutes les partitions existantes.
Ensuite, on s'assure que le disque est au format "GPT" par la commande "g".
Pour terminer, on écrit les changements par la commande "w".


Une fois que le disque est préparé, on peut l'ajouter. On retourne sur le noeud Pve, on sélectionne l'onglet "Disks".
Pour l'exemple, je veux créer un répertoire:

Vous devriez voir votre répertoire apparaitre sur la gauche et se rendre disponible au bout de quelques instants.

Si vous votre disque n'est pas disponible, vous ne pourrez pas créer de répertoire. Il faudra vérifier les points suivants:

  • Il est déjà monté sur votre instance.
  • Il a été utilisé dans un pool ZFS

Vous pouvez voir les partitions montées en exécutant la commande :
"df -h"

root@pve-apps:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
udev                   16G     0   16G   0% /dev
tmpfs                 3.2G  7.8M  3.2G   1% /run
/dev/mapper/pve-root   65G   13G   49G  21% /
tmpfs                  16G   34M   16G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
efivarfs              128K   37K   87K  30% /sys/firmware/efi/efivars
/dev/nvme0n1p1        458G  346G   89G  80% /mnt/pve/SSD0-VMCT
/dev/sdg1             229G   29G  188G  14% /mnt/pve/SSD1VMCT
/dev/sdf1             3.6T   56K  3.4T   1% /mnt/pve/SDG
/dev/sda1             3.6T  515G  2.9T  15% /mnt/pve/SDA
/dev/sdd2            1022M   12M 1011M   2% /boot/efi
/dev/sdb1             3.6T  277G  3.2T   8% /mnt/pve/SDB
/dev/fuse             128M   52K  128M   1% /etc/pve
tmpfs                 3.2G     0  3.2G   0% /run/user/0

On utilise la commande "umount":

Exemple :

root@pve-apps:/etc/pve# umount /dev/sdb1

Pour le ZFS:

`root@pve-apps:/etc/pve# zpool delete zpool sdb1

Recommencez la manipulation avec "Fdisk".


  • Une troisième méthode pour inclure des disques sur Proxmox: Associer directement le disque via son "UUID"(son identifiant unique) dans le fichier "fstab ".

Habituellement, on associe le point de montage système "/dev/sdb dans le fichier "fstab"Ce mode n'est pas recommandé pour la raison suivante : Si vous modifiez un disque de son emplacement ou si vous le désactivez, il sera peut-être réattribué sur un autre point de montage autre que "/sdb". Vous n'auriez plus d'accès aux données. Via "l'UUID", ce souci n'existe pas.

On fait exactement la même chose pour préparer son volume avec Fdisk. Par contre il faudra le formater:

On saisit la commande "fdisk /dev/sde"
On créé une nouvelle partition avec la commande "n" puis "w" pour écrire les changements :


root@pve-apps:~# fdisk /dev/sde

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-7814037134, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-7814037134, default 7814035455): 

Created a new partition 1 of type 'Linux filesystem' and of size 3.6 TiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

On va formater cette partition par la commande suivante :

root@pve-apps:~# mkfs.ext4 /dev/sde1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 976754176 4k blocks and 244195328 inodes
Filesystem UUID: 2c89d803-2e3a-4f72-8f59-866f4283d763
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

On obtient le "UUID" d'un disque en utilisant la commande suivante :
"blkid"

root@pve-apps:~# blkid /dev/sde1
/dev/sde1: UUID="2c89d803-2e3a-4f72-8f59-866f4283d763" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a434c082-1e49-b54b-84ba-18f8417c3820"

On va créer le répertoire "SDE" ou le disque sera monté dans l'emplacement habituel des montages sous PVE: "/mnt/pve"

root@pve-apps:/mnt/pve# ls
nfsrzo  NFS-UNRAID  omv  OMV  OMV-1  omvb  SDA  SDB  SDC  SDD  SDF  SDG  SSD0-VMCT  SSD1VMCT  syno
root@pve-apps:/mnt/pve# mkdir SDE

On ouvre le fichier "fstab" qui est le fichier de montage des périphériques au démarrage. On y rajoute les éléments suivants :

  • Le "UUID" du disque
  • Le point de montage
  • Les options de montage

Ce qui donne:

root@pve-apps:~#nano /etc/fstab

  GNU nano 7.2                                                                   /etc/fstab                                                                            
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
UUID=A397-983B /boot/efi vfat defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
UUID="2c89d803-2e3a-4f72-8f59-866f4283d763" /mnt/pve/SDE   ext4 defaults   0   0

On enregistre Ctrl+o et entrée.

On redémarre les services ou son instance :

root@pve-apps:/mnt/pve# systemctl daemon-reload

On vérifie que le disque est bien monté :

root@pve-apps:/mnt/pve# df -h
Filesystem            Size  Used Avail Use% Mounted on
udev                   16G     0   16G   0% /dev
tmpfs                 3.2G  2.2M  3.2G   1% /run
/dev/mapper/pve-root   65G   13G   49G  21% /
tmpfs                  16G   34M   16G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
efivarfs              128K   37K   87K  30% /sys/firmware/efi/efivars
/dev/nvme0n1p1        458G  346G   89G  80% /mnt/pve/SSD0-VMCT
/dev/sdg1             229G   29G  188G  14% /mnt/pve/SSD1VMCT
/dev/sde1             3.6T   28K  3.4T   1% /mnt/pve/SDE #Notre disque est ici
/dev/sdf1             3.6T   56K  3.4T   1% /mnt/pve/SDG
/dev/sda1             3.6T  515G  2.9T  15% /mnt/pve/SDA
/dev/sdd2            1022M   12M 1011M   2% /boot/efi
/dev/sdb1             3.6T  277G  3.2T   8% /mnt/pve/SDB
/dev/sdc1             3.6T  610M  3.4T   1% /mnt/pve/SDC
/dev/fuse             128M   52K  128M   1% /etc/pve
tmpfs                 3.2G     0  3.2G   0% /run/user/0

Si vous voulez le rajouter à l'arborescence de Proxmox, il suffit vous de rendre sur "Datacenter" tout en haut à gauche et de choisir sur la droite l'onglet "Storage":

On clique sur "Add directory" (Ajouter un répertoire en français):

Les options du répertoire sont à choisir en fonction de ce que vous voulez en faire :
Par exemple :
Pour enregistrer des ISOS
-->Iso image
Pour faire des sauvegardes des VMs et conteneurs
-->Backup
etc.

On vérifie dans l'arborescence, la présence du répertoire ainsi que sa capacité :

Attacher un disque directement à une machine virtuelle

Je vais prendre l'exemple d'une machine virtuelle Windows 11 sur laquelle je vais attacher directement mon disque "sde"
Pour l'instant, il n'est pas présent :

On va se rendre sur le shell du noeud Proxmox et taper la commande suivante:

root@pve-apps:~#ls -l /dev/disk/by-id/

On a l'information sur le disque, on va l'inclure à notre machine virtuelle Windows 11 avec la commande suivante:

root@pve-apps:~# qm set 107 -scsi1 /dev/disk/by-id/ata-ST4000VN008-2DR1660_ZA6TRTTF-part1
J'ai précisé "scsi1" car le "scsi0" est dèjà utilisé comme premier disque sur la vm.

On va vérifier sur notre VM Windows 11, on se connecte à celle-ci ou on redémarre si elle était déjà active.
Une fois connecté, on se rend la gestion des disques (clic droit sur l'icône Windows) :

On le formate (clic droit sur la fenêtre) :

On vérifie sa présence dans le gestionnaire de fichiers :


Voilà pour cette petite intro à Proxmox concernant le 1er démarrage et l'ajout des disques. J'ai fait un petit écart sur l'inclusion d'un volume sur une machine virtuelle alors que je n'ai pas parlé de création de conteneur ni de VM.

Si vous voulez en connaitre plus sur le sujet, La documentation de Proxmox est disponible directement sur votre instance (petit onglet en haut à droite).
Vous pouvez aussi vous rendre sur le site de TechnoNagib qui a fait pas mal de posts sur Proxmox.
je vous invite a consulter la chaine Youtube de Tonton Jo qui comprends un certain nombre de tutos sur le sujet.


proxmox - TechnoNagib
Tonton Jo
Je suis Tonton Jo, créateur de contenu tech et développeur passionné, ici pour rendre la technologie accessible à tous. Ma chaîne YouTube est l’endroit idéal pour découvrir des tutoriels pratiques, des astuces d’automatisation et des guides sur des outils comme Docker, Proxmox, ou des scripts d’optimisation. Que vous soyez débutant ou expérimenté, mes vidéos vous offrent des solutions simples à des problèmes complexes. Je partage mes projets open source sur GitHub, où je mets à disposition des outils pour optimiser vos environnements IT. Parmi eux : - Proxmox Toolbox, une collection d’outils dédiée à Proxmox, qui simplifie l’administration de ce puissant logiciel de virtualisation en offrant des fonctions prêtes à l’emploi pour la configuration et la gestion de votre infrastructure​ - Divers scripts comme ceux pour la gestion des certificats et des conteneurs Docker​ - Smart Tab Mute, une extension Firefox plébiscitée pour une navigation plus fluide et silencieuse.

Quant à moi, modeste blogueur amateur, je ferais un prochain post sur la mise en place des VLANs sur Proxmox PVE. Un autre post parlera de la virtualisation des systèmes d'exploitation avec le "passthrough". J'aborderais plus en détail les règles de filtrage sur le routeur.
Pour les applications web fonctionnant sur PVE, j'ai déjà fait des posts à ce sujet.