Proxmox VE

Debian 10 - Installation Proxmox VE 6.1-2

 

SOMMAIRE

I. PROXMOX

Prés-requis et Installation
Interface d'administration
Ajouter un volume logique dans le groupe pve
Monter un disque supplémentaire sur l'hyperviseur
Mise en oeuvre d'un partage NFS sur l'hyperviseur
Gestion d'un cluster
Commandes utiles
Sauvegarde des VM/CT
Gestion des templates
Mise à jour PROXMOX

II. GESTION DES VM SOUS PROXMOX

Redimensionner un partition disque d'une VM
Ajouter un disque à une VM
Doter une VM d'une seconde interface réseau

 

1°) Prés-requis et installation

La carte mère de la machine sur laquelle sera installé Proxmox doit être capable de gérer au niveau du bios la virtualisation (paramètre VT/AMD-V). Elle disposera d'un processeur 64 bits et 8 Go de RAM au minimum. La machine sera équipée d'une interface réseau. Les cartes 10 Gbit/s sont supportées.

 

a) Téléchargement de Proxmox

Version du 23 mars 2020 : Proxmox VE 6.1-2
Fichier : Proxmox-ve_6.1-2.iso (taille : 849,62 Mo)

 

b) Graver l'image iso sur un CD-ROM

 

c) Installer Proxmox

La procédure d'installation ne présente pas de difficulté particulière. Il suffit de suivre les indications des écrans d'installation.

 

ECRAN D'ACCUEIL

proxmox - Accueil

Sélectionnez l'option : Install Proxmox VE.

 

ECRAN LICENSE

Validez les conditions générales d'utilisation.

 

ECRAN DE PARAMETRAGE DISQUE

A ce stade, 2 stratégies peuvent être mise en oeuvre : la première très simple qui consiste à prendre l'option par défaut ou la seconde qui dimentionne l'espace disque en fonction des besoins.

Pour la stratégie n°1, on clique sur <Next> et on verra plus tard. Cette stratégie est valable en mode découverte. Elle peut être interessante si on dispose de plusieurs disques avec un disque de boot de faible capacité (SSD 250 Go par exemple). Proxmox sera installé avec les paramètres par défaut sur le SSD et il sera possible de prendre en compte le ou les disques supplémentaires ultérieurement pour qu'ils adhèrent au besoin.

Pour la stratégie n°2, il y a un travail de réflexion préalable qui va consister à s'adapter au mieux au besoin. Cette stratégie est particulièrement bien adaptée dans le cas où on dispose d'un seul disque dur. Le point de départ de cette réflexion consiste donc à évaluer le nombre de machines virtuelles [VM] ou de conteneurs [CT], l'espace disque occupé par chacun et la stratégie de sauvegarde souhaitée.

Exemple : J'ai besoin de trois machines virtuelles : 1 serveur web (VM, 200 Go), 1 serveur base de données (CT, 300 Go), 1 serveur Cloud (VM, 500 Go). L'espace disque utile est de 1To. Ces trois VM seront sauvegardées sur le disque en local toutes les semaines sur une rotation de 3 semaines, c'est à dire que la sauvegarde de la quatrième semaine écrasera la sauvegarde de la première semaine. Je dispose d'un disque de 6 To sur lequel PROXMOX sera installé. Le même disque hébergera le ou les fichiers ISO de mes VM (3 Go), les trois VM (1 To), les sauvegardes (3 To), les templates (1 To). Dans cette stratégie, on voit que le backup occupe une place de choix. Il faudra donc paramètrer PROXMOX en conséquence.

Le tableau ci-après prend 3 exemples basés un LVM de type ext4 :
- un disque SSD de 250 Go avec une stratégie par défaut.
- un disque SSD de 1 To avec une stratégie personnalisée
- un disque SAN de 6 To avec une stratégie personnalisée.

Répartition
LVM
Description

Valeur par défaut stratégie 1

Valeur personnalisée stratégie 2 Valeur personnalisée stratégie 2 Valeur par défaut
hdsize Taille du disque physique 249,5 Go 931 Go 6 To 5,5 To
swapsize Taille de la partition de swap 8 Go 8 Go 8 Go hd/8, min=4, max=8 Go
maxroot Taille du volume root (local)
Contient : iso, template, backup
62,25 Go 123 3 To hd/4 = 1,37 To
maxvz Taille du volume de données (local-lvm)
Contient : rootdir(CT), images(VM)
159,98 Go 0 Go 1 To =hd-swap-root-free
= 3,4 To
minfree Taille de l'espace libre dans la LVM 16 Go 800 Go 1,9 To hd/8 = 687,5 Go

