<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Xen on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/xen/</link><description>Recent content in Xen on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Mon, 10 Oct 2022 06:00:00 +0200</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/xen/index.xml" rel="self" type="application/rss+xml"/><item><title>Premiers pas avec XCP NG</title><link>https://blog.zwindler.fr/2022/07/24/premiers-pas-xcp-ng/</link><pubDate>Mon, 10 Oct 2022 06:00:00 +0200</pubDate><guid>https://blog.zwindler.fr/2022/07/24/premiers-pas-xcp-ng/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/07/pve-to-xcpng.webp" alt="Featured image of post Premiers pas avec XCP NG" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Si vous suivez ce blog, vous savez peut-être qu&amp;rsquo;après des années de Proxmox VE, j&amp;rsquo;ai commencé à regarder pour voir ce qui se faisait d&amp;rsquo;autre sur le marché des hyperviseurs open source.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai rencontré les équipes de &lt;a class="link" href="https://vates.fr/" target="_blank" rel="noopener"
&gt;Vates&lt;/a&gt; et ils m&amp;rsquo;ont donné l&amp;rsquo;envie de tester le couple XCP-NG / Xen Orchestra. Ca et aussi le fait que Cécile et Nidouille en ont dit beaucoup de bien.&lt;/p&gt;
&lt;p&gt;En particulier, &lt;a class="link" href="https://github.com/Nidouille/benchmarks" target="_blank" rel="noopener"
&gt;Nidouille a fait plusieurs séries de benchs&lt;/a&gt; que je vous conseille et qui montreny de très belles perfs de XCP-ng.&lt;/p&gt;
&lt;p&gt;Vous pouvez retrouver les deux articles que j&amp;rsquo;avais écrits à ce sujet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2022/07/24/migrer-une-vm-de-proxmoxve-vers-xcp-ng/" target="_blank" rel="noopener"
&gt;Migrer une VM de Proxmox VE vers XCP NG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2022/08/08/migrer-une-vm-de-proxmoxve-vers-xcp-ng/" target="_blank" rel="noopener"
&gt;Mieux migrer ses VM de Proxmox VE vers XCP NG (part 2)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans cet article, je vais vraiment me limiter aux tout premiers pas. On ira plus loin dans un article ultérieur, notamment pour passer outre les quelques limitations qu&amp;rsquo;on va rencontrer.&lt;/p&gt;
&lt;h2 id="cest-quoi-xcp-ng--xen-orchestra-"&gt;C&amp;rsquo;est quoi XCP-NG / Xen Orchestra ?
&lt;/h2&gt;&lt;p&gt;XCP-NG est une distribution clé en main de virtualisation &lt;a class="link" href="https://github.com/xcp-ng/xcp" target="_blank" rel="noopener"
&gt;open source&lt;/a&gt;, basée sur XenServer (lui-même basé sur Xen). Historiquement Xen était surtout connu en tant que paravirtualiseur (un Dom0 qui partage le même kernel avec les DomU) mais depuis bien longtemps, Xen a fait un gros virage et fourni de la virtualisation complète comme les autres.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;XCP-ng is a virtualization platform based on Xen Source and Citrix® Hypervisor (formerly XenServer). XCP-ng stands for Xen Cloud Platform - New Generation and is a tribute to the old Open Source project XCP, which was abandoned when XenServer was open-sourced in 2013.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Xen Orchestra est une webUI &lt;a class="link" href="https://github.com/vatesfr/xen-orchestra" target="_blank" rel="noopener"
&gt;open source&lt;/a&gt;, permettant d&amp;rsquo;ajouter des fonctionnalités supplémentaires au-dessus de clusters XenServer et/ou XCP-NG, telles que la gestion de flottes de serveurs, les statistiques, la sauvegarde /restauration de machines&amp;hellip;&lt;/p&gt;
&lt;p&gt;Si je voulais donner une comparaison simple avec l&amp;rsquo;écosystème VMware, je dirais que XCP-ng est l&amp;rsquo;ESXi et que Xen Orchestra est le vCenter.&lt;/p&gt;
&lt;h2 id="choix-du-lab"&gt;Choix du lab
&lt;/h2&gt;&lt;p&gt;A la base, je voulais installer XCP-ng sur des machines peu chères que j&amp;rsquo;aurais pu louer un mois ou deux. Cependant, contrairement à Proxmox VE qu&amp;rsquo;il est possible d&amp;rsquo;installer au-dessus d&amp;rsquo;un Debian 11, il n&amp;rsquo;est pas simple d&amp;rsquo;installer l&amp;rsquo;hyperviseur d&amp;rsquo;XCP-ng au-dessus d&amp;rsquo;une machine existante.&lt;/p&gt;
&lt;p&gt;De plus, peu de providers de machines baremetal disposent de templates pour XCP-ng à l&amp;rsquo;heure actuelle (à priori Ikoula). Rien chez OVH, Scaleway, oneProvider&amp;hellip;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai donc changé mon fusil d&amp;rsquo;épaule et investi pour mon lab dans deux petits Dell micro d&amp;rsquo;occasion, un 7040 (merci Bosco) et un 3050.&lt;/p&gt;
&lt;p&gt;Ce sont deux machines très compactes, qui ne consomment rien (~10w chaque) et qui sont quand même suffisamment puissantes pour pouvoir tester des trucs (i5-6500T + 8 Go de DDR4, extensible).&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;envisage d&amp;rsquo;ailleurs de me séparer &lt;a class="link" href="https://blog.zwindler.fr/2017/04/04/installation-dun-serveur-compact-a-la-maison/" target="_blank" rel="noopener"
&gt;de mon &amp;ldquo;gros&amp;rdquo; serveur E3-1220v5 et de son imposant node 304 de Fractal design à terme&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="installation-du-lab"&gt;Installation du lab
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;installation est relativement sans surprise. Sur le site de XCP-ng, on a un &lt;a class="link" href="https://mirrors.xcp-ng.org/isos/8.2/xcp-ng-8.2.1.iso?https=1" target="_blank" rel="noopener"
&gt;ISO&lt;/a&gt; et on le copie sur une clé USB&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;wget https://mirrors.xcp-ng.org/isos/8.2/xcp-ng-8.2.1.iso?https&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;xcp-ng-8.2.1.iso &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sdX &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;8M &lt;span class="nv"&gt;oflag&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;direct
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On branche la clé sur le serveur à installer et on boot. Le processus d&amp;rsquo;installation est un processus classique avec une TUI bleue comme vous en avez surement vu des milliers dans votre vie de vieux sysadmins. C&amp;rsquo;est un peu oldschool mais ça fonctionne.&lt;/p&gt;
&lt;p&gt;Note: il est également possible d&amp;rsquo;automatiser l&amp;rsquo;install en PXE/iPXE sur des providers comme Equinix Metal (mais c&amp;rsquo;est hors budget pour moi).&lt;/p&gt;
&lt;p&gt;Une fois l&amp;rsquo;installation terminée, on reboot et on se retrouve avec une interface que j&amp;rsquo;ai là aussi vu des dizaines de fois : le menu de XenServer :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/pve-to-xcpng.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="dans-le-ventre"&gt;Dans le ventre
&lt;/h2&gt;&lt;p&gt;De la bouche des devs de XCP-ng, on ne devrait pas avoir à se connecter sur les hyperviseurs. J&amp;rsquo;ai quand même été voir ce qu&amp;rsquo;ils avaient dans le ventre :-p.&lt;/p&gt;
&lt;p&gt;Une fois connecté, on se rend vite compte qu&amp;rsquo;il s&amp;rsquo;agit d&amp;rsquo;une base RHEL, Centos pour être plus précis. Ca n&amp;rsquo;est pas vraiment une grande surprise, sachant que c&amp;rsquo;est la même base que XenServer que j&amp;rsquo;avais testé il y a 12 ans (&lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=xenserver" target="_blank" rel="noopener"
&gt;j&amp;rsquo;en avais parlé ici&lt;/a&gt;)&amp;hellip;&lt;/p&gt;
&lt;p&gt;Première surprise, l&amp;rsquo;OS basé sur CentOS&amp;hellip; en version 7&amp;hellip; 😬&lt;/p&gt;
&lt;p&gt;Ca commence à dater un peu, la sortie du premier CentOS 7 date de 2014, et la toute dernière version mineure (7.9) est sortie en 2020.&lt;/p&gt;
&lt;p&gt;Surtout quand on connaît les dramas qui ont eu lieu autour de centOS / RHEL, j&amp;rsquo;aurais pas choisi cette OS.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On 8 December 2020, the CentOS Project announced that the distribution would be discontinued at the end of 2021 in order to focus on CentOS Stream. The community&amp;rsquo;s response to this announcement was overwhelmingly negative.
&lt;a class="link" href="https://en.wikipedia.org/wiki/CentOS" target="_blank" rel="noopener"
&gt;https://en.wikipedia.org/wiki/CentOS&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a class="link" href="https://xcp-ng.org/blog/2020/12/17/centos-and-xcpng-future/" target="_blank" rel="noopener"
&gt;Vates justifie ce choix technique dans ce billet de blog&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nous n&amp;rsquo;utilisons CentOS que pour les paquets &amp;ldquo;user land&amp;rdquo;. Xen et le noyau Linux sont des builds custom avec certains patches. Concernant le drama CentOS nous sommes peu/pas affecté justement pour ces raisons&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Niveau kernel, c&amp;rsquo;est pas fou non plus.&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;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Linux xxx.zwindler.fr 4.19.0+1 &lt;span class="c1"&gt;#1 SMP Thu Jan 13 12:55:45 CET 2022 x86_64 x86_64 x86_64 GNU/Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le 4.19 est le dernier LTS de la branche 4, avec certes un support jusqu&amp;rsquo;en 2024 mais on se prive quand même de pas mal d&amp;rsquo;améliorations de perfs de la branche 5, notamment pour le matoss récent&amp;hellip; Dommage.&lt;/p&gt;
&lt;p&gt;Enfin bon c&amp;rsquo;est toujours mieux que le kernel shippé avec CentOS 7 (3.10, LOL), mais à côté de ça, Proxmox VE 7.2 tourne en Bullseye avec un kernel custom en 5.15.&lt;/p&gt;
&lt;h2 id="xen-orchestra"&gt;Xen Orchestra
&lt;/h2&gt;&lt;p&gt;C&amp;rsquo;est là où ça devient un peu moins naturel. Si vous allez sur le site pour installer Xen Orchestra &lt;a class="link" href="https://xen-orchestra.com/#!/xoa" target="_blank" rel="noopener"
&gt;xen-orchestra.com/#!/xoa&lt;/a&gt; (que je vais abrévier XOA), on va vous demander de rentrer une IP, un login (root) et un mot de passe.&lt;/p&gt;
&lt;p&gt;Eeeeeuh, what?&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/xo_install.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Heureusement, la petite mention juste en dessous nous explique que tout sera fait en local et qu&amp;rsquo;il n&amp;rsquo;y a rien qui partira chez Vates 😏. En réalité, la page se connecte directement à votre host et déploie une VM appliance contenant Xen Orchestra prêt à l&amp;rsquo;emploi.&lt;/p&gt;
&lt;p&gt;Bon&amp;hellip; j&amp;rsquo;ai vérifié les trames envoyées sans rentrer mon vrai mot de passe et ça a l&amp;rsquo;air safe&amp;hellip; Mais j&amp;rsquo;ai quand même préféré &lt;a class="link" href="https://xen-orchestra.com/docs/xoa.html#alternative-install" target="_blank" rel="noopener"
&gt;déployer la VM XOA via un script ou l&amp;rsquo;import d&amp;rsquo;un XVA 😏&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/xoa_script.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Note: 8.8.8.8 en DNS par défaut&amp;hellip; bof bof.&lt;/p&gt;
&lt;p&gt;A l&amp;rsquo;issue de l&amp;rsquo;opération, vous avez donc déployé sur un de vos hosts XCP-ng une appliance XOA qui va vous permettre de piloter votre cluster.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Note: XOA est une appliance Debian 9 😬😬😬&lt;/del&gt; Après vérification, je ne sais pas pourquoi j&amp;rsquo;avais écris ça dans mes notes. C&amp;rsquo;est du Debian 11 donc RAS.&lt;/p&gt;
&lt;h2 id="premiers-pas-dans-xoa"&gt;Premiers pas dans XOA
&lt;/h2&gt;&lt;p&gt;Voilà à quoi ressemble le menu principal une fois loggué. On arrive sur une page avec la liste de nos VMs :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/xoa_home.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Un peu perturbant, par défaut un filtre est appliqué et n&amp;rsquo;affiche QUE les VMs allumées. Personnellement j&amp;rsquo;aurais préféré voir aussi celles qui ne le sont pas et je le désactive tout le temps.&lt;/p&gt;
&lt;p&gt;Niveau UI, le style tranche avec celui de Proxmox VE. Certains reprochent à XOA d&amp;rsquo;avoir un style &amp;ldquo;UI playskool&amp;rdquo; et je comprends un peu où ils veulent en venir&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/xoa_ui.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Les tailles des polices sont différentes d&amp;rsquo;un menu à l&amp;rsquo;autre, sans réelle cohérence, les boutons sont colorés, ya des tableaux jamais pareil d&amp;rsquo;un menu à l&amp;rsquo;autre &amp;hellip; C&amp;rsquo;est très déstabilisant de premier abord et donne une impression pas très &amp;ldquo;pro&amp;rdquo;, à l&amp;rsquo;opposé des capacités de l&amp;rsquo;outil.&lt;/p&gt;
&lt;p&gt;Heureusement, une version plus léchée devrait faire son arrivée dans les mois qui viennent (cf &lt;a class="link" href="https://xen-orchestra.com/blog/ux-ui-design-for-xo-and-xolite/" target="_blank" rel="noopener"
&gt;le blog de XOA&lt;/a&gt;). J&amp;rsquo;ai vraiment hâte de voir ce que ça donne car ça fait beaucoup plus sérieux sur les captures.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/XO-Blog---UX-UI-Design-for-XO-and-XOLite.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="version-gratuite-limitée-"&gt;Version gratuite limitée ?
&lt;/h2&gt;&lt;p&gt;Un autre point déstabilisant de Xen Orchestra est que quand on navigue dans les menus, une petite moitié des menus et des fonctionnalités sont réservés à la version payante de l&amp;rsquo;outil. Certains menus ne manquent pas forcément pour un démarrage. Mais d&amp;rsquo;autres, c&amp;rsquo;est carrément problématique.&lt;/p&gt;
&lt;p&gt;Typiquement, l&amp;rsquo;UI pour mettre à jour les serveurs n&amp;rsquo;est pas accessible sans licence. On a un panneau rouge pour nous informer qu&amp;rsquo;un serveur doit être MAJ, mais on ne peut pas le faire&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/xcpng_upgrade.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai failli arrêter mon test, la première fois que j&amp;rsquo;ai vu ça&amp;hellip; Un hyperviseur que je ne peux pas mettre à jour via l&amp;rsquo;UI, c&amp;rsquo;est no-go.&lt;/p&gt;
&lt;p&gt;Je trouve ce point hyper frustrant, car en réalité on peut contourner cette limitation, puisque l&amp;rsquo;outil est entièrement open source. C&amp;rsquo;est même volontaire et assumé de la part des devs de XOA/XCP-ng (lien cassé, Nicolas n&amp;rsquo;est plus sur Twitter) : il faut &amp;ldquo;juste&amp;rdquo; le builder soit même.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/10/xoa_limitations.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Sauf qu&amp;rsquo;en attendant, beaucoup d&amp;rsquo;admins qui auront rapidement testé l&amp;rsquo;outil auront eu l&amp;rsquo;impression d&amp;rsquo;un freeware hyper bridé alors que ce n&amp;rsquo;est pas vraiment le cas. Je trouve qu&amp;rsquo;il y a un vrai manque au niveau communication et de clarté de ce côté.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Voilà pour ces premières impressions avec XCP-NG. Je m&amp;rsquo;arrête ici alors que je n&amp;rsquo;ai fait une présentation rapide de mon lab et des premiers menus, car on dépasse déjà les 11000 signes.&lt;/p&gt;
&lt;p&gt;Globalement, l&amp;rsquo;UI/UX a vraiment besoin d&amp;rsquo;être retravaillée et ça tombe bien que Vates soit en train de travailler là-dessus car l&amp;rsquo;impression que donne l&amp;rsquo;outil n&amp;rsquo;est pas en phase avec ses capacités.&lt;/p&gt;
&lt;p&gt;Au-delà de l&amp;rsquo;aspect visuel, les fonctionnalités semblent présentes, mais sont cachées par la mise en avant du support pro. Pour des gens comme moi qui cherchent une solution de lab perso ou de gens qui ne chercheraient pas à comprendre quelles sont les alternatives à la version payante, ça peut être repoussant.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Dernier point, certains choix techniques me paraissent très bizarres (CentOS 7, Debian 9) et il faudra que j&amp;rsquo;en reparle avec l&amp;rsquo;équipe de Vates&amp;hellip;&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;Dans les prochains articles, je m&amp;rsquo;attaquerai à la partie utilisation (par exemple les sauvegardes ou la réplication, une création de VM puis migration à chaud) et probablement aussi au test de XOA non bridé.&lt;/p&gt;
&lt;p&gt;Dites-moi ce qui vous intéresse en premier, histoire que je mette l&amp;rsquo;accent là-dessus tout de suite&lt;/p&gt;
&lt;p&gt;En attendant, have fun !&lt;/p&gt;
&lt;h2 id="bonus"&gt;Bonus
&lt;/h2&gt;&lt;p&gt;Pour automatiser les mises à jour, en attendant d&amp;rsquo;avoir débridé XOA, j&amp;rsquo;ai ajouté l&amp;rsquo;utilitaire &lt;code&gt;yum-cron&lt;/code&gt;&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;yum -y install yum-cron
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start yum-cron systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; yum-cron
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /etc/yum/ vim yum-cron.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /var/log/ cat cron &lt;span class="p"&gt;|&lt;/span&gt; grep yum-daily
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="sources"&gt;Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://xcp-ng.org/" target="_blank" rel="noopener"
&gt;Site de XCP-ng&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://xen-orchestra.com" target="_blank" rel="noopener"
&gt;Site de Xen Orchestra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/Nidouille/benchmarks" target="_blank" rel="noopener"
&gt;Benchs de Nidouille&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Mieux migrer ses VM de Proxmox VE vers XCP NG (part 2)</title><link>https://blog.zwindler.fr/2022/08/08/migrer-une-vm-de-proxmoxve-vers-xcp-ng/</link><pubDate>Mon, 08 Aug 2022 06:00:00 +0200</pubDate><guid>https://blog.zwindler.fr/2022/08/08/migrer-une-vm-de-proxmoxve-vers-xcp-ng/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/07/pve-to-xcpng.webp" alt="Featured image of post Mieux migrer ses VM de Proxmox VE vers XCP NG (part 2)" /&gt;&lt;h2 id="résumé-des-épisodes-précédents"&gt;Résumé des épisodes précédents
&lt;/h2&gt;&lt;p&gt;Dans l&amp;rsquo;article d&amp;rsquo;il y a 2 semaines (&lt;a class="link" href="https://blog.zwindler.fr/2022/07/24/migrer-une-vm-de-proxmoxve-vers-xcp-ng" &gt;Migrer une VM de Proxmox VE vers XCP NG&lt;/a&gt;), j&amp;rsquo;ai introduit très brièvement de XCP-NG (un OS clé en main pour faire de la virtualisation, sur une base de Xen / XenServer) et déroulé un tuto pour récupérer une VM sur Proxmox VE et l&amp;rsquo;importer dans XCP-NG.&lt;/p&gt;
&lt;p&gt;Pour faire court, les étapes étaient les suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Récupération du disque virtuel sur Proxmox VE&lt;/li&gt;
&lt;li&gt;Transformer le disque virtuel en VHD&lt;/li&gt;
&lt;li&gt;Le transférer sur le serveur XCP-NG&lt;/li&gt;
&lt;li&gt;Créer un disque dans XenOrchestra (l&amp;rsquo;UI de XCP-NG, pour faire simple)&lt;/li&gt;
&lt;li&gt;Importer le contenu du VHD dans le disque vide qu&amp;rsquo;on a créé dans l&amp;rsquo;UI&lt;/li&gt;
&lt;li&gt;Créer une VM dans l&amp;rsquo;UI et lui affecter le disque&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="faire-mieux"&gt;Faire mieux
&lt;/h2&gt;&lt;p&gt;Dans le cadre d&amp;rsquo;un PoC avec une poignée de VMs, ça me parait totalement acceptable comme méthodologie (même si c&amp;rsquo;est un peu fastidieux) mais dans le cadre d&amp;rsquo;une migration, c&amp;rsquo;est difficilement scalable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; Vates (l&amp;rsquo;entreprise qui édite XCP-NG) accompagne ses clients pro dans cette étape. A ma connaissance, ils travaillent également sur de l&amp;rsquo;outillage pour faciliter les transferts, mais Proxmox VE ne sera probablement pas la première &amp;ldquo;plateforme source&amp;rdquo; qui sera supportés par ce genre d&amp;rsquo;outils.&lt;/p&gt;
&lt;p&gt;Dans cet article, je vais donc vous parler d&amp;rsquo;une méthode alternative qui m&amp;rsquo;a été conseillée par les gens de chez Vates pour faciliter cette migration, et plus particulièrement les étapes suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le transférer sur le serveur XCP-NG&lt;/li&gt;
&lt;li&gt;Créer un disque dans XenOrchestra (l&amp;rsquo;UI de XCP-NG, pour faire simple)&lt;/li&gt;
&lt;li&gt;Importer le contenu du VHD dans le disque vide qu&amp;rsquo;on a créé dans l&amp;rsquo;UI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="because-im-api-"&gt;Because I&amp;rsquo;m API 🎶
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Clap along if you feel like that&amp;rsquo;s what you wanna do&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Vous l&amp;rsquo;avez deviné, on va passer par l&amp;rsquo;API de Xen Orchestra pour se faciliter la tâche. En effet, on va pouvoir rassembler les 3 actions ci dessus en seul appel via cURL !&lt;/p&gt;
&lt;p&gt;Même s&amp;rsquo;il y a un petit prérequis (à faire une fois), ça sera quand même beaucoup plus scalable pour bouger plusieurs VMs.&lt;/p&gt;
&lt;h2 id="you-token-to-me"&gt;You token to me?
&lt;/h2&gt;&lt;p&gt;[EDIT] Depuis la version 5.72 de Xen Orchestra, il est possible de récupérer un token directement dans la Web UI (cf &lt;a class="link" href="https://xen-orchestra.com/blog/xen-orchestra-5-72/#%F0%9F%93%A1-rest-api-token-generation" target="_blank" rel="noopener"
&gt;ce post&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;En lisant &lt;a class="link" href="https://xen-orchestra.com/docs/restapi.html#authentication" target="_blank" rel="noopener"
&gt;la documentation de la REST API (paragraphe authentication)&lt;/a&gt;, on apprend, sans surprise, que la première chose à faire est de récupérer un token permettant d&amp;rsquo;authentifier nos futures requêtes.&lt;/p&gt;
&lt;p&gt;On comprend ensuite que pour faire ça, on va avoir besoin d&amp;rsquo;un tool qui s&amp;rsquo;appelle &lt;a class="link" href="https://xen-orchestra.com/blog/xen-orchestra-from-the-cli/" target="_blank" rel="noopener"
&gt;xo-cli&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si on suit la doc, il &amp;ldquo;suffit&amp;rdquo; d&amp;rsquo;installer ce module via &lt;code&gt;npm&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;npm install xo-cli
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bon&amp;hellip; moi j&amp;rsquo;ai pas envie d&amp;rsquo;installer &lt;code&gt;npm&lt;/code&gt; sur mon poste donc j&amp;rsquo;ai fais une image Docker cracra pour ça ;-).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Dockerfile" data-lang="Dockerfile"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;node&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/app&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;RUN&lt;/span&gt; npm install --global xo-cli&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ENTRYPOINT&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;xo-cli&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le &lt;a class="link" href="https://github.com/zwindler/docker-xo-cli" target="_blank" rel="noopener"
&gt;Dockerfile est disponible ici&lt;/a&gt; et l&amp;rsquo;&lt;a class="link" href="https://hub.docker.com/repository/docker/zwindler/xo-cli" target="_blank" rel="noopener"
&gt;image docker buildée est disponible là&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Depuis son poste (en remplaçant évidemment @IP.Xen.Orchestra par l&amp;rsquo;IP de votre serveur XenOrchestra, &lt;a class="link" href="mailto:admin@admin.net" &gt;admin@admin.net&lt;/a&gt; par votre login)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;docker run -it xo-cli --createToken --allowUnauthorized @IP.Xen.Orchestra admin@admin.net Password: ************
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Successfully logged with admin@admin.net
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Authentication token created xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si tout s&amp;rsquo;est bien passé, on récupère un token qu&amp;rsquo;on garde précieusement pour nos futures requêtes.&lt;/p&gt;
&lt;h2 id="champion-de-curling"&gt;champion de cURLing
&lt;/h2&gt;&lt;p&gt;De retour sur &lt;a class="link" href="https://xen-orchestra.com/docs/restapi.html#vdi-import" target="_blank" rel="noopener"
&gt;la documentation de l&amp;rsquo;API REST (paragraphe VDI import)&lt;/a&gt;, on trouve tout ce qu&amp;rsquo;il nous faut pour &amp;ldquo;crafter&amp;rdquo; notre requête cURL.&lt;/p&gt;
&lt;p&gt;A minima, on va avoir besoin de UUID de notre storage. Pour rappel, vous pouvez trouver ça dans l&amp;rsquo;UI.&lt;/p&gt;
&lt;p&gt;Si vous avez la flemme, vous pouvez aussi utilisez l&amp;rsquo;API REST pour récupérer les IDs des storages avec la requête suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;curl \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; -k -b authenticationToken=xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxx \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; https://@IP.Xen.Orchestra/rest/v0/srs\?fields=name_label
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; &amp;#34;name_label&amp;#34;: &amp;#34;Local storage&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; &amp;#34;href&amp;#34;: &amp;#34;/rest/v0/srs/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Depuis votre machine Proxmox VE (ou tout autre machine ayant directement accès au disque à exporter/importer), vous pouvez donc maintenant directement lancer la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;~# curl -X POST -k -b authenticationToken=xxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -T toto.vhd &amp;#39;https://@IP.Xen.Orchestra/rest/v0/srs/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/vdis?name_label=testexport.vhd&amp;#39; | cat
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A l&amp;rsquo;issue de l&amp;rsquo;opération, vous allez récupérer l&amp;rsquo;UUID du disque sur XCP-NG, déjà disponible pour la construction de la VM côté Xen Orchestra.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Avec cette méthode, une fois qu&amp;rsquo;on a un token, l&amp;rsquo;opération d&amp;rsquo;export/import Proxmox VE =&amp;gt; XCP-NG devient donc suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Récupération du disque virtuel sur Proxmox VE (en gros retrouver le disque)&lt;/li&gt;
&lt;li&gt;Transformer le disque virtuel en VHD&lt;/li&gt;
&lt;li&gt;Importer et créer le disque dans XCP-NG via un cURL&lt;/li&gt;
&lt;li&gt;Créer une VM dans l&amp;rsquo;UI et lui affecter le disque&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&amp;rsquo;est déjà beaucoup plus sympa si vous avez plusieurs VMs à bouger. L&amp;rsquo;axe d&amp;rsquo;amélioration suivant est, à mon avis, de créer directement la VM avec le bon disque.&lt;/p&gt;
&lt;p&gt;A date, ce n&amp;rsquo;est pas possible avec l&amp;rsquo;API REST (vu avec Vates), mais ça serait possible avec l&amp;rsquo;API JSON-RPC (sur laquelle se base l&amp;rsquo;UI de XenOrchestra et xo-cli). Ca sera donc mes prochaines investigations ;).&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;ici là, have fun :)&lt;/p&gt;
&lt;h2 id="bonus---importer-des-raw-directement"&gt;Bonus - Importer des RAW directement
&lt;/h2&gt;&lt;p&gt;Depuis la toute dernière version de Xen Orchestra, il est aussi possible d&amp;rsquo;importer directement des disques au format RAW (en rajouter le paramètre &amp;ldquo;raw&amp;rdquo; dans l&amp;rsquo;appel à l&amp;rsquo;API).&lt;/p&gt;
&lt;p&gt;Dans mon cas, c&amp;rsquo;est mon format de disques puisque tout est stocké en RAW sur mon storage ZFS Proxmox VE, donc en théorie on peut sauter une étape de plus, à savoir :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformer le disque virtuel en VHD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec la requête suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;curl -X POST -k -b authenticationToken=xxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -T toto.img &amp;#39;https://@IP.Xen.Orchestra/rest/v0/srs/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/vdis?raw&amp;amp;name_label=testexport.raw&amp;#39; | cat
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Attention aux limitations, cependant :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Après le soucis du raw c&amp;rsquo;est que tu vas pas pouvoir profiter du copy on write, donc exit les snapshots (en l&amp;rsquo;état actuelle de la stack de storage, smapiv1)&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Migrer une VM de Proxmox VE vers XCP NG</title><link>https://blog.zwindler.fr/2022/07/24/migrer-une-vm-de-proxmoxve-vers-xcp-ng/</link><pubDate>Sun, 24 Jul 2022 12:00:00 +0000</pubDate><guid>https://blog.zwindler.fr/2022/07/24/migrer-une-vm-de-proxmoxve-vers-xcp-ng/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/07/pve-to-xcpng.webp" alt="Featured image of post Migrer une VM de Proxmox VE vers XCP NG" /&gt;&lt;h2 id="retour-de-la-virtualisation"&gt;Retour de la virtualisation
&lt;/h2&gt;&lt;p&gt;Ca fait quelques mois que je n&amp;rsquo;ai pas parlé de virtualisation donc forcément, ça me démange un peu ;).&lt;/p&gt;
&lt;p&gt;Si vous suivez ce blog depuis quelque temps, vous savez &lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=proxmox" target="_blank" rel="noopener"
&gt;pourtant que j&amp;rsquo;ai pas mal roulé ma bosse avec Proxmox VE&lt;/a&gt;, un OS clé en main de virtualisation KVM (mais aussi de containerisation LXC, on en parle tellement peu). Sans aller jusqu&amp;rsquo;à dire que j&amp;rsquo;en ai fait le tour (a-t-on jamais fait le tour d&amp;rsquo;une techno ?), je commence à manquer de choses à tester avec mon lab perso.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;an dernier, j&amp;rsquo;ai discuté avec les équipes de &lt;a class="link" href="https://vates.fr/" target="_blank" rel="noopener"
&gt;Vates SAS&lt;/a&gt; à &lt;a class="link" href="https://blog.zwindler.fr/2021/11/10/open-source-experience-2021-recap/" &gt;OSXP 2021&lt;/a&gt;, une boite qui publie une autre distribution open source dédiée à la virtualisation : &lt;a class="link" href="https://xcp-ng.org/" target="_blank" rel="noopener"
&gt;XCP-NG&lt;/a&gt; (mais basée sur XenServer).&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;en avais déjà entendu parler sur Twitter (coucou Cécile) donc j&amp;rsquo;étais un peu curieux. Mais j&amp;rsquo;étais aussi un peu sceptique, &lt;a class="link" href="https://blog.zwindler.fr/2011/02/15/creation-dun-template-centos-5-5-pour-xenserver-5-6/" &gt;ma dernière expérience de XenServer datant de 2011&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/ataxya_xcp-ng.avif"
loading="lazy"
alt="Cécile (Ataxya Network) tweetant en 2021 qu’elle testait XCP NG"
&gt;&lt;/p&gt;
&lt;p&gt;Dans cet article, je ne vais pas rentrer dans une comparaison des fonctionnalités ni des avantages et inconvénients de XCP-NG par rapport à Proxmox VE. Je n&amp;rsquo;ai pas encore assez testé pour me faire une idée pertinente (ça viendra).&lt;/p&gt;
&lt;p&gt;En revanche, je peux vous donner un premier avant goût de la solution via un petit tuto pour vous aider à migrer des VMs de l&amp;rsquo;un à l&amp;rsquo;autre, si jamais l&amp;rsquo;envie vous prend de tester.&lt;/p&gt;
&lt;h2 id="prérequis"&gt;Prérequis
&lt;/h2&gt;&lt;p&gt;Dans ce tutoriel, je pars du principe que vous avez :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;d&amp;rsquo;un côté, une machine virtuelle QEMU, hébergée par un Proxmox VE, à copier/migrer&lt;/li&gt;
&lt;li&gt;de l&amp;rsquo;autre, un serveur sous XCP-NG, dans le même LAN, gérée par &lt;a class="link" href="https://xen-orchestra.com/?gclid=Cj0KCQjwuO6WBhDLARIsAIdeyDJ5Bd1q445B3W7jxWuy_culllyw-WqnU5yu7BhAD9KgOeXoykv_o4gaArRqEALw_wcB#!/xo-home" target="_blank" rel="noopener"
&gt;XenOrchestra&lt;/a&gt; (l&amp;rsquo;équivalent du &lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=vcenter" target="_blank" rel="noopener"
&gt;vCenter&lt;/a&gt; de VMware, pour ceux à qui ça parle)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: sauf erreur de ma part, on a pas de solution clé en main pour migrer un container LXC vers XCP-NG (même si XenServer gère les containers Xen, aussi appelé virtualisation PV). Trouver comment migrer ces workloads LXC sera peut-être l&amp;rsquo;objet d&amp;rsquo;un prochain article.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/lxc-to-xcpng.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Pour le reste du tutoriel, on va grosso modo suivre &lt;a class="link" href="https://xcp-ng.org/docs/migratetoxcpng.html#from-kvm-libvirt" target="_blank" rel="noopener"
&gt;la documentation officielle disponible ici&lt;/a&gt;, mais avec quelques modifs et surtout un peu plus de détails.&lt;/p&gt;
&lt;h2 id="option-zfs"&gt;Option ZFS
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; J&amp;rsquo;installe mes serveurs Proxmox VE avec ZFS comme stockage. Ca a plein d&amp;rsquo;avantages, notamment celui de me donner la possibilité de faire, à peu de frais, un PRA avec une réplication asynchrone des machines virtuelles de mon cluster. Cela induit par contre une petite difficulté complémentaire (vous allez voir c&amp;rsquo;est léger). &lt;strong&gt;Vous pouvez sauter cette étape si vous n&amp;rsquo;utilisez pas ZFS.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pour rappel (je ferai aussi un article dédié à ça), avec ZFS j&amp;rsquo;ai 2 types de disques.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; zfs list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;NAME USED AVAIL REFER MOUNTPOINT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool 213G 15.9G 112K /rpool
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/ROOT 6.32G 15.9G 96K /rpool/ROOT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/ROOT/pve-1 6.32G 15.9G 6.32G /
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/data 2.84G 15.9G 2.84G /rpool/data
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/subvol-201-disk-0 3.43G 4.57G 3.43G /rpool/subvol-201-disk-0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/subvol-301-disk-0 604M 15.9G 604M /rpool/subvol-301-disk-0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/vm-100-disk-0 3.79G 15.9G 3.79G -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/vm-213-disk-0 184G 148G 38.2G -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Des disques de type &amp;ldquo;Filesystem&amp;rdquo; qui sont directement montés à la racine de mon espace de stockage ZFS (chez moi /rpool, mais on a aussi &lt;code&gt;/tank&lt;/code&gt; comme convention chez les aficionados de ZFS) pour les containers LXC.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; zfs get &lt;span class="nb"&gt;type&lt;/span&gt; rpool/subvol-301-disk-0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;NAME PROPERTY VALUE SOURCE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/subvol-301-disk-0 type filesystem -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; zfs get mountpoint rpool/subvol-301-disk-0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;NAME PROPERTY VALUE SOURCE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;rpool/subvol-301-disk-0 mountpoint /rpool/subvol-301-disk-0 default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour les VMs KVM/QEMU en revanche, je ne peux pas directement trouver un fichier toto.raw ou toto.qcow2 dans l&amp;rsquo;arborescence &lt;code&gt;/rpool&lt;/code&gt;. Côté ZFS, ces volumes sont des volumes de type &amp;ldquo;volume&amp;rdquo; (lol).&lt;/p&gt;
&lt;p&gt;Mais c&amp;rsquo;est un détail, car c&amp;rsquo;est presque encore plus facile puisqu&amp;rsquo;on peut aller directement dans &lt;code&gt;/dev/zvol/rpool&lt;/code&gt; et les retrouver en tant que &amp;ldquo;special file&amp;rdquo; dans /dev.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;ls -l /dev/zvol/rpool/vm-100*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;lrwxrwxrwx 1 root root 10 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0 -&amp;gt; ../../zd16
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;lrwxrwxrwx 1 root root 12 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0-part1 -&amp;gt; ../../zd16p1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;lrwxrwxrwx 1 root root 12 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0-part2 -&amp;gt; ../../zd16p2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;lrwxrwxrwx 1 root root 12 Jul 23 02:00 /dev/zvol/rpool/vm-100-disk-0-part5 -&amp;gt; ../../zd16p5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dans l&amp;rsquo;étape suivante, &lt;code&gt;/dev/zvol/rpool/vm-100-disk-0&lt;/code&gt; remplacera donc notre image disque &amp;ldquo;input&amp;rdquo; (&lt;em&gt;toto.img&lt;/em&gt;).&lt;/p&gt;
&lt;h2 id="générer-un-vhd"&gt;Générer un VHD
&lt;/h2&gt;&lt;p&gt;Souvent sous Proxmox, vous allez avoir des disques au format RAW ou au format QCOW2.&lt;/p&gt;
&lt;p&gt;Dans les deux cas, XCP-NG n&amp;rsquo;accepte pas ces formats. Heureusement, l&amp;rsquo;utilitaire &lt;code&gt;qemu-img&lt;/code&gt;, inclus dans notre distribution de Proxmox VE sait faire les conversions.&lt;/p&gt;
&lt;p&gt;Dans le cas d&amp;rsquo;un disque RAW :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;qemu-img convert -f raw toto.img -O vpc toto.vhd
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dans le cas d&amp;rsquo;un disque QCOW2 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;qemu-img convert -f qcow2 toto.qcow2 -O vpc toto.vhd
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="avant-dimporter-le-vhd-dans-xcp-ng"&gt;Avant d&amp;rsquo;importer le VHD dans XCP-NG
&lt;/h2&gt;&lt;p&gt;La partie un peu moins &amp;ldquo;fun&amp;rdquo; de la procédure est qu&amp;rsquo;on doit faire une partie des actions en GUI (si on suit la doc, mais je &lt;em&gt;teaserai&lt;/em&gt; qu&amp;rsquo;on peut faire mieux en fin d&amp;rsquo;article).&lt;/p&gt;
&lt;p&gt;La première chose qu&amp;rsquo;on va devoir faire, c&amp;rsquo;est aller dans la WebUI Xen Orchestra pour retrouver notre espace de stockage et créer manuellement un disque.&lt;/p&gt;
&lt;p&gt;Il faut aller retrouver la liste de nos espaces de stockages (le plus simple, c&amp;rsquo;est de passer par &amp;ldquo;home&amp;rdquo;), puis, dans cet espace, créer un nouveau disque. Prenez garde à le créer de la bonne taille, en faisant attention à la différence Go/Gio. La documentation officielle conseille d&amp;rsquo;ajouter 1 Go de marge pour éviter ce genre de problématiques, mais je n&amp;rsquo;en ai pas eu besoin lors de mes tests.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/xo_storage.avif"
loading="lazy"
&gt;
&lt;img src="https://blog.zwindler.fr/2022/07/xoa_create_disk.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Note: chaque disque et chaque &amp;ldquo;datastore&amp;rdquo; a son propre UUID. Ici, j&amp;rsquo;ai souligné en rouge celui du datastore &amp;ldquo;Local&amp;rdquo;, il nous servira plus tard (quand on passe la souris dessus, XOA nous propose de le copier dans le presse-papier).&lt;/p&gt;
&lt;p&gt;Une fois le disque créé à la bonne taille, on récupère son UUID aussi.&lt;/p&gt;
&lt;h2 id="vhd-vers-xcp-ng"&gt;VHD vers XCP-NG
&lt;/h2&gt;&lt;p&gt;Maintenant qu&amp;rsquo;on a d&amp;rsquo;un côté un VHD valide, et de l&amp;rsquo;autre un disque dur virtuel vide prêt à accueillir les données, on peut se lancer !&lt;/p&gt;
&lt;p&gt;On envoie le VHD sur le serveur XCP-NG (via &lt;code&gt;scp&lt;/code&gt; ou un montage NFS, par exemple) et on se connecte dessus en SSH.&lt;/p&gt;
&lt;p&gt;Si on est pas confiant, on peut tester que le VHD est valide sur XCP-NG grâce à l&amp;rsquo;utilitaire suivant :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; vhd-util check -n /nfs/toto.vhd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; /nfs/toto.vhd is valid
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ensuite, on utilise le binaire &lt;code&gt;xe&lt;/code&gt; qui permet d&amp;rsquo;interagir en CLI avec XCP-NG pour lancer l&amp;rsquo;import :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; xe vdi-import &lt;span class="nv"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/nfs/toto.vhd &lt;span class="nv"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;vhd --progress &lt;span class="nv"&gt;uuid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; [|] ######################################################&amp;gt; (100% ETA 00:00:00)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On aura évidemment remplacé le paramètre &lt;em&gt;uuid=aaaa&lt;/em&gt; par l&amp;rsquo;UUID du disque virtuel, que je vous ai demandé de récupérer plus tôt !&lt;/p&gt;
&lt;h2 id="créer-la-vm"&gt;Créer la VM
&lt;/h2&gt;&lt;p&gt;Normalement, à l&amp;rsquo;issue de l&amp;rsquo;opération, on a un disque tout beau tout propre. La dernière étape est de créer une VM et à lui attacher ce disque.&lt;/p&gt;
&lt;p&gt;Là encore, on peut repartir de &amp;ldquo;Home&amp;rdquo; puis aller dans le menu VM.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/xoa_create_vm1.avif"
loading="lazy"
&gt;
&lt;img src="https://blog.zwindler.fr/2022/07/xoa_create_vm2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Note: pour passer le menu de création de VM, il faut impérativement choisir soit ISO/DVD ou PXE dans &lt;strong&gt;Install settings&lt;/strong&gt;, sinon CREATE est grisé. J&amp;rsquo;ai également supprimé le disque par défaut proposé par le wizard (puisqu&amp;rsquo;on va lui en attacher un) et dans &lt;strong&gt;Advanced&lt;/strong&gt;, j&amp;rsquo;ai décoché &lt;strong&gt;Boot VM after creation&lt;/strong&gt; puisque de toute façon je dois lui attacher le disque avant de booter.&lt;/p&gt;
&lt;p&gt;Une fois créé, on clique sur la VM pour lui attacher le disque qu&amp;rsquo;on a importé.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/07/xoa_attach_disk.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On peut maintenant booter la VM !&lt;/p&gt;
&lt;p&gt;Lors du redémarrage, la seule chose que j&amp;rsquo;ai eu à changer était la configuration réseau, un peu différente entre mon cluster Proxmox VE et mon lab XCP-NG, ainsi que le nom d&amp;rsquo;interface qui était différent suite au passage à Xen (ens18 =&amp;gt; eth0).&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai également ajouté le &amp;ldquo;Management agent&amp;rdquo; pour bénéficier d&amp;rsquo;infos dans l&amp;rsquo;UI (et probablement d&amp;rsquo;autres trucs chouettes que je n&amp;rsquo;ai pas encore exploré).&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Voilà pour ces premiers pas avec XCP-NG. Comme vous avez pu le constater, l&amp;rsquo;opération nécessite plusieurs étapes, dont certaines peuvent être améliorées (notamment l&amp;rsquo;automatisation de certaines tâches côté XCP-NG grâce à l&amp;rsquo;API, on en reparlera, car j&amp;rsquo;ai déjà quelques résultats).&lt;/p&gt;
&lt;p&gt;Cependant, ça permet déjà de se faire une première impression et de se familiariser avec les menus.&lt;/p&gt;
&lt;p&gt;Dans les semaines qui viennent, je vais continuer de jouer avec, histoire de me faire une opinion un peu plus construite de XCP-NG (notamment par rapport à ce que je fais avec Proxmox). S&amp;rsquo;il y a des points que vous voulez que je creuse en particulier, n&amp;rsquo;hésitez pas à me &amp;ldquo;ping&amp;rdquo; sur les divers réseaux sociaux pour m&amp;rsquo;en parler.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;ici là, have fun :)&lt;/p&gt;</description></item><item><title>Zwindler’s reflection</title><link>https://blog.zwindler.fr/2010/04/21/zwindlers-reflection/</link><pubDate>Wed, 21 Apr 2010 17:54:47 +0000</pubDate><guid>https://blog.zwindler.fr/2010/04/21/zwindlers-reflection/</guid><description>&lt;img src="https://blog.zwindler.fr/2010/04/nyanonymous2.webp" alt="Featured image of post Zwindler’s reflection" /&gt;&lt;p&gt;Bonjour,&lt;/p&gt;
&lt;p&gt;Pour faire dans l’original, j’ai ouvert un compte Free pour créer mon blog perso d’informaticien, histoire de faire partager mes découvertes et mes réflexions « extraordinaires » sur tout un tas de sujets passionnants tels que :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La vie d’un Sysadmin adepte du « Do It Yourself »&lt;/li&gt;
&lt;li&gt;La virtualisation, parce que la virtualisation, c’est la vie&lt;/li&gt;
&lt;li&gt;Linux sous toutes ses formes&lt;/li&gt;
&lt;li&gt;Windows et les joies liées à l’administration d’un groupe d’utilisateurs &lt;del&gt;mécontents&lt;/del&gt; épanouis&lt;/li&gt;
&lt;li&gt;Des applications Open Source -ou pas-&lt;/li&gt;
&lt;li&gt;Du scripting -orienté sysadmin, bien sûr-&lt;/li&gt;
&lt;li&gt;Du hardware parce que ça déborde chez moi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L’idée n’est &lt;em&gt;généralement&lt;/em&gt; pas d’attirer le chaland avec des tutos bourrés de screenshots sur des sujets  abordés X fois ailleurs (avec X tendant vers +l’infini), mais plutôt de donner des astuces sur des sujets plus confidentiels pour lesquels j’ai eu du mal à trouver des réponses facilement et/ou rapidement.&lt;/p&gt;
&lt;p&gt;C’est sûr, ça fait moins d’audimat ;-)&lt;/p&gt;
&lt;p&gt;Zwindler&lt;/p&gt;
&lt;p&gt;PS : Pour le fun: &lt;a class="link" href="http://xkcd.com/705" target="_blank" rel="noopener"
&gt;xkcd.com/705&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[Edit]Après avoir été longtemps limité par la faible capacités des pages perso Free, je me suis résolu à passer sur wordpress.com, conscient des limites que ça allait m’imposer[/Edit]&lt;/p&gt;
&lt;p&gt;[Edit2]Et j’ai finalement craqué, et j’ai déplacé le blog une nouvelle fois, mais sur un hébergement un peu plus sérieux =&amp;gt; OVH[/Edit2]&lt;/p&gt;</description></item></channel></rss>