Introduction à Proxmox VE
Dans le réseau que je vous ai présenté précédemment, on distingue une partie composée de machines physiques et une autre constituée de machines virtuelles.
Nous allons nous intéresser ici à la virtualisation.
La virtualisation en informatique consiste à créer, sur une seule entité physique, plusieurs machines dépourvues de matériel propre, mais disposant des mêmes fonctions et capacités que des machines « physiques ».
Par exemple : des serveurs web, des NAS, des applications web, des routeurs réseau ou encore des stations de travail sous Linux, Windows ou macOS.
Comme mentionné précédemment, j’ai choisi la solution de virtualisation Proxmox VE, dont la dernière version est la 9.1.
Il s’agit d’un système basé sur Debian, intégrant l’hyperviseur KVM, l’émulateur QEMU ainsi que la technologie de virtualisation par conteneurs LXC.
C’est un hyperviseur de type bare metal, c’est-à-dire qu’il s’installe directement sur une machine physique et s’exécute au plus près du matériel, contrairement à des solutions comme VirtualBox qui reposent sur un système d’exploitation hôte.
C’est également un logiciel open source, utilisable librement sans souscrire aux services d’assistance ou aux ressources proposées par l’éditeur (qui sont, elles, payantes).
Il existe d’autres solutions de virtualisation. Parmi les plus connues, on peut citer VMware et XCP-ng.
La première est une solution propriétaire, généralement payante et particulièrement exigeante en termes de matériel. La seconde, moins connue, est open source, mais ne prend pas en charge la virtualisation par conteneurs.
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
L’utilisation d’une carte mère serveur équipée de mémoire ECC n’est pas obligatoire, mais ces deux éléments contribuent fortement à la stabilité du système.
Une carte mère serveur est dite « sans tête » (headless), car elle dispose d’un accès à une interface de gestion à distance (IPMI), permettant de l’administrer entièrement sans écran. Cette gestion est indépendante du système d’exploitation installé.
Deux ports Ethernet d’au moins 1 Gbps sont recommandés, notamment si vous souhaitez virtualiser un routeur comme pfSense CE ou OPNsense.
La présence d’une carte graphique reste optionnelle, mais elle peut s’avérer utile pour être ultérieurement attribuée à une machine virtuelle. Ce principe, appelé « passthrough », consiste à transférer le contrôle d’un périphérique PCI (carte graphique, disque, clavier, souris, caméra, dongle Bluetooth, etc.) directement à une machine virtuelle.
Cette fonctionnalité est particulièrement intéressante lors de la virtualisation de systèmes d’exploitation tels que Windows ou certaines distributions Linux.
Une fois votre machine assemblée, vous êtes prêt à installer Proxmox VE.
L’un des deux disques SSD sera dédié à cette installation : veillez à bien l’identifier lors de la procédure.
Vous aurez également besoin d’une clé USB ainsi que d’un outil comme Balena Etcher pour créer le support de démarrage.
Voici le lien de téléchargement de la dernière version :
On ne l’a pas encore abordé, mais avant toute chose, si vous souhaitez virtualiser, il est nécessaire d’activer certaines options dans le BIOS/UEFI de votre carte mère, souvent désactivées par défaut.
Dans un premier temps, il faut activer la fonctionnalité de virtualisation du processeur. Son nom varie selon les fabricants et les modèles de carte mère.
Par exemple, sur les cartes MSI, cette option se trouve généralement dans « Advanced » → « CPU Configuration ».
Elle est appelée « Intel Virtualization Technology » pour les processeurs Intel, et « AMD SVM » pour les processeurs AMD.
Je ne vais pas détailler tous les cas, mais vous trouverez facilement l’équivalent correspondant à votre matériel en ligne.
Dans un second temps, il est recommandé d’activer l’IOMMU. Là encore, l’intitulé peut varier selon les modèles.
Sur une carte mère MSI, cette option se trouve dans le menu « Advanced ».
Elle est nommée « VT-d » pour les plateformes Intel et « IOMMU » pour celles basées sur AMD.
Installation et 1ʳᵉ connexion
L’installation est très simple : il suffit de suivre les instructions affichées à l’écran.
- En cas de problème avec le mode graphique, vous pouvez, au démarrage, choisir un mode d’installation classique.
- Soyez vigilant quant au disque que vous sélectionnez pour l’installation.
- Vous avez la possibilité de personnaliser le partitionnement proposé par Proxmox VE, mais cela présente peu d’intérêt sur les versions récentes.
- Il est également recommandé de configurer une adresse IP fixe, préalablement définie sur votre routeur.
- Donnez un nom à votre serveur : choisissez-le avec soin, car même s’il est possible de le modifier par la suite, cela peut entraîner des complications.
Si tout s’est bien déroulé, vous devriez pouvoir vous connecter via l’adresse IP configurée, sur le port dédié à Proxmox VE :

Lorsque vous vous connectez, un message vous indique que vous ne disposez pas de souscription.
Pour corriger cela, vous pouvez utiliser un script appelé « Proxmox VE Post Install », disponible sur le site Proxmox Helper Scripts (CE).
Un grand merci à l’équipe qui met ce travail à disposition ; si vous le pouvez, n’hésitez pas à les soutenir via leur page dédiée.
Pour l’installer, il suffit de copier-coller la commande fournie sur le site dans le shell de votre nœud Proxmox, puis de valider avec la touche Entrée.
Ce script permet également de mettre à jour Proxmox vers la dernière version disponible.
Ce site constitue une véritable mine d’or pour l’automatisation de déploiements, principalement autour de Proxmox. Je vous laisse le découvrir par vous-même.
J’ai mentionné précédemment l’utilisation de l’IOMMU ainsi que son activation au niveau matériel.
Pour que Proxmox puisse en tirer parti, il est nécessaire de l’activer également au niveau du système, via le chargeur de démarrage GRUB.
Pour cela, rendez-vous dans le shell de Proxmox en cliquant sur le nom du nœud.

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 :

Cela signifie qu’il est bien détecté, mais qu’il n’est pas encore activé dans Proxmox.
Pour l’activer au niveau du système, il est nécessaire de modifier le fichier de configuration de démarrage GRUB :
root@pve-S:~# nano /etc/default/grub

Selon que vous utilisez un processeur AMD ou Intel, ajoutez la ligne correspondante dans le fichier GRUB, puis commentez 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

Voilà, il n’y a rien de plus à faire : les versions récentes de Proxmox ne nécessitent généralement aucune autre modification ni configuration supplémentaire.
Si vous rencontrez des probèmes à ce sujet, je vous invite à consulter la documentation de Proxmox.

Proxmox est désormais prêt à être utilisé. Si vous disposez d’autres disques SSD ou HDD dans votre système, vous pouvez les intégrer à Proxmox. Il est également possible d’attribuer directement un disque à une machine virtuelle.
Les SSD sont à privilégier pour l’installation des applications, en raison de leurs meilleures performances. Les HDD, quant à eux, seront plutôt dédiés au stockage des données.
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.

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.