La souplesse de proxmox permet de l'adapter facilement au besoin. On remarquera cependant que la configuration par défaut est parfois un peu surprenante ; Proxmox étant capable de prendre quelques libertés quant aux valeurs par défaut spécifiées.
Quelques remarques sur le paramètrage ci dessus : les sauvegardes sont compressées, elles occupent réellement une valeur en deça des valeurs mentionnées ici et enfin, les CT occupent moins d'espace disque que les VM. De plus, sur un plan sécuritaire, faire tourner PROXMOX sur un seul disque reste une opération assez périlleuse. En cas de crash disque, tout est perdu. Il est donc préférable d'opter pour des disques en mirroir (Raid 1) ou à minima une sauvegarde extérieure. Le problème du Raid 1, c'est d'une part le coût d'acquisition qui est multiplié par 2 (250 € x 2) et la consommation électrique qui suit le même sort (14 w pour 2 disques soit 122 kw/an pour un coût de 18 € annuel).

 

ECRAN DE LOCALISATION

Les informations demandées sont le pays, le méridien, le type de clavier.

 

ECRAN D'ADMINISTRATION

Les informations demandées sont le mot de passe administrateur et l'email de contact.

 

ECRAN DE PARAMETRAGE RESEAU

Les informations demandées sont l'interface de management (interface réseau), le nom de la machine (FQDN), l'adresse IP (soit IPV4 soit IPV6), le masque de sous-réseau et le DNS. Si vous optez pour l'adressage IPV6, assurez vous que tous vos équipements sont eux aussi en IPV6, au risque de ne plus pouvoir accéder à votre hyperviseur à partir d'un terminal non compatible avec ce protocole. Dans le doute, restez en IPV4, cela vous évitera une réinstallation.

 

ECRAN RESUME

L'installation débute juste après cet écran.

 

ECRAN FIN DE L'INSTALLATION

Elle s'achève en relançant le serveur.

 

ECRAN CONSOLE D'ADMINISTRATION

Au redémarrage, la console s'affiche.

 

d) Correction des erreurs après installation

Après l'installation d'une version antérieure, au reboot du serveur, trois erreurs se manifestent. Elles concernent la gestion ACPI, la gestion du temps et une erreur (à préciser). Ces erreurs ne se reproduisent pas sur une machine plus ancienne. Bien que sans réelle conséquence, il est préférable de les corriger lorsque c'est possible.

La gestion du temps

Cette erreur apparaît sur une carte mère GIGABIT équipée d'un intel i5 avec PROXMOX 5.4

[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x2b0 (or later)
Ajouter le repo non-free au fichier /etc/apt/sources.list
# nano /etc/apt/sources.list
deb http://ftp.fr.debian.org/debian stretch main contrib non-free
deb http://security.debian.org stretch/updates main contrib non-free
Désactiver le repo pve-enterprise.

Ce repo est inutile si aucune subscription n'a été souscrite. Pour le désactiver, il suffit d'insérer le caractère diése '#' au début de la ligne.

# nano /etc/apt/sources.list.d/pve-enterprise.list
# deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise
Mettre à jour debian
# apt-get dist-upgrade
Installer le correctif approprié
# apt-get install intel-microcode
ou selon le type de processeur
# apt-get install amd64-microcode

Relancer la machine.

 

e) Suppression du message de subscription de licence

Sous PROXMOX 6.x, 5.4

# cd /usr/share/javascript/proxmox-widget-toolkit
# cp proxmoxlib.js proxmoxlib.js.sav

Avec nano (ctrl w) rechercher la ligne : if (data.status !== 'Active') {
et la remplacer par : if (false) {

# systemctl restart pveproxy.service

On peut aussi réaliser la désactivation de la fenêtre de subscription via le script suivant :

# sed -i.sav "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

Ensuite, il suffit d'effacer le cache du navigateur.

Sous PROXMOX 5.1-x et inférieur

# cd /usr/share/pve-manager/js/

# vi pvemanagerlib.js
...
Remplacer la ligne :
if (data.status !== 'Active') {
par
if (false) {

 

f) Désactivation du repo pve-enterprise

Passer en commentaire la ligne d'activation du repo proxmox

# nano /etc/apt/sources.list.d/pve-enterprise.list
->
# deb https://enterprise.proxmox.com/debian stretch pve-enterprise

 

g) Mise à jour du systeme

# apt-get update
# apt-get dist-upgrade

 

h) Activation de la commande ls -l -> ll

Il faut décommenter la ligne suivante dans le fichier /root/.bashrc

# cd
# nano .bashrc
-> alias ll=='ls $LS_OPTIONS -l'

 

i) Paramètres du réseau (pour information)

# nano /etc/network/interfaces
auto lo
iface lo inet loopback

iface enp3s0 inet manual

auto vmbr0 inet static
  addresse 192.168.1.2
  netmask 255.255.255.0
  gateway 192.168.1.1
  bridge_ports enp3s0
  bridge_stp off
  bridge_fd 0

iface enp1s0 inet manual

 

j) Paramètres de stockage (pour information)

# vi /etc/pve/storage.cfg
dir: local
        path /var/lib/vz
        content iso,vztmpl,backup

lvmthin: local-lvm
        thinpool data
        vgname pve
        content rootdir,images

 

2°) Interface d'administration

CONNEXION

