Skip to content

proxmoxlien

Infralien

serveurs : 3 Dell R440 (2 x 12=24 cœurs chacun), 96 Mo de RAM (un a été boosté ultérieurement à 256 Mo pour un usage RDC windows). 1 ancien serveur Dell R530 (backup par NFS).

stockage :une baie (DAS/contrôleur RAID intégré) Dell MD3420 (3‘5) , à laquelle est chaînée une baie MD1200 (2‘5), pour un total > 30To de disques

rootlien

  • commandes: pvecm (Cluster Management), pvesm (Storag Management), pveXX …
  • cluster?: tout ce qui est commun/cluster est centralisé dans le rép /etc/pve, synchronisé grâce à corosync
pve3:~# ls -l /etc/pve/
...
lrwxr-xr-x 1 root www-data    0 Jan  1  1970 local -> nodes/pve3
lrwxr-xr-x 1 root www-data    0 Jan  1  1970 lxc -> nodes/pve3/lxc
...
lrwxr-xr-x 1 root www-data    0 Jan  1  1970 qemu-server -> nodes/pve3/qemu-server
  • c’est par ex dans /etc/pve/qemu-server/2503.conf = /etc/pve/nodes/pve3/qemu-server/2503.conf que se trouve toute la config de le VM n° 2503 ( ~ équivalent du dumpxml de KVM)

  • Rq (addons ;-) !): kanif est installé

    • kaput multipath.conf /etc (distribution du fichier sur tous le nœuds)
    • kaget /etc/multipath.conf (vérif)
    • kash apt install -y un_package (installation sur tous le nœuds)
    • j’ai placé (/mnt/pve/backup-nfs/pve_admin) un petit script ./diff_apt.sh pveX pveY … pour voir les dérives ;-)

réseaulien

En sus des réseaux admin, idrac etc., les réseaux de chaque services (2 à 3 par services), passent par une des 4 interfaces 10Gb dédiée

service bridge tags
Proxmox vmbrO ?
LISIC vmbr1 14
LMPA vmbr2 3,28(CGR*)
CGU vmbr3 7,17,19
FCU vmbr4 11,13,18,21

Fcu : 13, 20,27 (d’après doc Stéphane?) CGR*: dhcp batiment B ( B014 etc.)

stockage (LVM, LVM-thin) :lien

Attention! : malgré le DAS (Direct Attach, tous les nœuds ont accès au stockage), un stockage LVM-thin ne peut pas être partagée . (contrairement à LVM où un stockage est un VG, partageable entre les nœuds, un pool LVM-thin est un LV : il est donc géré par un hyperviseur unique, ainsi que toutes les VMs qu’il contient. Il faut donc faire un choix entre:

  • LVM: partagé sur les 3 nœuds mais pas de snapshot possible sur les VM
  • LVM-thin: non partagé avec possibilité de snapshot sur les VMs.

Notes: en revanche, toutes les migrations internœuds (et interstockage sont OK)

accès graphique (de l’extérieur de nos réseaux):lien

faute de VPN, une solution la confortable est :

pré-requis : accès ssh (ssh-serveur) sur une machine d’un des réseaux du campus qui a accès à PVE.

plugin brouteur : installer «proxy-switcher» (chrome,firefox)

  • le configurer comme suit (12345 = choix arbitraire): Screenshot
  • ouvrir la connexion : ssh -D 12345 login@ssh-server
  • se connecter comme d’habitude https://ip-du-node-pve:8006
  • fin de connexion: revenir à l’onglet «System» via l’icone du plugin pour revenir à une situation normale…
serveur @ IP ports @IP mgmt(iDraC, nut)
pve1 10 8006, 22 61
pve2 11 8006, 22 62
pve3 12 8006, 22 63
backup-pvevm 20 22 60
onduleur 100

https://ip-du-node-pve:8006

Rq: la même méthode permet de se connecter à l’onduleur (du LMPA ;-)) et aux iDraC.

usage (généralités)lien

cohabitation à quatre services: discipline!lien

  • pool & réseau: pas de soucis, chacun les siens.
  • pour plus de clarté (PVE incrémente automatiquement le premier numéro libre à partir de 100), numérotons-les en reprenant (par ex.) les chiffres
service bridge VM/container
LISIC vmbr1 1000-1999
LMPA vmbr2 2000-2999
CGU vmbr3 3000-3999
FCU vmbr4 4000-4999

C’est important car proxmox impose le nommage des disques des VMs/containers par numéro (/dev/VG/vm-XXXX-disk-0|1..) … idem pour les backups … la cohabitation va vite être compliquée…

identitéslien

