Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


it:linux-selfhosting:proxmox

Proxmox

Config Bridge

C'est dans le cas ou le proxmox se situe dans un LAN avec un DHCP (Derrière une box, par exemple)

/etc/network/interfaces
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
 
source /etc/network/interfaces.d/*
 
auto lo
iface lo inet loopback
 
auto enp1s0
iface enp1s0 inet dhcp
# This is an autoconfigured IPv6 interface
 
auto vmbr0
iface vmbr0 inet static
        address 192.168.0.111/24
        gateway 192.168.0.254
        bridge-ports enp1s0
        bridge-stp off
        bridge-fd 0
  • enp1s0 : Interface physique
  • vmbr0 : Bridge linux lié a l'interface phyisque : c'est lui qui prend l'IP.

Les VM & Containers, eux, utiliseront les paramètres, passerelle, et DHCP du LAN

Bug : Config persistante

Parfois, le réseau ne monte pas assez vite ou n'est pas bien pris en compte lors du boot des containers/VM. Il faut relancer la couche réseau.

/usr/local/scripts/network.sh
systemctl restart networking.service

et ensuite

crontab
@reboot /usr/local/scripts/network.sh

Bug : Problème ARP ?

Il arrive que des CT, bien que démarrés, ne soient pas vues sur le réseau.
Il semble que c'est à cause du cache ARP car en changeant leur adresse MAC, ça re-marche par magie.

La solution temporaire est donc de vider le cache ARP sur l'hyperviseur, en rajoutant la commande qui va bien à network.sh, vu précédemment :

/usr/sbin/ip -s -s neigh flush all

Retirer le message "No valid subscription"

  • On édite : /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
  • On cherche le code suivant :
    Ext.Msg.show({
      title: gettext('No valid subscription'),
  • On remplace Ext.Msg.show par void :
    void({ //Ext.Msg.show({
      title: gettext('No valid subscription'),
  • On cherche aussi :
    Ext.String.format('You do not have a valid subscription for this server.
  • On met un return false à la place et on commente le reste :
    return false; // Ext.String.format('You do not have a valid subscription for this server.
  • On redémarre le service :
    systemctl restart pveproxy.service

Téléchargement de templates et modèles

Télécharger des ISO de systèmes pour les VM

Ca n'existe pas, il faut les uploader ou les télécharger directement dans /template/iso/ du <stockage> concerné :

cd <path-to-stockage>/template/iso/
wget https://ubuntu.daupheus.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso https://chuangtzu.ftp.acc.umu.se/debian-cd/current/amd64/iso-dvd/debian-10.7.0-amd64-DVD-1.iso

* path-to-stockage = /var/lib/vz/ si on est sur le disque local.

Télécharger des templates de containers

  • On met à jour la liste et on liste les choix :
    pveam update
    pveam available
  • On télécharge ce qui nous botte :
    pveam download <Stockage> debian-10-turnkey-core_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-dokuwiki_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-drupal9_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-etherpad_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-gitea_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-gitlab_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-matomo_16.0-1_amd64.tar.gz
    pveam download <Stockage> debian-10-turnkey-nextcloud_16.0-1_amd64.tar.gz

Monter un /dev/* sur container

C'est utile pour :

  • faire jouer du son à la machine hôte
  • utiliser un périphérique USB
  • etc…

Dans le fichier de conf du container (dans /etc/pve/lxc/<id>.conf) :

lxc.cgroup2.devices.allow: c 116:* rwm
lxc.mount.entry: /dev/snd dev/snd none bind,create=dir

Ca vient d'où, le 116 ?
Ca vient du cgroup du device. Pour le savoir et adapter, il faut faire ls -al /dev/snd

Si le device est un répertoire, il faut préciser create=dir, sinon c'est create=file

On peut aussi rajouter l'attribut optional si le device n'est pas forcément présent en permanence (Exemple : bind,optional,create=dir)

Bug : Config persistante

Parfois, les points de montage changent ou perdent leurs permissions sur l'hôte au reboot. Il faut alors faire un script pour les réparer :

/usr/local/scripts/dev.sh
chmod a+rw /dev/snd/*    # carte son
chmod a+rw /dev/ttyUSB0  # Rfx433

et ensuite

crontab
@reboot /usr/local/scripts/dev.sh

RAM utilisée par ZFS

ZFS utilise par défaut 50% de la mémoire disponible pour l'ARC (Adaptive Replacement Cache).

Dans l'interface Proxmox, la mémoire totale utilisée prend en compte cette valeur. Il faut donc considérer que la RAM réellement utilisée hors-ZFS est cette valeur moins la moitié de la RAM totale.

L'allocation d'une quantité suffisante de mémoire pour l'ARC est cruciale pour les performances d'E/S. Il convient donc de la réduire avec prudence.

En règle générale, allouez au moins 2 Go de Base + 1 Go par To de Stockage.

Par exemple, si vous avez un pool avec 8 TiB d'espace de stockage disponible, vous devez utiliser 10 GiB de mémoire pour l'ARC.

Limiter l'usage de l'ARC

Instantanément, jusqu'au prochain reboot de l'hôte

echo "$[10 * 1024*1024*1024]" >/sys/module/zfs/parameters/zfs_arc_max

le 10 correspond au nombre de Go à allouer au max.

Définitivement (supporte les reboots)

Créer ou ajouter cette ligne à /etc/modprobe.d/zfs.conf:

options zfs zfs_arc_max=8589934592

(Ici le resultat est pour 8Go, soit 8*1024*1024*1024)

Si la valeur de zfs_arc_max souhaitée est inférieure ou égale à zfs_arc_min (qui correspond par défaut à 1/32 de la mémoire système, meme si la valeur affichée est de 0), zfs_arc_max sera ignoré.

Vous devez rebooter pour activer ces changements

Mini astuces diverses

Où sont les confs de proxmox ?

  • Dans /etc/pve
  • Les conf des containers dans /etc/pve/lxc

Voici les ports utilisés par Proxmox

  • Web interface: 8006
  • VNC Web console: 5900-5999
  • SPICE proxy: 3128
  • ssh : 22
  • rpcbind: 111
  • corosync multicast (pour un cluster) : 5404, 5405 UDP

Changer la fréquence de la réplication

systemctl edit --full pvesr.timer

Passer de minutely à monthly si le noeud utilisé n'est pas destiné à être répliqué.

Donner les droits au ping a un container avec un user

sudo setcap cap_net_raw+p /bin/ping

Faire un point de montage local dans un container

pct set <ctid> -mp<mpid> <hyperv-path>,mp=<ct-path>
  • <ctid> : ID (numérique) du container
  • <mpid> : ID du nouveau point de montage (en général, mp0 c'est le disque root, donc c'est mp1 ou mp2, etc…)
  • <hyperv-path> : Chemin local dans l'hyperviseur (sans slash final)
  • <ct-path> : Point de montage dans le container (sans slash final & ne doit pas déjà exister dans l'arbo du container)

Réduire la taille d'un disque de CT

  • Stop puis Backuper le CT
  • Détruire la CT
  • Restaurer comme ceci :
pct restore <id> /path/to/bakcup.tar.lzo --rootfs <taille disque en Go>

pct restore 100 /path/to/backup.tar.lzo –rootfs 10

HTOP ne donne plus la RAM utilisée : 16.0Z à la place

Voir ici : https://github.com/htop-dev/htop/issues/863 Il faut empêcher les containers non-privilégiés d'aller lire une valeur qu'ils n'ont pas le droit de lire. En enlevant cette permission, htop utilisera une autre technique, qui marchera :

chmod o-r /proc/spl/kstat/zfs/ar

Ca ne marche pas à 100%

Linkographie

it/linux-selfhosting/proxmox.txt · Dernière modification : 23 Jun 2023 :: 09:36 de CgX