<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tuning on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/tuning/</link><description>Recent content in Tuning on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Mon, 22 Aug 2022 06:30:00 +0200</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/tuning/index.xml" rel="self" type="application/rss+xml"/><item><title>Proxmox - Tips and tricks</title><link>https://blog.zwindler.fr/2022/10/22/proxmox-tips-tricks/</link><pubDate>Mon, 22 Aug 2022 06:30:00 +0200</pubDate><guid>https://blog.zwindler.fr/2022/10/22/proxmox-tips-tricks/</guid><description>&lt;img src="https://blog.zwindler.fr/2019/10/proxmox.webp" alt="Featured image of post Proxmox - Tips and tricks" /&gt;&lt;h2 id="ok-je-reparle-de-proxmox--"&gt;OK je reparle de Proxmox ;-)
&lt;/h2&gt;&lt;p&gt;Certains trolls velus (😘) m&amp;rsquo;ont reproché de trop parler de XenServer / XCP-ng / Xen Orchestra, ces derniers temps.&lt;/p&gt;
&lt;p&gt;Pour leur faire plaisir (car que je suis quelqu&amp;rsquo;un de sympa, en vrai), voici donc un article qui parle de tous les petits trucs que je trouve cool dans Proxmox VE et qui ne sont (je pense) pas forcément connus des débutants.&lt;/p&gt;
&lt;p&gt;Je ne parlerais donc pas des trucs de base comme le fait qu&amp;rsquo;on puisse piloter les upgrades depuis l&amp;rsquo;UI, que les backups sont intégrées (même s&amp;rsquo;il y a un backup server plus poussé aussi) ou le firewall depuis l&amp;rsquo;UI (que je n&amp;rsquo;ai pas utilisé en vrai), ou bien encore &lt;a class="link" href="https://blog.zwindler.fr/2018/05/29/signez-la-console-proxmox-ve-avec-lets-encrypt-cest-encore-plus-trivial/" target="_blank" rel="noopener"
&gt;la gestion des certificats Let&amp;rsquo;s Encrypt pour l&amp;rsquo;UI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/08/backups.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est parti !&lt;/p&gt;
&lt;h2 id="avoir-un-cluster-de-virtualisation-open-source"&gt;Avoir un cluster de virtualisation open source
&lt;/h2&gt;&lt;p&gt;Un truc très fort avec Proxmox VE est quand même que vous disposez d&amp;rsquo;un OS open source, clé en main, disposant en plus d&amp;rsquo;un mécanisme de clustering &amp;ldquo;prod ready&amp;rdquo;. Grand luxe !&lt;/p&gt;
&lt;p&gt;Tout est géré par un cluster &lt;code&gt;corosync&lt;/code&gt;. L&amp;rsquo;ajout des nodes se fait via l&amp;rsquo;interface graphique en quelques clics (ou via ligne de commande si vous êtes un foufou comme moi).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/08/proxmox_ve_6_create_cluster.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Normalement, cette fonctionnalité est quand même réservée à un usage dans un LAN dédié. Mais j&amp;rsquo;ai quand même abondamment tordu la fonctionnalité pour la faire marcher, au fil des ans, chez des hébergeurs grand public, voire au travers d&amp;rsquo;Internet, dans des réseaux NATé, etc&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2019/08/20/cluster-proxmox-ve-v6-cette-fois-ci/" target="_blank" rel="noopener"
&gt;Cluster Proxmox VE, v6 cette fois ci !&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2019/07/22/proxmox-en-5-min-ansible-tinc/" target="_blank" rel="noopener"
&gt;Un cluster Proxmox VE en 5 minutes avec Ansible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2019/10/11/un-cluster-proxmox-ve-avec-seulement-2-machines/" target="_blank" rel="noopener"
&gt;Un cluster Proxmox VE avec seulement 2 machines !&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="et-avec-un-pra-"&gt;Et avec un PRA !
&lt;/h2&gt;&lt;p&gt;Avec mon cluster Proxmox, j&amp;rsquo;ai aussi un plan de reprise d&amp;rsquo;activité (PRA). Les développeurs de Proxmox VE ont astucieusement tiré parti de la fonctionnalité de réplication asynchrone de ZFS pour périodiquement (par défaut toutes les 15 minutes) synchroniser des disques entre des machines distantes.&lt;/p&gt;
&lt;p&gt;Note: &lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=ZFS" target="_blank" rel="noopener"
&gt;ZFS, j&amp;rsquo;en ai aussi beaucoup parlé&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tout est prévu dans l&amp;rsquo;interface graphique, il n&amp;rsquo;y a rien à faire à part avoir un cluster Proxmox VE et du stockage ZFS, ça &amp;ldquo;juste marche&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/08/zfs-replication.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="les-containers-lxc"&gt;Les containers LXC
&lt;/h2&gt;&lt;p&gt;C&amp;rsquo;est littéralement LE TRUC que j&amp;rsquo;utilise le plus dans Proxmox VE. Je fais très peu de machines virtuelles KVM car je loue des machines très peu puissantes (et pas chères), pas capables de faire de la virtualisation (pas d&amp;rsquo;instructions VT-x sur les &lt;a class="link" href="https://ark.intel.com/content/www/fr/fr/ark/products/77977/intel-atom-processor-c2350-1m-cache-1-70-ghz.html" target="_blank" rel="noopener"
&gt;Atom C2350&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Même si j&amp;rsquo;utilise tous les jours des containers de type &amp;ldquo;Docker&amp;rdquo; au travail, ce n&amp;rsquo;est pas ce que je cherche quand je monte des petites machines sur mon infra perso.&lt;/p&gt;
&lt;p&gt;LXC est un bon compromis : j&amp;rsquo;ai le sentiment d&amp;rsquo;avoir une machine virtuelle (j&amp;rsquo;installe des OS, des packages, dépose mon application où je veux, &amp;hellip;) sans la lourdeur de la VM.&lt;/p&gt;
&lt;p&gt;Les temps de boot sont quasiment instantanés, l&amp;rsquo;overhead CPU, surtout sur mes machines faiblardes, est très léger. Mais le plus important reste l&amp;rsquo;empreinte mémoire ridicule. J&amp;rsquo;ai plusieurs containers hébergeant des serveurs webs qui tournent avec moins de 128 Mo de RAM. Impossible avec une machine virtuelle KVM.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/08/reverse.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Exemple avec un reverse proxy nginx en frontal de plusieurs petits sites. Le container consomme quelques Mo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En revanche, l&amp;rsquo;isolation est moins bonne (on partage un kernel donc forcément&amp;hellip;). En termes de sécurité c&amp;rsquo;est moins bien, et on arrive parfois à des petits soucis comme j&amp;rsquo;ai pu en parler dans l&amp;rsquo;article &lt;a class="link" href="https://blog.zwindler.fr/2021/10/04/jeedom-dans-un-container-lxc/" target="_blank" rel="noopener"
&gt;Jeedom dans un container LXC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je ferai (un jour) un article dédié aux containers LXC tellement je trouve ça cool.&lt;/p&gt;
&lt;h2 id="tuning-zfs"&gt;Tuning ZFS
&lt;/h2&gt;&lt;p&gt;La croyance populaire veut que ZFS nécessite beaucoup de RAM pour fonctionner. C&amp;rsquo;est faux (sauf si vous activez la déduplication).&lt;/p&gt;
&lt;p&gt;Dans la documentation officielle de Solaris (les inventeurs de ZFS), on parle de 1 Go de RAM (dont 768 Mo pour le système).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The minimum amount of memory needed to install a Solaris system is 768 MB. However, for good ZFS performance, use at least one GB or more of memory.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.oracle.com/cd/E18752_01/html/819-5461/gbgxg.html" target="_blank" rel="noopener"
&gt;https://docs.oracle.com/cd/E18752_01/html/819-5461/gbgxg.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sauf que des fois, ZFS est un peu trop gourmand, par défaut. C&amp;rsquo;est typiquement le cas sur mes Atom qui n&amp;rsquo;ont que 4 Go de RAM, sur lesquels ZFS croque 50% de la RAM pour son cache ARC.&lt;/p&gt;
&lt;p&gt;On tune ça avec une simple commande :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Restrict to 512MB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="m"&gt;536870912&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;sudo tee -a /sys/module/zfs/parameters/zfs_arc_max
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Restrict to 4GB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="m"&gt;4294967296&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;sudo tee -a /sys/module/zfs/parameters/zfs_arc_max
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Plus de tips sur le tuning de ZFS sont disponibles sur ce post de &lt;a class="link" href="https://www.admin-magazine.com/mobile/HPC/Articles/Tuning-ZFS-for-Speed-on-Linux" target="_blank" rel="noopener"
&gt;admin magazine&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="monter-des-disques-lxcqemu-avec-zfs"&gt;Monter des disques LXC/QEMU avec ZFS
&lt;/h2&gt;&lt;p&gt;Un truc un peu déstabilisant quand on passe sur ZFS comme gestionnaire de stockage pour son cluster Proxmox VE est qu&amp;rsquo;on ne voit plus les disques comme des fichiers (.qcow2) comme avant.&lt;/p&gt;
&lt;p&gt;Rappelez-vous, ZFS est aussi un gestionnaire de stockage, pas juste un filesystem.&lt;/p&gt;
&lt;p&gt;Pour accéder à vos disques de machines virtuelles, il faut aller chercher dans les fichiers spéciaux dans /dev. Par exemple pour la VM avec l&amp;rsquo;ID 100 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -l /dev/zvol/rpool/vm-100*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lrwxrwxrwx &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;10&lt;/span&gt; Jul &lt;span class="m"&gt;23&lt;/span&gt; 02:00 /dev/zvol/rpool/vm-100-disk-0 -&amp;gt; ../../zd16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lrwxrwxrwx &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;23&lt;/span&gt; 02:00 /dev/zvol/rpool/vm-100-disk-0-part1 -&amp;gt; ../../zd16p1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lrwxrwxrwx &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;23&lt;/span&gt; 02:00 /dev/zvol/rpool/vm-100-disk-0-part2 -&amp;gt; ../../zd16p2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lrwxrwxrwx &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;23&lt;/span&gt; 02:00 /dev/zvol/rpool/vm-100-disk-0-part5 -&amp;gt; ../../zd16p5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: on peut d&amp;rsquo;ailleurs directement monter les partitions dans notre hyperviseur avec un bête &lt;code&gt;mount&lt;/code&gt;. Avouez que c&amp;rsquo;est plus pratique à monter qu&amp;rsquo;un disque qcow2 nan ?&lt;/p&gt;
&lt;p&gt;Pour accéder à vos disques de containers LXC, c&amp;rsquo;est encore plus simple, ils sont à la racine de votre pool ZFS. Par exemple pour le container LXC avec l&amp;rsquo;ID 201 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /rpool/subvol-201-disk-0/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin dev home lib64 media opt root sbin srv tmp var
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;boot etc lib lost+found mnt proc run selinux sys usr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="télécharger-les-isos-directement-depuis-lui"&gt;Télécharger les ISOs directement depuis l&amp;rsquo;UI
&lt;/h2&gt;&lt;p&gt;Là, c&amp;rsquo;est vraiment du &amp;ldquo;nice to have&amp;rdquo; mais j&amp;rsquo;aime bien ce genre de fonctionnalités pour aider l&amp;rsquo;admin: vous pouvez directement télécharger vos images ISO pour installer vos machines virtuelles directement depuis la console Web.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/08/download-iso.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Et de la même manière, vous pouvez aussi télécharger les images de containers LXC depuis une URL ou depuis la base d&amp;rsquo;images déjà accessibles depuis Proxmox VE (la section &amp;ldquo;système&amp;rdquo; me semble être &lt;a class="link" href="http://uk.lxd.images.canonical.com//meta/1.0/index-system" target="_blank" rel="noopener"
&gt;une sous-sélection des images officielles disponibles sur le site de LXD&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/08/ct-download.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="optimisation-de-perf-pour-les-vms"&gt;Optimisation de perf pour les VMs
&lt;/h2&gt;&lt;p&gt;J&amp;rsquo;avais fait un article pour parler des optimisations que j&amp;rsquo;avais pu faire pour les machines virtuelles sous Proxmox VE. Le titre de l&amp;rsquo;article cite pfsense mais c&amp;rsquo;est applicable à tous les OS en réalité.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://blog.zwindler.fr/2020/07/06/optimisation-de-pfsense-dans-proxmox-ve/" target="_blank" rel="noopener"
&gt;Optimisation de PFsense dans Proxmox VE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;optim consistant à décocher &amp;ldquo;Use tablet for pointer&amp;rdquo; est vraiment hyper utile et marche très souvent si vous remarquez un usage CPU idle anormal sur vos VMs.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/05/ubuntu_cpu_tablet.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="automatisation"&gt;Automatisation
&lt;/h2&gt;&lt;p&gt;Si vous êtes fans d&amp;rsquo;infrastructure as code (as you should), sachez qu&amp;rsquo;il existe :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ansible.com/ansible/latest/collections/community/general/proxmox_module.html" target="_blank" rel="noopener"
&gt;un module Ansible (community) pour gérer vos instances et créer des VMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://registry.terraform.io/providers/Telmate/proxmox/latest/docs" target="_blank" rel="noopener"
&gt;des providers terraform pour gérer les VMs et les containers LXC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J&amp;rsquo;utilise en prod les modules Ansible, ce qui me permet de générer à la fois une VM puis d&amp;rsquo;installer des choses dedans avec mes playbooks. Hyper utile.&lt;/p&gt;
&lt;p&gt;Je ferai probablement un article pour le provider terraform car il me fait de l&amp;rsquo;oeil (mais du coup, dur de chaîner l&amp;rsquo;install des logiciels dans la VM après instanciation).&lt;/p&gt;
&lt;h2 id="monitoring"&gt;Monitoring
&lt;/h2&gt;&lt;p&gt;Enfin, si vous avez déjà une infra Prometheus, sachez qu&amp;rsquo;il existe plusieurs exporters pour avoir de jolis graphes de vos Proxmox. Je les avais testés à l&amp;rsquo;occasion de cet article - &lt;a class="link" href="https://blog.zwindler.fr/2020/01/06/proxmox-ve-prometheus/" target="_blank" rel="noopener"
&gt;Proxmox VE + Prometheus = &amp;lt;3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sachez que vous pouvez aussi directement brancher depuis la console votre cluster sur des TSDB de type InfluxDB ou Graphite (pas encore testé mais pourquoi pas :D).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/08/influx.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="fin-de-cet-article"&gt;Fin de cet article
&lt;/h2&gt;&lt;p&gt;A plus de 9000 signes, je pense qu&amp;rsquo;il faut que j&amp;rsquo;arrête là pour ce premier article sur les trucs que je trouve cool et les astuces que j&amp;rsquo;utilise souvent sur Proxmox VE.&lt;/p&gt;
&lt;p&gt;Cependant, je ne m&amp;rsquo;interdis pas d&amp;rsquo;en écrire un autre plus tard, si jamais je retrouve assez de choses à dire.&lt;/p&gt;
&lt;p&gt;En connaissez-vous d&amp;rsquo;autres que vous voudriez partager ? Est-ce que vous avez envie que je creuse un point en particulier ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;InfluxDB comme metrics server ?&lt;/li&gt;
&lt;li&gt;Le provider Terraform ?&lt;/li&gt;
&lt;li&gt;LXC ?&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>