2 types d’identités en place ( or LDAP etc. non mis en place)

  • proxmox: accès web, bcp de profils. pas facile de trouver
  • PAM Linux: seul root y est par défaut. pour factoriser mode commande (ci-dessou), il faudrait créer des compte ( ou LDAPs ) + sudoers. Probablement faisable, mais pas trop documenté (contraire à «l’esprit» Proxmox?)

LVM: gestion des stockageslien

Rem: en amont, gestion des ARRAYs uniquement via Soft Dell MDSM (Modular Storage Manager), boîte à click sous Windows. Cf. notes Cédric et Stéphane pour mis en œuvre.

mise en place…repérage des LUNs/WWID :

  • lsscsi (-u, -d, -w ...)
  • dmsetup (info, status), udev
  • rescan-scsi-bus.sh
  • multipath -l

création PV VG LV:

  • pvcreate /dev/mapper/3600a098000e5aecc00000.... PV_LMPA_7k
  • (ou bien:) pvcreate /dev/mapper/PV_LMPA_7k (une fois multipath configuré, c’est l’alias qui «apparait» dans le devmapper)
  • vgcreate VG_LMPA_7k /dev/mapper/PV_LMPA_7k (un seul VG par PV arbitrairement choisi, on peut faire différemment)

Note: difficile de s’y retrouver dans Prxomox avec DAS + multipath ( ça se fait mais bonjour les A/R entre la baie MD3400 + (/dev/sdi = /dev/sdz (x2!) ) = /dev/mapper/3600axxxxx) => les PV & VG ont été crées a la mano. La suite se fait aisément avec l’interface graphique, où:

  • LVM: simple « déclaration » de VG qui apparait comme Pool Storage
  • LVM-thin: idem sur le clickodrome… mais en «sous-jacent», il y a bel et bien création-puis-conversion d’un LV; la version commande serait qq chose comme:

  • lvcreate -n LMPA_7kThin -l 99%FREE VG_LMPA_7k

  • lvconvert --type thin-pool VG_LMPA_7k/LMPA_7kThin (conversion = création implicite des LVs pool et metadata)