En saisissant le couple <https:/ /adresse:port> dans la barre d'adresse d'un navigateur, on obtient la fenêtre ci-dessus. L'identifiant par défault est root et le mot de passe est celui indiqué lors de l'installation, dans l'écran d'administration.

 

INTERFACE D'ADMINISTRATION

L'interface d'administration est plutôt intuitive. Les concepts les plus courants sont décrits dans le manuel d'utilisation.

 

3°) Ajouter un volume logique (LV) dans le groupe pve VG

a) Vérification des volumes installés

Vérification des volumes physiques (pv), group (vg) et logiques (lv)

# pvs
  PV         VG  Fmt  Attr PSize    PFree  
  /dev/sda3  pve lvm2 a--  <931.01g 800.01g
# vgs
  VG  #PV #LV #SN Attr   VSize    VFree  
  pve   1   3   0 wz--n- <931.01g 800.01g
# lvs
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                            
  root pve -wi-ao----  123.00g                                                    
  swap pve -wi-ao----    8.00g  

b) Ajout d'un volume logique dans le volume groupe pve

A la fin de l'installation de Proxmox, le groupe "pve" comprend 2 partitions (root, swap) - 3 si vous avez spéficié une valeur >0 pour maxvz (data, root, swap) - avec pour ma configuration un espace libre de 800.01 Go (VFree). On va donc créer un volume logique supplémentaire dans le groupe "pve" pour occuper l'espace libre.

Création d'un volume logique additionnelle

# lvcreate -L 0.78T -n pv0 pve
-> Rounding up size to full physical extent 798.72 GiB
Logical volume "pv0" created.

Vérification

# lvs
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                           
  pv0  pve -wi-a-----  798.72g                                                    
  root pve -wi-ao----  123.00g                                                    
  swap pve -wi-ao----    8.00g

On dispose maintenant de 3 partitions dans le volume groupe pve nommées : pv0, root et swap.

Installation du système de fichier sur le volume logique nouvellement créé.

# mkfs.ext4 /dev/pve/pv0
-> mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done                            
Creating filesystem with 209380352 4k blocks and 52346880 inodes
Filesystem UUID: 04206c23-88d2-4d8d-ae66-efa575db0e01
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
    102400000

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

 

c) Montage du système de fichiers

Ajouter la ligne ci-après au fichier /etc/fstab

# mkdir -p /var/lib/vz/pv0
# echo "/dev/pve/pv0 /var/lib/vz/pv0 ext4 defaults 0 2" >> /etc/fstab

ou

# mkdir -p /var/lib/vz/pv0
# nano /etc/fstab
-> /dev/pve/pv0 /var/lib/vz/pv0 ext4 defaults 0 2

# shutdown -r now

Vérification

# df -h
Filesystem            Size  Used Avail Use% Mounted on
udev                  3.9G     0  3.9G   0% /dev
tmpfs                 797M  9.0M  788M   2% /run
/dev/mapper/pve-root  121G  2.1G  113G   2% /
tmpfs                 3.9G   25M  3.9G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
tmpfs                 3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/pve-pv0   786G   73M  746G   1% /var/lib/vz/pv0
/dev/fuse              30M   16K   30M   1% /etc/pve
tmpfs                 797M     0  797M   0% /run/user/0

Intégration du volume logique pv0 dans la vue administrateur

Il faut maintenant intégrer le volume dans l'interface d'administration. Ceci s'effectue en modifiant le fichier de gestion du stockage /etc/pve/storage.cfg comme suit :

# nano /etc/pve/storage.cfg
->
dir: local
        path /var/lib/vz
        content iso,vztmpl,backup

dir: pv0
        path /var/lib/vz/pv0
        content iso,vztmpl,backup,rootdir,images

Cette opération peut aussi être réalisée dans l'interface graphique comme suit :
Sélectionner <DataCenter>
Sélectionner <Stockage>
Cliquer sur le bouton <Ajouter> et sélectionner "Répertoire".
Saisir les données dans la fenêtre de paramètrage.

 

 

4°) Monter un disque supplémentaire sur l'hyperviseur

Lors de l'installation, PROXMOX s'installe sur le disque de boot. Les autres disques sont détectés mais ils ne sont pas pris en compte. il faudra les déclarer post-installation. C'est l'objectif de cette section.

a) Afficher les disques et les partitions

# fdisk -l
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 91EEAB5B-05DC-4289-AC2A-8EE6B383378A

Device       Start        End    Sectors  Size Type
/dev/sda1       34       2047       2014 1007K BIOS boot
/dev/sda2     2048    1050623    1048576  512M EFI System
/dev/sda3  1050624 1953525134 1952474511  931G Linux LVM

Disk /dev/sdb: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: HGST HUS726T6TAL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: B5672E5D-89BB-419B-8B44-D3AD537D0A74

Disk /dev/mapper/pve-swap: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/pve-root: 96 GiB, 103079215104 bytes, 201326592 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/pve-pv0: 696.3 GiB, 747668242432 bytes, 1460289536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

b) Suppression le cas échéant des partitions existantes sur /dev/sdb

Si nécessaire dans le cas d'un disque déjà partitionné,

