<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ProxmoxVE on Wael Nasreddine</title><link>https://risala.pages.dev/tags/proxmoxve/</link><description>Recent content in ProxmoxVE on Wael Nasreddine</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://risala.pages.dev/tags/proxmoxve/index.xml" rel="self" type="application/rss+xml"/><item><title>Proxmox VM - Ensure SCSI0 in Boot Order for Talos OS</title><link>https://risala.pages.dev/posts/proxmox-scsi0-boot-order/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-scsi0-boot-order/</guid><description>&lt;h1 id="proxmox-vm---ensure-scsi0-in-boot-order-for-talos-os"&gt;&#10; Proxmox VM - Ensure SCSI0 in Boot Order for Talos OS&#10; &lt;a class="heading-link" href="#proxmox-vm---ensure-scsi0-in-boot-order-for-talos-os"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;h2 id="symptom"&gt;&#10; Symptom&#10; &lt;a class="heading-link" href="#symptom"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;After installing Talos Linux to a Proxmox VM's SCSI disk (e.g., &lt;code&gt;scsi0&lt;/code&gt;) and removing the installation ISO, the VM may fail to boot, potentially getting stuck in a PXE/no boot loop.&lt;/p&gt;&#10;&lt;h2 id="cause"&gt;&#10; Cause&#10; &lt;a class="heading-link" href="#cause"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;The Proxmox VM's boot order might not have the SCSI disk (e.g., &lt;code&gt;scsi0&lt;/code&gt;) enabled or prioritized. This can happen if disks were deleted and re-added during experimentation.&lt;/p&gt;</description></item><item><title>ProxmoxVE - Add Certificate via ACME</title><link>https://risala.pages.dev/posts/proxmox-add-cret-via-acme/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-add-cret-via-acme/</guid><description>&lt;h1 id="proxmoxve---add-certificate-via-acme"&gt;&#10; ProxmoxVE - Add Certificate via ACME&#10; &lt;a class="heading-link" href="#proxmoxve---add-certificate-via-acme"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I need to get a valid TLS certificate for my ProxmoxVE so browser don't complain.&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;The server certificate can be configured to use ACME to install a certificate. Follow &lt;a href="https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_certs_acme_dns_challenge" class="external-link" target="_blank" rel="noopener"&gt;this documentation&lt;/a&gt; to configure it.&lt;/p&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#root/NgSzJ5aYNkZr" &gt;ProxmoxVE - Build Log&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>ProxmoxVE - Boot without starting any VM</title><link>https://risala.pages.dev/posts/proxmox-boot-without-guest-vms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-boot-without-guest-vms/</guid><description>&lt;h1 id="proxmoxve---boot-without-starting-any-vm"&gt;&#10; ProxmoxVE - Boot without starting any VM&#10; &lt;a class="heading-link" href="#proxmoxve---boot-without-starting-any-vm"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I want to boot ProxmoxVE without booting any guest in order to perform a maintenance task.&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;During boot interrupt systemd (proxmox-boot) so it does not boot&lt;/li&gt;&#10;&lt;li&gt;Press &lt;code&gt;e&lt;/code&gt; to edit the command line&lt;/li&gt;&#10;&lt;li&gt;Type in the following at the very end of the line: &lt;code&gt;systemd.mask=pve-guests.service&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Hit Enter to boot without starting any guests.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/supermicro-install-proxmox/" &gt;SuperMicro - Install ProxmoxVE&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#root/NgSzJ5aYNkZr" &gt;ProxmoxVE - Build Log&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>ProxmoxVE - Shutdown timeout</title><link>https://risala.pages.dev/posts/proxmox-shutdown-timeout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-shutdown-timeout/</guid><description>&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;In order to give important VM time to shutdown properly, I need to define shutdown timeout for each important VM.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The default timeout is 180s&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;The timeouts are defined per VM and not per Group. Since TrueNAS takes a while to shut down and is crucial for it to take its time shutting down, I will increase its timeout to 300 seconds. The default timeout is good enough for the rest of the VMs.&lt;/p&gt;</description></item><item><title>ProxmoxVE - Start and Shutdown order</title><link>https://risala.pages.dev/posts/proxmox-start-and-shutdown-order/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-start-and-shutdown-order/</guid><description>&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I need to define the Start and Shutdown order for all of my VMs in order to ensure dependencies between vms.&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;The order defined below per group and not per VM although each VM in the group needs to input the same order number.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Group 5&lt;/strong&gt;: Basic Infrastructure&#10;&lt;ul&gt;&#10;&lt;li&gt;Basic DNS&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Group 10&lt;/strong&gt;: Infrastructure&#10;&lt;ul&gt;&#10;&lt;li&gt;TrueNAS&lt;/li&gt;&#10;&lt;li&gt;Tailscale&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Group 15&lt;/strong&gt;: Enhanced Infrastructure&#10;&lt;ul&gt;&#10;&lt;li&gt;Full Featured DNS (it depends on NFS to mount local zone files.)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Group 20&lt;/strong&gt;: Databases and caches&#10;&lt;ul&gt;&#10;&lt;li&gt;Postgres&lt;/li&gt;&#10;&lt;li&gt;Redis&lt;/li&gt;&#10;&lt;li&gt;Etc..&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Group 30&lt;/strong&gt;: Kubernetes Control Plane&#10;&lt;ul&gt;&#10;&lt;li&gt;All clusters&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Group 40&lt;/strong&gt;: Kubernetes Worker&#10;&lt;ul&gt;&#10;&lt;li&gt;All clusters&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/proxmox-startup-delay/" &gt;ProxmoxVE - Startup delay&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/proxmox-shutdown-timeout/" &gt;ProxmoxVE - Shutdown timeout&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>ProxmoxVE - Startup delay</title><link>https://risala.pages.dev/posts/proxmox-startup-delay/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-startup-delay/</guid><description>&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;In order to guarantee dependent VMs boot before they are needed, I need to define a delay to wait before booting the top VMs&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;The delays are defined per VM and not per Group.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Basic DNS&lt;/strong&gt;: 60s&#10;&lt;ul&gt;&#10;&lt;li&gt;Allow basic DNS to load correctly and become available as other VMs depends on it.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;TrueNAS&lt;/strong&gt;: 60s&#10;&lt;ul&gt;&#10;&lt;li&gt;TrueNAS boots pretty quickly (unlike shutdown), so give it enough time to boot before other VMs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/proxmox-start-and-shutdown-order/" &gt;ProxmoxVE - Start and Shutdown order&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/proxmox-shutdown-timeout/" &gt;ProxmoxVE - Shutdown timeout&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>ProxmoxVE - TrueNAS VM - Disable Memory Ballooning</title><link>https://risala.pages.dev/posts/proxmoxve-truenas-disable-memory-ballooning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmoxve-truenas-disable-memory-ballooning/</guid><description>&lt;h1 id="proxmoxve---truenas-vm---disable-memory-ballooning"&gt;&#10; ProxmoxVE - TrueNAS VM - Disable Memory Ballooning&#10; &lt;a class="heading-link" href="#proxmoxve---truenas-vm---disable-memory-ballooning"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;&lt;strong&gt;ProxmoxVE's memory ballooning&lt;/strong&gt; feature allows a virtual machine's operating system to dynamically adjust its reported memory usage. This enables the hypervisor (ProxmoxVE) to reclaim memory from the VM if it's not actively being used by the guest OS, and allocate it to other VMs or the host.&lt;/p&gt;&#10;&lt;p&gt;However, for &lt;strong&gt;TrueNAS virtual machines, memory ballooning should be disabled.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>ProxmoxVE - Turn off laptop screen</title><link>https://risala.pages.dev/posts/proxmox-turn-off-laptop-screen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-turn-off-laptop-screen/</guid><description>&lt;h1 id="proxmoxve---turn-off-laptop-screen"&gt;&#10; ProxmoxVE - Turn off laptop screen&#10; &lt;a class="heading-link" href="#proxmoxve---turn-off-laptop-screen"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I have a couple of ProxmoxVE servers running on old laptops and I noticed that the screen never turns off.&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;The solution is to leverage the consoleblank kernel command line flag:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Edit &lt;code&gt;/etc/kernel/cmdline&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Append &lt;code&gt;consoleblank=60&lt;/code&gt; to the end of the line&lt;/li&gt;&#10;&lt;li&gt;Run &lt;code&gt;proxmox-boot-tool refresh&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Reboot&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#root/NgSzJ5aYNkZr" &gt;ProxmoxVE - Build Log&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#root/QhAdfbJICkpd" &gt;ProxmoxVE - Prevent sleep on lid close&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>ProxmoxVE - VM - Talos Linux - New Kubernetes Cluster</title><link>https://risala.pages.dev/posts/proxmox-talos-new-k8s-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmox-talos-new-k8s-cluster/</guid><description>&lt;h1 id="proxmoxve---vm---talos-linux---new-kubernetes-cluster"&gt;&#10; ProxmoxVE - VM - Talos Linux - New Kubernetes Cluster&#10; &lt;a class="heading-link" href="#proxmoxve---vm---talos-linux---new-kubernetes-cluster"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Talos runs great on ProxmoxVE. Make sure to add the system extension &lt;code&gt;siderolabs/qemu-guest-agent&lt;/code&gt; when producing the &lt;a href="https://risala.pages.dev/posts/talos-factory-iso-with-extensions/" &gt;Talos - Generate ISO and Installer with Custom Extensions via Image Factory&lt;/a&gt;. This enhances VM manageability from Proxmox (e.g., proper shutdowns, IP reporting in Proxmox UI).&lt;/p&gt;&#10;&lt;p&gt;The required steps for a new Kubernetes Cluster are:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Generate an ISO and Download it on ProxmoxVE.&lt;/li&gt;&#10;&lt;li&gt;Setup the Control Plane of Kubernetes.&lt;/li&gt;&#10;&lt;li&gt;Create one Talos VM for each Talos Control Plane node.&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Kubernetes recommends an odd number of nodes. Typically one node for development and three nodes for production for high availability.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt; &lt;/li&gt;&#10;&lt;li&gt; &lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="generate-an-iso-and-download-it-on-proxmoxve"&gt;&#10; Generate an ISO and Download it on ProxmoxVE&#10; &lt;a class="heading-link" href="#generate-an-iso-and-download-it-on-proxmoxve"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Generate an ISO by following &lt;a href="https://risala.pages.dev/posts/talos-factory-iso-with-extensions/" &gt;Talos - Generate ISO and Installer with Custom Extensions via Image Factory&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Pin the Talos version in your image factory command for reproducible builds.&lt;/li&gt;&#10;&lt;li&gt;Download the ISO on ProxmoxVE&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="create-talos-vms"&gt;&#10; Create Talos VM(s)&#10; &lt;a class="heading-link" href="#create-talos-vms"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create a new VM, and be sure to follow the &lt;a href="#root/tzME4XCbt2Kh" &gt;Talos Linux - System Requirements&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;Use advanced configuration and disable memory ballooning, that will not be useful with Kubernetes and could in fact be harmful.&lt;/li&gt;&#10;&lt;li&gt;Choose OVMF over SeaBIOS as it loads a nicer console font by default. See &lt;a href="#root/UybHqtYYxrbZ" &gt;Proxmox VM - UEFI vs SeaBIOS Consideration&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CPU Type:&lt;/strong&gt; Set CPU type to &lt;code&gt;host&lt;/code&gt; in Proxmox VM options for best performance, unless live migration to different CPU hosts is a strict requirement.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Network Adapter:&lt;/strong&gt; Use &lt;code&gt;virtio&lt;/code&gt; (paravirtualized) for the network device model for best performance.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Resource Allocation:&lt;/strong&gt; Plan CPU cores and RAM for each VM based on expected load. For control planes: typically 2+ cores, 4GB+ RAM. Workers depend on workload.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;(Optional) VM Template:&lt;/strong&gt; After setting up and testing one worker VM (before applying Talos config), consider converting it to a Proxmox template for faster worker node deployment. You'd still need to boot with the ISO and apply the Talos config.&lt;/li&gt;&#10;&lt;li&gt;Gather the NIC Mac Address from the VM Hardware page, this is needed to setup a static IP on the router.&lt;/li&gt;&#10;&lt;li&gt;Add the node to the router with fixed IP following &lt;a href="#root/QTeojEQdVxUM" &gt;UniFi - Add DHCP Reservation for MAC&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;Start the VM&lt;/li&gt;&#10;&lt;li&gt;Follow the heading below for configuring the cluster.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="configure-the-cluster"&gt;&#10; Configure the cluster&#10; &lt;a class="heading-link" href="#configure-the-cluster"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Write the &lt;code&gt;controlplane-patch.yaml&lt;/code&gt; and &lt;code&gt;worker-patch.yaml&lt;/code&gt; &lt;strong&gt;with the contents below&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;Generate the secrets with &lt;code&gt;talosctl gen secrets -o secrets.yaml&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Security:&lt;/strong&gt; Store &lt;code&gt;secrets.yaml&lt;/code&gt; securely. It contains sensitive PKI data. Consider encrypting it at rest (e.g., using GPG, HashiCorp Vault, or similar). Back it up to a secure location.&lt;/li&gt;&#10;&lt;li&gt;Generate the configuration with the command &lt;code&gt;talosctl gen config --with-secrets secrets.yaml --config-patch-control-plane @controlplane-patch.yaml --config-patch-worker @worker-patch.yaml &amp;lt;cluster name&amp;gt; https://&amp;lt;IP_of_first_node&amp;gt;:6443 --output-dir . --install-image &amp;lt;url-to-installer-image-from-factory&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt; &#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;&amp;lt;IP_of_first_node&amp;gt;&lt;/code&gt; in the URL for &lt;code&gt;talosctl gen config&lt;/code&gt; is used as the initial endpoint for the generated &lt;code&gt;talosconfig&lt;/code&gt; and as one of the default cert SANs. Your &lt;code&gt;controlplane-patch.yaml&lt;/code&gt; correctly overrides/supplements &lt;code&gt;apiServer.certSANs&lt;/code&gt; and defines &lt;code&gt;controlPlane.endpoint&lt;/code&gt; to your VIP (&lt;code&gt;&amp;lt;VIP&amp;gt;&lt;/code&gt;), which is good practice.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;The command generates &lt;code&gt;controlplane.yaml&lt;/code&gt;, &lt;code&gt;worker.yaml&lt;/code&gt;, and &lt;code&gt;talosconfig&lt;/code&gt;. The &lt;code&gt;.yaml&lt;/code&gt; files are the machine configs for your nodes.&lt;/li&gt;&#10;&lt;li&gt;For each control plane node, apply the config with the command and wait for the node to become ready &lt;code&gt;talosctl apply-config --insecure --file controlplane.yaml --nodes &amp;lt;IP&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;First node should start saying &amp;quot;waiting for talosctl bootstrap&amp;quot;&lt;/li&gt;&#10;&lt;li&gt;Other nodes are ready as soon you see the number of machines increment on the first node.&lt;/li&gt;&#10;&lt;li&gt;Worker plane nodes can be applied all at once with the command &lt;code&gt;talosctl apply-config --insecure --file worker.yaml --nodes &amp;lt;IP&amp;gt; --nodes &amp;lt;IP&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Configure &lt;code&gt;talosconfig&lt;/code&gt; with the IP of the &lt;strong&gt;first node. Do not add other nodes yet&lt;/strong&gt; (see &lt;a href="https://risala.pages.dev/posts/talos-bootstrap-x509-unknown-authority/" &gt;Talos - Bootstrap - x509 Unknown Authority&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;talosctl config endpoint &amp;lt;IP_of_one_control_plane_node&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;talosctl config node &amp;lt;IP_of_one_control_plane_node&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Either copy &lt;code&gt;talosconfig&lt;/code&gt; to &lt;code&gt;~/.talos/config&lt;/code&gt; or export &lt;code&gt;TALOSCONFIG&lt;/code&gt; environment variable to point to its location.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Security:&lt;/strong&gt; The &lt;code&gt;talosconfig&lt;/code&gt; file contains client certificates that grant administrative access to your cluster. Protect it accordingly.&lt;/li&gt;&#10;&lt;li&gt;Bootstrap the cluster with &lt;code&gt;talosctl bootstrap&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Wait for &lt;code&gt;talosctl health -n &amp;lt;IP&amp;gt;&lt;/code&gt; for each IP to report healthy.&lt;/li&gt;&#10;&lt;li&gt;Generate the proper kube config with the command &lt;code&gt;talosctl kubeconfig&lt;/code&gt;. This command merges with &lt;code&gt;~/.kube/config&lt;/code&gt; if one is found and automatically sets the context to the cluster so it's ready to use.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Important:&lt;/strong&gt; After bootstrap and verifying health, update your &lt;code&gt;talosconfig&lt;/code&gt; to include all control plane node endpoints for high availability when using &lt;code&gt;talosctl&lt;/code&gt;: &lt;code&gt;talosctl config endpoint &amp;lt;CP1_IP&amp;gt;,&amp;lt;CP2_IP&amp;gt;,&amp;lt;CP3_IP&amp;gt; --nodes &amp;lt;CP1_IP&amp;gt;,&amp;lt;CP2_IP&amp;gt;,&amp;lt;CP3_IP&amp;gt;&lt;/code&gt; (Or edit the &lt;code&gt;talosconfig&lt;/code&gt; YAML file directly to update &lt;code&gt;contexts.&amp;lt;your-cluster&amp;gt;.endpoints&lt;/code&gt; and &lt;code&gt;contexts.&amp;lt;your-cluster&amp;gt;.nodes&lt;/code&gt;). This ensures &lt;code&gt;talosctl&lt;/code&gt; can reach the Talos API even if one control plane node is down.&lt;/li&gt;&#10;&lt;li&gt;Run &lt;code&gt;kubectl get node -o wide&lt;/code&gt; to confirm things are working fine.&lt;/li&gt;&#10;&lt;li&gt;Ensure no node is tainted as &lt;code&gt;uninitialized&lt;/code&gt;, use the following command: &lt;code&gt;kubectl get nodes -o custom-columns=NODE:.metadata.name,TAINTS:.spec.taints&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#root/eYDTIsTbfIxy" &gt;Talos Linux - Cloud Controller Manager (or CCM)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;code&gt;controlplane-patch.yaml&lt;/code&gt;&lt;/p&gt;</description></item><item><title>ProxmoxVE - VM Performance Tuning</title><link>https://risala.pages.dev/posts/proxmoxve-vm-performance-tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/proxmoxve-vm-performance-tuning/</guid><description>&lt;h1 id="proxmoxve---vm-performance-tuning"&gt;&#10; ProxmoxVE - VM Performance Tuning&#10; &lt;a class="heading-link" href="#proxmoxve---vm-performance-tuning"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Proxmox VE, being based on KVM/QEMU, offers numerous avenues for tuning Virtual Machine (VM) performance. Optimal settings often depend on the specific workload of the VM (e.g., I/O intensive, CPU intensive, network intensive). This note covers general best practices and specific configurations.&lt;/p&gt;&#10;&lt;h2 id="1-cpu-configuration"&gt;&#10; 1. CPU Configuration&#10; &lt;a class="heading-link" href="#1-cpu-configuration"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;CPU Type:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;host&lt;/code&gt;: This is generally recommended for best performance. It passes through the host CPU's features and model directly to the VM, avoiding emulation overhead and ensuring access to all instruction sets (e.g., AVX, AES-NI).&lt;/li&gt;&#10;&lt;li&gt;Avoid older emulated CPU types unless required for specific compatibility (e.g., live migration to a host with a different CPU).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cores &amp;amp; Sockets:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Start with what the VM workload reasonably needs. Over-allocating CPU cores can sometimes lead to scheduler contention on the host, potentially degrading performance for all VMs.&lt;/li&gt;&#10;&lt;li&gt;For most VMs, configuring sockets=1 and adjusting the number of cores is straightforward. NUMA considerations might influence socket/core layout for very large VMs on multi-socket hosts.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;NUMA Pinning:&lt;/strong&gt; For VMs with significant RAM and CPU allocated on NUMA-aware host hardware, enabling the &amp;quot;NUMA&amp;quot; option in Proxmox and ensuring the VM's vCPUs and memory are pinned to the same NUMA node can improve memory access latency and performance. This is an advanced setting.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-memory-configuration"&gt;&#10; 2. Memory Configuration&#10; &lt;a class="heading-link" href="#2-memory-configuration"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Static Allocation:&lt;/strong&gt; For performance-sensitive VMs, especially those running databases or memory-intensive applications (like TrueNAS with ZFS), assign static memory.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Disable Ballooning:&lt;/strong&gt; As detailed in &lt;a href="https://risala.pages.dev/posts/proxmoxve-truenas-disable-memory-ballooning/" &gt;ProxmoxVE - TrueNAS VM - Disable Memory Ballooning&lt;/a&gt;, memory ballooning can be detrimental for workloads that manage their own memory carefully (e.g., ZFS ARC, database buffer pools). Uncheck the &amp;quot;Ballooning Device&amp;quot; for such VMs.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Hugepages:&lt;/strong&gt; For certain applications (e.g., databases, Java applications), transparent hugepages (THP) or explicitly configured hugepages can improve memory performance by reducing TLB misses. This is configured at the host level and sometimes within the guest OS.&lt;/li&gt;&#10;&lt;li&gt;Proxmox allows enabling hugepages for VMs (e.g., &amp;quot;KSM and Hugepages&amp;quot; settings).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="3-storage-performance"&gt;&#10; 3. Storage Performance&#10; &lt;a class="heading-link" href="#3-storage-performance"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Disk Image Format:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;raw&lt;/code&gt;: Generally offers the best performance as it has minimal overhead.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;qcow2&lt;/code&gt;: Offers features like snapshots and thin provisioning but can have a slight performance overhead compared to &lt;code&gt;raw&lt;/code&gt;. If using &lt;code&gt;qcow2&lt;/code&gt;, preallocation can improve performance.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Storage Type on Host:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Local SSDs (NVMe or SATA) will provide the best I/O performance for VM disks.&lt;/li&gt;&#10;&lt;li&gt;Ceph or ZFS (if Proxmox is installed on ZFS) can provide robust and performant shared storage, but their performance depends heavily on their own configuration (e.g., number of OSDs, SSD journaling, network).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;VirtIO Drivers:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;VirtIO SCSI / VirtIO Block (&lt;code&gt;virtio-blk&lt;/code&gt;):&lt;/strong&gt; Both are paravirtualized drivers offering good performance.&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;VirtIO SCSI&lt;/code&gt; (often with &lt;code&gt;VirtIO SCSI single&lt;/code&gt; controller type) is generally recommended for flexibility and features like TRIM/UNMAP support.&lt;/li&gt;&#10;&lt;li&gt;Enable &lt;code&gt;IO Thread&lt;/code&gt; for VirtIO SCSI disks. This dedicates a separate I/O thread per disk, which can significantly improve I/O throughput and reduce latency, especially for multi-core VMs and fast storage.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Ensure VirtIO drivers are installed in the guest OS (most modern Linux distros include them; Windows requires separate driver installation).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cache Mode:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;none&lt;/code&gt; (or &lt;code&gt;writethrough&lt;/code&gt; for certain data integrity needs): Often recommended for VMs with applications that manage their own caching (e.g., databases) or when data integrity is paramount. This bypasses the host page cache.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;writeback&lt;/code&gt;: Can offer higher performance by using the host page cache, but carries a risk of data loss if the host crashes before data is flushed to disk (unless using features like Ceph's RBD caching with appropriate safety measures).&lt;/li&gt;&#10;&lt;li&gt;Carefully consider the implications of cache modes based on the workload and storage backend.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Discard/TRIM:&lt;/strong&gt; Enable the &amp;quot;Discard&amp;quot; option for virtual disks on SSD-backed storage (and ensure the guest OS also issues TRIM commands). This helps SSDs maintain performance by allowing them to reclaim unused blocks.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="4-network-performance"&gt;&#10; 4. Network Performance&#10; &lt;a class="heading-link" href="#4-network-performance"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;VirtIO NIC:&lt;/strong&gt; The &lt;code&gt;VirtIO (paravirtualized)&lt;/code&gt; network device type offers the best performance for most VMs. Ensure guest OS drivers are installed.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Multiqueue VirtIO:&lt;/strong&gt; Enable the &amp;quot;Multiqueue&amp;quot; option for VirtIO NICs (and ensure the guest OS supports it, e.g., Linux kernel 3.8+). This allows network packet processing to be distributed across multiple vCPUs, significantly improving network throughput for multi-core VMs. Set the number of queues appropriately (e.g., to match the number of vCPUs, up to a reasonable limit).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;vHostNet (Host-side processing):&lt;/strong&gt; While not a direct Proxmox setting, understanding that VirtIO networking can leverage vHostNet in the host kernel can offload some network processing from QEMU, improving efficiency.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;SR-IOV / PCI Passthrough:&lt;/strong&gt; For extreme network performance needs, passing through a physical NIC or a Virtual Function (VF) via SR-IOV to the VM can provide near bare-metal network performance by bypassing the hypervisor's network stack.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="5-guest-os-optimizations"&gt;&#10; 5. Guest OS Optimizations&#10; &lt;a class="heading-link" href="#5-guest-os-optimizations"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Install Guest Utilities/Drivers:&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;qemu-guest-agent&lt;/code&gt;: Essential for proper communication with the hypervisor (e.g., for clean shutdowns, IP address reporting, freezing filesystem for snapshots).&lt;/li&gt;&#10;&lt;li&gt;Latest VirtIO drivers for Windows.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Kernel Tuning (Linux Guests):&lt;/strong&gt; Adjust kernel parameters within the guest (e.g., I/O schedulers, network buffer sizes, swappiness) based on the workload.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Disable Unused Services:&lt;/strong&gt; Minimize resource consumption within the guest.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="6-general-proxmox-host-considerations"&gt;&#10; 6. General Proxmox Host Considerations&#10; &lt;a class="heading-link" href="#6-general-proxmox-host-considerations"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Host Kernel:&lt;/strong&gt; Keep Proxmox VE updated to benefit from the latest KVM/QEMU features, bug fixes, and performance improvements.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Host Resource Monitoring:&lt;/strong&gt; Regularly monitor host CPU, memory, disk I/O, and network utilization to identify bottlenecks.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Limit KSM (Kernel Samepage Merging):&lt;/strong&gt; While KSM can save memory by deduplicating identical memory pages between VMs, it consumes CPU resources. If CPU is a bottleneck or for latency-sensitive VMs, consider disabling KSM or tuning its parameters. It's often disabled by default in recent Proxmox versions or can be toggled per VM.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/proxmoxve-truenas-disable-memory-ballooning/" &gt;ProxmoxVE - TrueNAS VM - Disable Memory Ballooning&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/truenas-vm-sizing-and-configuration-best-practices/" &gt;TrueNAS - VM Sizing and Configuration Best Practices&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>SuperMicro - Install ProxmoxVE</title><link>https://risala.pages.dev/posts/supermicro-install-proxmox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://risala.pages.dev/posts/supermicro-install-proxmox/</guid><description>&lt;h1 id="supermicro---install-proxmoxve"&gt;&#10; SuperMicro - Install ProxmoxVE&#10; &lt;a class="heading-link" href="#supermicro---install-proxmoxve"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;h2 id="problem"&gt;&#10; Problem&#10; &lt;a class="heading-link" href="#problem"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;I need to install ProxmoxVE on the server.&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;&#10; Solution&#10; &lt;a class="heading-link" href="#solution"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/supermicro-bmc-boot-from-usb/" &gt;SuperMicro - BMC - Boot from USB&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Perform a normal ProxmoxVE installation using the two SSD in RAID1 (mirror)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="supermicro-install-proxmox_Screenshot-2025-05-25-at-16.09.00.png" alt="Screenshot 2025-05-25 at 16.09.00.png"&gt;&lt;/p&gt;&#10;&lt;h2 id="related"&gt;&#10; Related&#10; &lt;a class="heading-link" href="#related"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#root/faEXa14ZnKKN" &gt;Setting up SuperMicro SuperStorage 6048R-E1CR36H&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://risala.pages.dev/posts/supermicro-bmc-boot-from-usb/" &gt;SuperMicro - BMC - Boot from USB&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>