Notes:

  • 100% n’est pas possible (la conversion implique la création de deux LVs: le LV data (qui contiendra toutes les VMs/container ) + le LV meta : il faut laisser un peu de place pour les métadonnées !
  • par défaut, proxmox prend tout, on ne sait pas trop ce qu’il fait… en théorie il y a plein d’option ( cf man lvmthin).

C’est pourquoi les LVM-thin dans le menu LVM apparaissent plein à 99%/100%: Screenshot

visualisation

  • pvesm list LMPA_10k (la complétion fonctionne)
  • lvs, vgs, pvs, pvdisplay, vgdisplay, lvdisplay
  • dmsetup info

suppression

…faire les choses correctement (vgreduce, pvremove …) https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/online_storage_reconfiguration_guide/removing_devices

Gestion des VMslien

commandes en vraclien

  • qm list # liste ttes les VMs (on ou off)
  • qm start|shutdown|stop 2010
  • qm config 2010 (toutes les infos)

Les commandes ci-dessous implique que le qemu-agent soit opérationnel ( installé et lancé sur la VM + activé sur PVE…+ peut-être un redémarrage de la VM pour que PVE établisse la socket de connexion? ). Les retours de commande sont en json, ex:

rq (installation) : apt install qemu-guest-agent + on/off ( le reboot de la VM ne suffit pas )

qm guest cmd 2000 get-host-name
{
   "host-name" : "db10CI"
}
  • qm set 2007 --agent 1 (met le flag à True sur PVE. Se fait avec des clicks via le menu «Options» de la VM.)
  • qm agent 2009 ping # !retourne rien si OK (!)
  • qm guest cmd 2010 get-host-name
  • qm guest cmd 2010 get-osinfo
  • qm guest passwd 2010 utilisateur

    - Enter new password: ******
    - Retype new password: ******
    
  • … à continuer

import/export de VMs déjà existantes (KVM, qcow2 ou raw)lien

importer le disque sur un Pool de type Dir ( /mnt/pve/backup/images du R530 de backup, préférable -car plus de place- par rapport à l’espace dédié par defaut de Proxmox : /var/lib/vz/… templates ou images? )

sol1: mixte (clickodrome/commandeq)

  • créer (clickodrome) une machine avec le bon réglage réseau /core , un disque (qui sera jeté)
  • qm importdisk 2500 /mnt/pve/backup-nfs/images/db10.qcow2 LMPA_10k
  • clickodrome: supprimer le disque vide / ajouter le «bon» disque
  • démarrer… it works! ( au reseau prêt à reconfigurer: mon test était en dchp

sol2: commandes

qm create 2502  --storage LMPA_10k --cores 2 --ostype other --net0 virtio,bridge=vmbr2,tag=3      # création VM
qm importdisk 2502 /mnt/pve/backup-nfs/images/debian-10-sys.qcow2 LMPA_10k                       # import du disque
qm set 2502 --scsihw virtio-scsi-pci --virtio0 LMPA_10k:vm-2502-disk-0                            # attache le disque
qm set 2502 --boot c --bootdisk virtio0                                                           # On boot sur ce disque
# si 2ième disque (data)
qm importdisk 2502 /mnt/pve/backup-nfs/images/debian-10-data.qcow2 LMPA_10k                       # import du disque
qm set 2502 --scsihw virtio-scsi-pci --virtio1 LMPA_10k:vm-2502-disk-1                            # attache le disque

export (vers KVM):

les fichiers VM sont «visibles» que lorsque les machines sont démarrées, par conséquent:

  • lvchange -ay LMPA_10k/vm-2500-disk-0 (# pour le faire «apparaître»)
  • dd if=/dev/LMPA_10k/vm-100-disk-0 of=/mnt/pve/backup-nfs/images/export_LMPA.raw bs=1M
  • scp export_LMPA.raw user@somewhere:

KVM (clickodrome de virt-manager): importer un disque avec image existante
-> it works!

creation VM via template Cloud initlien

cloud init ? quelques notes sur un premier jet

Gros projet utilisé sur nombreux projets cloud (openstack & cie); fonctionnalité « intégré » à Proxmox.
doc officielle: https://readthedocs.org/projects/cloudinit/downloads/pdf/latest/
intérêt? moultes configurations à la volée pendant les 3 phases : pré/install/post des VM

  • une machine debian mini buster
  • apt install cloud-init. cf les nombreux templates, 1er test au plus simple:

```

diff cloud.cfg cloud.cfg.ORG
>  - disable-ec2-metadata  
60a62,66
>  - fan
>  - puppet
>  - chef
>  - salt-minion
>  - mcollective
80c86
<   name: phi
---
>      name: debian
```
  • Rem(variable disable_root:0 ou 1): PermitRoot dans /etc/ssh/sshd_config)
  • ménage machine id (pour soucis de mac adress) :
    • cp /dev/null /etc/machine-id
    • rm /var/lib/dbus/machine-id
    • ln -s /etc/machine-id /var/lib/dbus/machine-id
    • apt clean
    • poweroff
  • qm clone 2000 2020 --full 1 --name testCI3 --storage LMPA_10k
  • qm set 2020 --net0 model=virtio,bridge=vmbr2,tag=3 ( ! ajuster votre bridge et tag réseau )
  • qm set 2020 --ipconfig0 ip=192.168.X.230/24,gw=192.168.X.1 ( important de changer: le modèle LMPA a une ip fixe !)
  • `qm set 2020 –ciuser biatos –cipassword azerty (facultatif, changer à la volée le passwd)
  • .. qm help set pour voir toutes les options (dns, clés ssh, onboot etc.)
  • la machine est clonée avec un disque (CDROM) «cloud Init» : c’est lui qui assure le transfère des paramètres à la VM + manifestement un apt update (j’ai pas fait exprès! ;-) à chaque démarrage. Il convient probablement de supprimer ce disque une fois la VM prise en main, et changer (facultatif) le boot order:

    • qm config 2020 ( repérer le disque/CDROM CloudInit, a priori «ide0», ainsi que le boot, a priori «cdn», i.e.: 1:hard disk 2: cdrom : network )
    • qm unlink 2020 --idlist 'ide0' (supprime le Logical Volume «vm-cloudinit-2020)
    • qm set 2020 --boot c (optionnel )
    • si problème réseau une fois VM démarrée : cf /etc/network.interfaces.d/50-cloud-init.cfg qui vient surchargé/écrasé la config de la VM template originelle

faire un template CloudiInitlien

tbd

manipulation disque (resize, partition)lien

il suffit de booter sur gparted qui est mis sur /mnt/pve/backup-nfs/template/iso/gparted-xxxxxx.iso

  • «insérer» le CD rom gparted-xxxxx.iso ( éditer le CDROM dans le menu Hardware de la VM)
  • corriger éventuellement le boot order ( menu Options de la VM )
  • démarrer la machine … faire les bidouilles avec gparted.
  • «retirer» le CD Rom et recorriger le boot order

En mode commande, partant du principe que les VMs «témoins» [dont le template Cloud Init (2000 = db10CI)] sont constitués que d’une partition système unique

  • qm resize 2007 scsi0 +3G (ajout 3Go)
  • lvchange -ay LMPA_10k/vm-2007-disk-0 ( a priori le LV d’une machine éteinte est inactif, l’activer pour manipuler le disque)
  • parted /dev/LMPA_10k/vm-2007-disk-0 resizepart 1 100% (usage de parted en mode non interactif)

Ajouter une swap de 1Go ?

  • qm resize 2007 scsi0 +1G (ajout 1Go, même manip que précédemment)
  • parted print ( pour récupérer le début de la nouvelle/deuxième partition. la syntaxe de la prochaine commande est mkpart start end ( 0% = debut du disk donc on scratch tout!… 100% Ok fin du disque) : )
  • parted /dev/LMPA_10k/vm-2009-disk-0 mkpart primary linux-swap 8594MB 100%

Ajouter une partition ou un disque dataApp ?

création from scratchlien

no comments ( suivre les clicks ! ), les seuls points clefs sont :

  • choisir le stockage sur bon service
  • choisir le bon bridge
  • les iso (si manquantes) sont à ajouter à /mnt/pve/backup-nfs/template/iso/
  • à la fin de l’installation, penser à supprimer le CDROM ( a minima détacher l’iso ) : cela pose des problèmes pour la suite (migrations, clonages) .
  • rq: parmi les iso, il y a gparted: permet ( en bootant la VMs avec gparted attaché ) de modifier facilement les partitions

Gestion des containers(LXC)lien

peu de temps passé dessus, mais:

  • rapide à mettre en œuvre
  • stockage pérenne ( un container = un disque ~ comme une VM ) … 1er pas moins compliqués que docker
  • usage mémoire apparemment nettement moindre qu’une VM équivalente (seuls quelques test simples ont été réalisé)

liste de container:lien

  • pveam available --section system (liste des containers possible )
  • pveam update (mise à jour liste)
  • pveam list local liste des containers possible localement

télécharger de nouvelles images (officielles?)

créationlien

pct create 2005 \
 local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz --hostname \ 
 container5 --storage LMPA_10k --cores 1 --ostype debian --password \
 superSecret --onboot 1 --searchdomain mon-domain --nameserver XX.XXX.XXX.XX \
 --nameserver XXX.XX.XXX.XX --ssh-public-keys /etc/pve/pub_keys/marion.pub --net0 \ 
  name=eth0,bridge=vmbr2,firewall=1,ip=192.168.X.X/24,gw=192.168.X.1,tag=3,type=veth

Rqs:

  • les templates n’ont pas PermitRoot yes dans leur /etc/ssh/sshd_config (d’où l’importance de passer les clefs publics de chacun…d’où la création du le répertoire partagé (cluster) /etc/pve/pub_keys.
  • en absence de clefs, il y a toujours la solution de se connecter en console (via interface Proxmox), ou encore pct enter 2005 pour y ouvrir un shell.

démarrer le container:

pct start 2005

s’y connecter:

me@pc$ ssh -i /path/cle-privee root@192.168.X.X

contrôle des containerslien

pct ACTION VMid (pct --help)
lxc-xxxx

mémoire et disquelien

  • mémoire ajustable en live (clickodrome + cmd free :-> c’est immédiat)
  • valeurs par défaut : 4 Go (disque) et 512Mo RAM.
  • augmenter la taille du disque (a la mano)
pveX# lvextend -L +1G /dev/LMPA_10k/vm-2005-disk-0   ( les 5 Go n'apparaissent pas dans proxmox )
pveX# resize2fs /dev/LMPA_10k/vm-2005-disk-0

Rq1: si le container a été éteint burusquemet, il y a des chances que ça râââle…suivre les commandes indiquées:

tune2fs -f -E clear_mmp /dev/LMPA_10k/vm-2005-disk-0  
e2fsck -f /dev/LMPA_10k/vm-2005-disk-0    
resize2fs /dev/LMPA_10k/vm-2005-disk-0  

Rq2: tout est parfaitement fonctionnel mais la taille disque n’est pas mis à jour dans le fichier de config Prxmox( corriger au besoin le fichier de conf du container /etc/pve/lxc/2005.conf)

service (exposer un service)lien

soucis louche (mais probablement lié à la nature «container»?) rencontré avec apache :

erreur:

  • failed at step namespace spawning /usr/sbin/apachectl permission denied
  • failed to set up mount namespacing: permission denied

pistes abordées

  • il faut que le container ait la propriété «nested»

solution:
PrivateTmp=false dans /lib/systemd/system/apache2.service (+ systemctl daemon-reload)

migration, clonagelien

migration :

  • pas de changement de stockage proposé ,
  • seul changement hote

clonage:

  • passage local:pvelvm -> LMPA_7k ok

migration locallmv:pve (pve3)-> local:pve(pve2) ok
(il y a bien création du lv cible puis copie puis suppression du lv source)
clonage localvm:pve -> LMPA_7k (ok) (idem creation lv cible déplacement & delete lv ource)

migration LMPA_7k (Shared) : pas de copie et migration
Note: à chaque fois il y a shutdown du ct ( migration live interdite avec les CT)

backup ?lien

TODO

installer lxc sur PC persolien

  • snap + lxd semble être une solution conviviale