# fdisk /dev/sdb
->
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdb: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: HGST HUS726T6TAL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: B5672E5D-89BB-419B-8B44-D3AD537D0A74

Device     Start         End     Sectors  Size Type
/dev/sdb1   2048 11721045134 11721043087  5.5T Linux filesystem

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): w
The partition table has been altered.
Failed to remove partition 1 from system: Device or resource busy

The kernel still uses the old partitions. The new table will be used at the next reboot.
Syncing disks.

# reboot

 

c) Création d'une partition sur /dev/sdb

# sgdisk -N 1 /dev/sdb
->
Creating new GPT entries.
The operation has completed successfully.

# reboot

Vérification

# fdisk -l /dev/sdb
Disk /dev/sdb: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: HGST HUS726T6TAL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: B5672E5D-89BB-419B-8B44-D3AD537D0A74

Device     Start         End     Sectors  Size Type
/dev/sdb1   2048 11721045134 11721043087  5.5T Linux filesystem

 

d) Création d'un volume Physique (PV) pour chaque disque

# pvcreate --metadatasize 1m -y -ff /dev/sdb1
->
  Physical volume "/dev/sdb1" successfully created.

# pvs
  PV         VG  Fmt  Attr PSize    PFree
  /dev/sda3  pve lvm2 a--  <931.01g  3.67g
  /dev/sdb1      lvm2 a--    <5.46t <8.23g

 

e) Création d'un volume groupe (VG) "pvi"

# vgcreate -v pvi /dev/sdb1
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Wiping signatures on new PV /dev/sdb1.
    Adding physical volume '/dev/sdb1' to volume group 'pvi'
    Archiving volume group "pvi" metadata (seqno 0).
    Creating volume group backup "/etc/lvm/backup/pvi" (seqno 1).
  Volume group "pvi" successfully created
# vgs
  VG  #PV #LV #SN Attr   VSize    VFree
  pvi   1   1   0 wz--n-   <5.46t <8.23g
  pve   1   4   0 wz--n- <931.01g  3.67g

 

f) Création d'un volume logique

# lvcreate -n pv1 -L 2.7T pvi
  Rounding up size to full physical extent 5.45 TiB
  Logical volume "pv1" created.

En cas d'erreur, il est possible de supprimer le volume logique vol1 du volume groupe pv1

# lvremove pv1/pvi

 

g) Formatage du volume logique "pv1"

# mkfs.ext4 /dev/pvi/pv1
ou
# mkfs -t ext4 /dev/pvi/pv1
->
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 1462973440 4k blocks and 182874112 inodes
Filesystem UUID: 0f617bce-b8cb-44bc-9f76-cae362594f0f
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

 

h) Montage du système de fichiers

Ajouter la ligne ci-après au fichier /etc/fstab

# mkdir -p /var/lib/vz/pv1
# nano /etc/fstab
-> /dev/pvi/pv1 /var/lib/vz/pv1 ext4 defaults 0 2
# shutdown -r now

Vérification

# df -h
->
Filesystem            Size  Used Avail Use% Mounted on
udev                   16G     0   16G   0% /dev
tmpfs                 3.2G  9.0M  3.2G   1% /run
/dev/mapper/pve-root  162G  1.7G  154G   2% /
tmpfs                  16G   43M   16G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
tmpfs                  16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/pv1-vol1  2.7T   89M  2.6T   1% /nfs4
/dev/fuse              30M   16K   30M   1% /etc/pve

 

5°) Installation d'un partage NFS sous PROXMOX

Cette section installe un serveur NFS directement sur l'hyperviseur.

a) Installation du serveur NFS

On utilisera la commande apt au lieu et place de apt-get

# apt install nfs-kernel-server
-> Reading package lists... Done
The following NEW packages vill be installed:
   nfs-kernel-server
...
Job for nfs-server.service failed because the control process exited with error code.
nfs-server.service couldn't start.

Creating config file /etc/exports with new version
Creating config file /etc/default/nfs-kernel-server with new version

# systemctl start nfs-kernel-server
# systemctl enable nfs-kernel-server

Ne pas tenir compte de l'erreur au démarrage du serveur nfs.

b) Création du point de montage NFS

# mkdir -p /nfs4/nfs-pve

c) Ajouter le point de montage au fichier /etc/exports

# nano /etc/exports
/nfs4 192.168.1.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check)
/nfs4/nfs-pve 192.168.1.10(rw,sync,no_subtree_check,no_root_squash)
# /nfs4/nfs-pve 192.168.1.11(rw,sync,no_subtree_check,no_root_squash)

d) Configurer idmapd

# nano /etc/default/nfs-common
-> # Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=YES

# nano /etc/idmapd.conf
...
Domain = rpn.home
...

Relancer les services

# systemctl restart portmap
# systemctl start nfs-kernel-server

e) Mise en place du partage NFS via PROXMOX

Se connecter à l'interface d'administration de PROXMOX

https://<@IP_du_serveur>:8006 -> https:// 192.168.1.10:8006

