<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Virtualization on Sysadmin Tales</title>
    <link>https://blog.ssb-tech.net/tags/virtualization/</link>
    <description>Recent content in Virtualization on Sysadmin Tales</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 02 Oct 2026 21:39:10 -0400</lastBuildDate>
    <atom:link href="https://blog.ssb-tech.net/tags/virtualization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Proxmox Setup Notes</title>
      <link>https://blog.ssb-tech.net/posts/proxmox-setup-notes/</link>
      <pubDate>Thu, 07 Aug 2025 22:02:02 -0400</pubDate>
      <guid>https://blog.ssb-tech.net/posts/proxmox-setup-notes/</guid>
      <description>&lt;h1 id=&#34;proxmox-installation-steps&#34;&gt;Proxmox installation steps&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This post is a reference for me and anyone else that finds it useful.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve never bothered documenting this before, which leads me to missing stuff every time I set up a new box.&lt;/p&gt;&#xA;&lt;p&gt;This post will continue to be updated if I add anything new.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installation&#34;&gt;Installation&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The primary thing to get right here is the storage configuration. Even if it&amp;rsquo;s a single disk I will typically do ZFS.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Click on Options. Choose whichever ZFS topology you want.&lt;/li&gt;&#xA;&lt;li&gt;Click on Advanced Options. Change Compression from &amp;ldquo;on&amp;rdquo; to &amp;ldquo;lz4&amp;rdquo;. This is the default anyway, but I like to be sure.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ashift&lt;/code&gt; should be set to 12 or 13. I typically do 12, as this targets 4k physical sectors.&lt;/li&gt;&#xA;&lt;li&gt;Make sure that you have the correct disks selected. Any disk you do not want to be part of the boot pool should be set to &amp;ldquo;do not use&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;For the rest of the setup you can pretty much just click Next Next Next. I do recommend setting the correct time zone and a good DNS server.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;post-install&#34;&gt;Post-Install&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;If you don&amp;rsquo;t have an Enterprise subscription we need to disable the enterprise repository and enable the one for no-subscription.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Click on the individual node (not Datacenter) and go to Updates &amp;gt; Repositories.&#xA;&lt;img alt=&#34;Picture showing where to click on the individual node&#34; loading=&#34;lazy&#34; src=&#34;https://blog.ssb-tech.net/posts/proxmox-setup-notes/images/pvesetup-node.png&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Click on Add and select &lt;code&gt;No Subscription&lt;/code&gt; from the dropdown.&lt;/li&gt;&#xA;&lt;li&gt;Next, select the repositories labeled &amp;ldquo;Enterprise&amp;rdquo; and disable them.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Enable Debian Non-Free-Firmware repository.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This one can&amp;rsquo;t be done through the GUI. SSH in or use the web shell.&lt;/li&gt;&#xA;&lt;li&gt;Edit the sources&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vim /etc/apt/sources.list.d/pve-no-enterprise.list&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;Add the following repo, replacing $VERSION with your release&amp;rsquo;s Debian base (bookworm, trixie):&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://deb.debian.org/debian $VERSION main non-free-firmware&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;Install the firmware microcode for your hardware vendor&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Run &lt;code&gt;apt update&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;apt install intel-microcode&lt;/code&gt; OR &lt;code&gt;apt install amd64-microcode&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;At this point, update the system. Reboot if needed.&lt;/li&gt;&#xA;&lt;li&gt;Next, lets fix the ZFS configuration.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Click on the &lt;code&gt;Datacenter&lt;/code&gt; tab and go do down to &lt;code&gt;Storage&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Select your zpool (or pools) and click Edit. You will have to do this for every pool individually.&lt;/li&gt;&#xA;&lt;li&gt;Enable thin provisioning.&lt;/li&gt;&#xA;&lt;li&gt;Change the Block Size to 64k or 128k. Either is probably fine, but the default 16k is abysmal for VM disks. This setting is the &lt;code&gt;zvol&lt;/code&gt; equivalent to the &lt;code&gt;recordsize&lt;/code&gt; property on datasets. Having this not match your workload will usually result in massive write amplification. This is why ZFS got a reputation for quickly killing SSDs, but it doesn&amp;rsquo;t have to if you configure your pool correctly.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Click on the individual node again. Go to &lt;code&gt;System &amp;gt; Network&lt;/code&gt; and select any bridges that you&amp;rsquo;ve created. Set them to be VLAN-aware.&lt;/li&gt;&#xA;&lt;li&gt;Set up the notification system under &lt;code&gt;Datacenter &amp;gt; Notifications&lt;/code&gt;. I will typically have it send me only backup failure notices and warnings about things like failed disks.&lt;/li&gt;&#xA;&lt;li&gt;I will typically set up a VM template at this stage to save myself a bunch of work later. See links below for options.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;other-notes&#34;&gt;Other Notes&lt;/h2&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re trying to set up a new ZFS storage pool and the disks aren&amp;rsquo;t showing up in the interface - the Proxmox interface will not show you any disks that have partitions on them.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re expecting a drive to show up and it&amp;rsquo;s not you can go through the following procedure on the command line.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;lsblk&lt;/code&gt; to find the path of the drive that you need to wipe.&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsblk -o NAME,SIZE,MODEL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;Wipe out all of the partitions.&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wipefs -a /dev/sdX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;The ZFS labels (which contain pool metadata) may survive &lt;code&gt;wipefs&lt;/code&gt; as it&amp;rsquo;s stored on the first few sectors of the drive, so lets make sure that any existing labels are gone. If this drive has never been used in a zpool before, you can skip this step.&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zpool labelclear /dev/sdX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;Try creating your pool again.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://old.reddit.com/r/zfs/comments/8l20f5/zfs_record_size_is_smaller_really_better/dzc9669/&#34;&gt;Reddit comment explaining the effect of a poorly matched recordsize property&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://technotim.live/posts/cloud-init-cloud-image/&#34;&gt;Setting up a cloud-init VM template&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/traefikturkey/oncall&#34;&gt;A repository for Packer templates for Various OS images&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://guneycansanli.github.io/my-blog/Automate-Creating-VM-templates-on-Proxmox-with-Packer/&#34;&gt;Automate Creating VM templates on Proxmox with Packer&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