Dans la vue serveur (bloc à gauche), sélectionner "Datacenter"
Dans la vue centrale sur le menu à gauche, sélectionner "Stockage"
Cliquer sur le bouton "Ajouter" dans la vue centrale et sélectionner NFS dans la liste déroulante.
Renseigner les champs de la fenêtre comme ci-dessous.

En cliquant sur le bouton OK, le partage NFS est efficient sur le serveur proxmox.

# mount /dev/pv1/vol1 /nfs4/nfs-pve

b) (Procédure obsolette, conservée pour mémoire uniquement) Suppression du masquage du service nfs-common

# systemctl start nfs-common
Failed to start nfs-common.service: Unit nfs-common.service is masked.
# systemctl enable nfs-common
Synchronizing state of nfs-common.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nfs-common
Failed to enable unit: Unit file /lib/systemd/system/nfs-common.service is masked.

# file /lib/systemd/system/nfs-common.service
/lib/systemd/system/nfs-common.service: symbolic link to /dev/null

# rm /lib/systemd/system/nfs-common.service
# systemctl daemon-reload
# systemctl start nfs-common
# systemctl status nfs-common
-> nfs-common.service - LSB: NFS support files common to client and server
   Loaded: loaded (/etc/init.d/nfs-common; generated; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-08 19:09:42 CEST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4291 ExecStart=/etc/init.d/nfs-common start (code=exited, status=0/SUCCESS)
    Tasks: 2 (limit: 4915)
   Memory: 5.7M
      CPU: 38ms
   CGroup: /system.slice/nfs-common.service
           ├─4312 /sbin/rpc.statd
           └─4338 /usr/sbin/rpc.idmapd

Oct 08 19:09:42 pve0 systemd[1]: Starting LSB: NFS support files common to client and server...
Oct 08 19:09:42 pve0 rpc.statd[4312]: Version 1.3.3 starting
Oct 08 19:09:42 pve0 sm-notify[4313]: Version 1.3.3 starting
Oct 08 19:09:42 pve0 rpc.statd[4312]: Failed to read /var/lib/nfs/state: Success
Oct 08 19:09:42 pve0 rpc.statd[4312]: Initializing NSM state
Oct 08 19:09:42 pve0 nfs-common[4291]: Starting NFS common utilities: statd idmapd.
Oct 08 19:09:42 pve0 systemd[1]: Started LSB: NFS support files common to client and server.
# systemctl enable nfs-common
-> nfs-common.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nfs-common

 

6°) Gestion d'un cluster

a) Création du cluster et visualisation de son état

commande : pvecm create <Nom_du_Cluster>

Attention : Si vous disposez déjà d'un groupe de machines en cluster et que vous en installez un second, il est impératif d'utiliser un nom de cluster différent du premier groupe.

Sur le serveur Maître

# pvecm create cluster
-> Corosync Cluster Engine Authentication key generator.
Gathering 1024 bits for key from /dev/urandom.
Writing corosync key to /etc/corosync/authkey.

Vérification

# pvecm status
-> Quorum information

------------------
Date:             Sun Apr 1 16:59:00 2018
Quorum provider:  corosync_votequorum
Nodes:            1
Node ID:          0x00000001
Ring ID:          1/4
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   1
Highest expected: 1
Total votes:      1
Quorum:           1  
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.1.90 (local)

 

b) Ajout d'un nouveau noeud au cluster

Sur le noeud à ajouter

Commande : pvecm add <IP-Adresse-proxmox-maître>

# pvecm add 192.168.1.90
-> The authenticity of host '192.168.1.90 (192.168.1.90)' can't be established.
ECDSA key fingerprint is SHA256:e3xuxxxx...xx.
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.1.90's password:
copy corosync auth key
stopping pve-cluster service
backup old database
waiting for quorum...OK
generating node certificates
merge known_hosts file
restart services
successfully added node 'pve1' to cluster.

Vérification

# pvecm status
Quorum information
------------------
Date:             Sun Dec 18 21:11:30 2016
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          0x00000001
Ring ID:          1/8
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           2  
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.1.90 (local)
0x00000002          1 192.168.1.95

 

c) Suppression d'un noeud en cluster

1) Identifier le noeud à supprimer

Se connecter en ssh sur le serveur maître.

# pvecm nodes
-> Membership information
----------------------
    Nodeid      Votes Name
         1          1 msrv (local)
         2          1 pve1

Arrêter le noeud 2 via l'interface de management 

# pvecm delnode pve1

Important : Ne pas redemarrer le noeud 2 sur le réseau suite à cette opération.

 

2) Supprimer l'erreur de mise à jour via apt-get update

# rm /etc/apt/sources.list.d/pve-enterprise.list

 

7°) Commandes utiles

Prés-requis : Etablir une connexion sur la machine physique (pve) en mode ssh

# ssh nom_du_noeud_ou_IP -l root

Afficher les informations mémoire et swap

# free -h
->   total   used    free  shared  buff/cache  available
Mem:   62G   7.6G    1.7G     53M         53G        53G
Swap:   8G   976M      7G

 

La commande "qm" permet de gérer les machines virtuelles du noeud en mode ligne de commande.
La commande "pct" permet de gérer les containeurs du noeud en mode ligne de commande.

1°) Lister les machines virtuelles présentes sur le noeud

# qm list
->
root@pve2:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID       
       100 Swtest               running    1504              15.00 29188     
       105 SWeb2                running    1504              15.00 29813     
       106 Deb8Cmd              running    3072              12.00 855       
       107 Gandi-php            stopped    1248              15.00 0         
       108 Graylog2             running    4032              20.00 2195      
       110 srvbd                running    1536              15.00 1404      
       111 FreeIpa              running    2560              15.00 2295      
       114 smail                running    2080              15.00 10872     
       119 ipcop                running    1568              15.00 6437 

 

2°) Démarrer/arrêter une VM

# qm start <vmid>
# qm stop <vmid>
# qm shutdown <vmid>

 

3°) Fixer le démarrage d'une VM au boot de la machine physique

# qm set <vmid> -onboot 1

 

4°) Afficher toutes les commandes de gestion des VM via "qm"

# qm help
-> USAGE: qm <COMMAND> [ARGS] [OPTIONS]
       qm agent <vmid> <command>
       qm clone <vmid> <newid> [OPTIONS]
       qm config <vmid> [OPTIONS]
       qm create <vmid> [OPTIONS]
       qm delsnapshot <vmid> <snapname> [OPTIONS]
       qm destroy <vmid> [OPTIONS]
       qm list  [OPTIONS]
       qm listsnapshot <vmid>
       qm migrate <vmid> <target> [OPTIONS]
       qm move_disk <vmid> <disk> <storage> [OPTIONS]
       qm pending <vmid>
       qm reset <vmid> [OPTIONS]
       qm resize <vmid> <disk> <size> [OPTIONS]
       qm resume <vmid> [OPTIONS]
       qm rollback <vmid> <snapname>
       qm sendkey <vmid> <key> [OPTIONS]
       qm set <vmid> [OPTIONS]
       qm shutdown <vmid> [OPTIONS]
       qm snapshot <vmid> <snapname> [OPTIONS]
       qm start <vmid> [OPTIONS]
       qm stop <vmid> [OPTIONS]
       qm suspend <vmid> [OPTIONS]
       qm template <vmid> [OPTIONS]
       qm unlink <vmid> -idlist <string> [OPTIONS]

       qm monitor <vmid>
       qm mtunnel
       qm rescan  [OPTIONS]
       qm showcmd <vmid>
       qm status <vmid> [OPTIONS]
       qm terminal <vmid> [OPTIONS]
       qm unlock <vmid>
       qm vncproxy <vmid>
       qm wait <vmid> [OPTIONS]

       qm help [<cmd>] [OPTIONS]

 

5°) Commandes utiles :

Si une VM n'est plus accessible avec l'erreur VM is locked, la commande suivante déverrouille la VM.
qm unlock <vmid>

 

6°) Afficher toutes les commandes de gestion des CT via "pct"

# pct
-> USAGE: pct <COMMAND> [ARGS] [OPTIONS]
       pct clone <vmid> <newid> [OPTIONS]
       pct create <vmid> <ostemplate> [OPTIONS]
       pct destroy <vmid>
       pct list
       pct migrate <vmid> <target> [OPTIONS]
       pct move_volume <vmid> <volume> <storage> [OPTIONS]
       pct resize <vmid> <disk> <size> [OPTIONS]
       pct restore <vmid> <ostemplate> [OPTIONS]
       pct template <vmid>

       pct config <vmid>
       pct set <vmid> [OPTIONS]

       pct delsnapshot <vmid> <snapname> [OPTIONS]
       pct listsnapshot <vmid>
       pct rollback <vmid> <snapname>
       pct snapshot <vmid> <snapname> [OPTIONS]

       pct resume <vmid>
       pct shutdown <vmid> [OPTIONS]
       pct start <vmid> [OPTIONS]
       pct stop <vmid> [OPTIONS]
       pct suspend <vmid>

       pct console <vmid>
       pct cpusets
       pct df <vmid>
       pct enter <vmid>
       pct exec <vmid> [<extra-args>]
       pct fsck <vmid> [OPTIONS]
       pct mount <vmid>
       pct pull <vmid> <path> <destination> [OPTIONS]
       pct push <vmid> <file> <destination> [OPTIONS]
       pct status <vmid> [OPTIONS]
       pct unlock <vmid>
       pct unmount <vmid>

       pct help [<extra-args>] [OPTIONS]

 

8°) Sauvegarde des VM/CT

Proxmox permet de sauvegarder automatiquement tout ou partie des VM. Pour ce faire, il faut :
Sélectionner le Datacenter, puis sélectionner la fonction Backup et enfin cliquer sur le bouton "Add".

La fenêtre de paramétrage de la sauvegarde s'affiche. Il sufit de saisir les paramètres correspondant à votre configuration.

 

9°) Gestion des templates

Proxmox permet d'utiliser des templates. Un template consiste à installer le système d'exploitation de façon classique sur une VM de telle sorte qu'elle puisse être dupliquée par la suite pour créer de nouvelles VM. On gagne ainsi un temps précieux lorsqu'on souhaite disposer rapidement d'une nouvelle VM. La VM doit être convertie en Template (Dans proxmox, clic droit sur la VM à convertir, puis sélectionner "convert to template").

Problème : Les VM créées sur la base d'un template conservent toutes ses caractéristiques (UUID, @IPV4, @IPV6, nom de machine). Il faut donc veiller à modifier ces paramètres.

Solution : Le script ci-dessous permet de modifier automatiquement ces trois paramètres.

#!/bin/bash
# -------------------------
# Modifie l'UUID, l'adresse IPV4, IPV6 et le nom du serveur
# Commande : ./modif-ip.sh <dernier-digit-IPV4> <Nom-du-serveur>
# exemple : ./modif-ip.sh 21 srvbd0
# -------------------------
nuuid=`uuidgen`
nip4=$1
sed -i "s/d7a7e856-eae0-43f9-8d63-c23b3b6f9c65/$nuuid/" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "/^IPADDR/s/89/$1/" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "/^IPV6ADDR/s/89/$1/" /etc/sysconfig/network-scripts/ifcfg-eth0

hostnamectl set-hostname $2.home
systemctl restart network

La première ligne permet de déterminer un nouvel uuid pour l'interface réseau.
La première commande sed recherche l'uuid issue du template et le remplace par le nouvel uuid
La seconde commande sed recherche dans l'adresse IPV4 le dernier nombre (ici 89) issue du template et le remplace par le nombre donné en premier paramètre.
La troisième commande sed effectue la même opération pour l'adresse IPV6.
Enfin, la dernière commande modifie le nom du serveur par le nom donné en second paramètre.

Ce script est à adapter en remplaçant les éléments surlignés par ceux de votre template.

 

10°) Mettre à jour PROXMOX

La solution la plus simple c'est de prendre une souscription. Une autre solution peut consister à monter un deuxième serveur Proxmox indépendant. L'objectif étant de déplacer toutes les VM du serveur PROXMOX1 sur le serveur PROXMOX2, puis d'upgrader le serveur PROXMOX1 à la dernière version pour enfin rebasculer les VM du serveur PROXMOX2 sur le serveur PROXMOX1 nouvellement mis à jour. Si on ne dispose pas d'une seconde machine suffisamment puissante pour prendre temporairement le relai, on peut encore sauvegarder toutes les VM puis les transférer sur un PC. Une fois la mise à jour terminée, on procèdera à l'opération inverse.

Attention toutefois avec les conteneurs. En effet, sur un changement de version majeur (wheezy -> buster par exemple), il sera nécessaire de réinstaller le conteneur sur un noyau de même version que le noyau proxmox pour garantir la compatibilité ascendante.

Dans ma configuration, je dispose d'un serveur PROXMOX1 en version 5.1.41 que je voudrais faire passer en 5.2 et d'une grappe de serveurs PROXMOX2 en version 4.4-1/eb2d6f1e. Je vais upgrader l'ensemble pour disposer d'un parc de serveurs aligné sur la dernière version de PROXMOX.

a) Sauvegarde des VM

j'utilise pour cela l'interface graphique.

Arrêt de la VM à sauvegarder, lancement de la sauvegarde.


Le fichier de la VM sauvegardé est situé sur le partage nfs. Il se nomme : vzdump-qemu-115-2018_09_30-09_45_41.vma.lzo, 115 étant le n° de la VM.

b) Transfert de la VM de PROXMOX1 -> PROXMOX2

# ssh pve2
# cd /mnt/pve/nfs-pve1/dump
# scp root@pve1:/mnt/pve/nfs-pve/dump/vzdump-qemu-115-2018_09_30-09_45_41.vma.lzo ./
-> root@pve1's password:
    vzdump-qemu-115-2018_09_30-09_45_41.vma.lzo                       100% 1260MB 114.5MB/s   00:11

c) Restauration de la VM sur PROXMOX2

Dans la vue "server", se positionner sur le partage nfs-pve1, sélectionner la VM à restaurer et cliquer sur "Restaurer".

Ajuster les paramètres comme suit

d) Modification du Hardware de la VM

Il faut modifier la section CD/DVD pour la faire passer à "None" sauf si vous avez eut la bonne idée de nommer les deux partages nfs de façon identique sur chacun des deux serveurs.

e) Démarrage de la VM sur PROXMOX2

Maintenant la VM démarre sans aucune difficulté.

 

II GESTION DES VM

 

1°) Redimensionner une partition disque d'une VM

Afficher les partitions de la VM et visualiser le volume physique

# fdisk -l
->
Disque /dev/sda : 53.7 Go, 53687091200 octets, 104857600 secteurs
Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x000a2de1

Périphérique Amorçage  Début         Fin      Blocs    Id. Système
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10485759     4193280   8e  Linux LVM

Disque /dev/mapper/centos-root : 3753 Mo, 3753902080 octets, 7331840 secteurs
Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Disque /dev/mapper/centos-swap : 536 Mo, 536870912 octets, 1048576 secteurs
Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets

# pvs
->
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  <4,00g    0

Supprimer et recréer la partition physique LVM (n°2)

# fdisk /dev/sda
->d   (pour suppression - delete)
->2   (partition n°2)
->n   (création - new)
->p   (partition primaire)
->2   (numéro 2)
->    (premier cylindre - valeur par défaut)
->    (dernier cylindre - valeur par defaut)
->t   (modification du type de la partition créée - LVM)
->2   (numéro de la partition)
->8e  (code hexadécimal d'une partition LVM)
->p   (pour vérifier)
->w   (pour enregistrer les changements)
->q   (pour quitter)

Redimensionner la partition physique

# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <49,00g 45,00g

# shutdown -r now

Redimensionner la partition logique et le file system de 5G

# df -H
Sys. de fichiers        Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/centos-root   3,8G    3,5G  256M  94% /
devtmpfs                  2,0G       0  2,0G   0% /dev
tmpfs                     2,0G       0  2,0G   0% /dev/shm
tmpfs                     2,0G    8,9M  2,0G   1% /run
tmpfs                     2,0G       0  2,0G   0% /sys/fs/cgroup
/dev/sda1                 1,1G    190M  875M  18% /boot
tmpfs                     388M       0  388M   0% /run/user/0

# lvresize /dev/mapper/centos-root -L +5G -r
->Size of logical volume centos/root changed from <3,50 GiB (895 extents) to <8,50 GiB (2175 extents).
  Logical volume centos/root successfully resized.
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=229120 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=916480, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 916480 to 2227200

# df -H
Sys. de fichiers        Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/centos-root   9,2G    3,5G  5,7G  39% /
devtmpfs                  2,0G       0  2,0G   0% /dev
tmpfs                     2,0G       0  2,0G   0% /dev/shm
tmpfs                     2,0G    8,9M  2,0G   1% /run
tmpfs                     2,0G       0  2,0G   0% /sys/fs/cgroup
/dev/sda1                 1,1G    190M  875M  18% /boot
tmpfs                     388M       0  388M   0% /run/user/0

 

2°) Ajouter/suppression d'un disque d'une VM

Dans l'interface graphique, sélectionnez la Vm. Dans les paramètres, sélectionnez "Hardware", cliquez sur le bouton <Add> et dans le menu déroulant, sélectionnez l'option "Hard Disk". Précisez les caractéristiques (interface, lieu de stockage, taille du disque) et clisuez enfin sur le bouton <Add> en bas de la fenêtre.

Connectez-vous à la VM via un terminal tiers.

Etat des lieux : Le disque a été ajouté dans l'interface Proxmox. La partition a été créée. Il reste à mettre en oeuvre le volume physique, le volume groupe, le volume logique, formater ce dernier et ajouter le disque au fichier fstab.

# fdisk -l
# pvcreate /dev/sdb
# vgcreate -v pv2 /dev/sdb
# lvcreate -n vol1 -L 499G pv2
# mkfs.ext4 /dev/pv2/vol1
# echo "/dev/pv2/vol1 /home/pbr18 ext4 defaults 0 2" >> /etc/fstab
# reboot

Pour supprimer un disque dur via l'interface graphique, il faut sélectionner la VM, cliquez sur "Options", sélectionner le disque à supprimer et cliquez sur "Détach" pour désolidariser le disque de la VM. Le disque désolidarisé apparaît dans la liste des options sous le status "Unused Disk 0". En sélectionnant ce disque, on peut alors le supprimer en cliquant sur le bouton "Remove".

 

3°) Doter une VM de deux interfaces réseaux

Le sujet paraît plutôt banal puisque l'interface Proxmox permet d'ajouter très simplement une nouvelle interface réseau. Il n'en est rien. La seule solution valable que j'ai trouvée c'est de créer une VM en spécifiant au départ la présence des deux interfaces réseaux et à partir de là, il est tout à fait possible par la suite de gérer indépendamment du contexte chacune de ces interfaces.

Ceci étant, à la création de la VM, on ne peut que créer une seule interface réseau. L'astuce consiste à ajouter la seconde interface réseau de même modele avant même d'installer le system d'exploitation. Le modèle "intel e1000" a été choisi pour les deux interfaces.

A l'installation de CentOS7, il est préférable de configurer manuellement les deux interfaces. A la fin de l'installation, on dispose bien des deux fichiers de configuration (ifcfg-ens18 et ifcfg-ens19) des interfaces dans le répertoire /etc/sysconfig/network-scripts/. Après avoir activé au boot la seconde interface et relancé le réseau, j'avais enfin mes deux interfaces désirées.

 

15°) Quelques références

https://github.com/SambaEdu/se3-docs/blob/master/se3-virtualisation/prox...

https://www.itsfullofstars.de/2019/07/import-ova-as-proxmox-vm/

-- ° -- ° --