{"id":351,"date":"2025-11-16T23:07:52","date_gmt":"2025-11-16T22:07:52","guid":{"rendered":"https:\/\/techbygiusi.com\/?p=351"},"modified":"2026-01-03T23:54:48","modified_gmt":"2026-01-03T22:54:48","slug":"how-to-upgrade-proxmox-ve-8-4-x-to-9-0-x","status":"publish","type":"post","link":"https:\/\/techbygiusi.com\/index.php\/guide\/how-to-upgrade-proxmox-ve-8-4-x-to-9-0-x\/","title":{"rendered":"How to Upgrade Proxmox VE 8.4.x to 9.0.x"},"content":{"rendered":"\n<p>Upgrading a Proxmox cluster has always followed a clear and reliable pattern:<br><strong>first bring Ceph to the correct major release on all nodes<\/strong>, and only then perform the operating system and Proxmox upgrade node by node.<br>Sticking to this established order ensures a stable and predictable cluster migration.<\/p>\n\n\n\n<p>This guide walks you through the traditional, proven workflow from Proxmox VE 8.x to 9.x, including upgrading Ceph from Reef to Squid.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Legend<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#Preparation\" data-type=\"internal\" data-id=\"#Preparation\">Preparation<\/a><\/li>\n\n\n\n<li><a href=\"#Upgrade-Ceph-on-All-Nodes-(Reef-%E2%86%92-Squid)\" data-type=\"internal\" data-id=\"#Upgrade-Ceph-on-All-Nodes-(Reef-\u2192-Squid)\">Upgrade Ceph on All Nodes (Reef \u2192 Squid)<\/a><\/li>\n\n\n\n<li><a href=\"#Proxmox-Pre-Upgrade-Check-(Node-by-Node)\" data-type=\"internal\" data-id=\"#Proxmox-Pre-Upgrade-Check-(Node-by-Node)\">Proxmox Pre-Upgrade Check (Node by Node)<\/a><\/li>\n\n\n\n<li><a href=\"#Update-Debian-and-Proxmox-Repositories-(Node-by-Node)\" data-type=\"internal\" data-id=\"#Update-Debian-and-Proxmox-Repositories-(Node-by-Node)\">Update Debian and Proxmox Repositories (Node by Node)<\/a><\/li>\n\n\n\n<li><a href=\"#Perform-the-Upgrade-(Node-by-Node)\" data-type=\"internal\" data-id=\"#Perform-the-Upgrade-(Node-by-Node)\">Perform the Upgrade (Node by Node)<\/a><\/li>\n\n\n\n<li><a href=\"#Remove-Noout-(once-for-the-cluster)\" data-type=\"internal\" data-id=\"#Remove-Noout-(once-for-the-cluster)\">Remove Noout (once for the cluster<\/a><\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\" id=\"Preparation\">Preparation<\/h6>\n\n\n\n<p>Before touching anything, make sure the cluster is healthy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ceph status\npvecm status<\/code><\/pre>\n\n\n\n<p>There should be no degraded OSDs, no misplaced PGs, and no quorum issues.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"#lb-1-2425cf18\" class=\"lb-thumb\" aria-label=\"Bild vergr\u00f6\u00dfern\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"781\" src=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1-1024x781.png\" alt=\"\" class=\"wp-image-353\" srcset=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1-1024x781.png 1024w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1-300x229.png 300w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1-768x586.png 768w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1-1536x1172.png 1536w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1.png 1756w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<h6 class=\"wp-block-heading\" id=\"Upgrade-Ceph-on-All-Nodes-(Reef-\u2192-Squid)\">Upgrade Ceph on All Nodes (Reef \u2192 Squid)<\/h6>\n\n\n\n<p>This part must be done <strong>on every node<\/strong>, one after another, until the entire Ceph cluster runs Squid.<br>Only after all nodes are complete should the Proxmox upgrade begin.<\/p>\n\n\n\n<p>Update the Ceph Repository<\/p>\n\n\n\n<p>On each node:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/reef\/squid\/' \/etc\/apt\/sources.list.d\/ceph.list<\/code><\/pre>\n\n\n\n<p>Set the Noout Flag (once for the cluster)<\/p>\n\n\n\n<p>This prevents unnecessary rebalancing during the upgrade.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ceph osd set noout<\/code><\/pre>\n\n\n\n<p>Update Packages<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt upgrade<\/code><\/pre>\n\n\n\n<p>Restart Ceph Services<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart ceph-mon.target\nsystemctl restart ceph-mgr.target<\/code><\/pre>\n\n\n\n<p>Check Versions<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ceph -s\nceph versions<\/code><\/pre>\n\n\n\n<p>Reboot the Node<\/p>\n\n\n\n<p>A reboot is strongly recommended after a Ceph major upgrade:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>reboot<\/code><\/pre>\n\n\n\n<p>Repeat all steps above on every node.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"#lb-2-90a06620\" class=\"lb-thumb\" aria-label=\"Bild vergr\u00f6\u00dfern\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"358\" src=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-3-1024x358.png\" alt=\"\" class=\"wp-image-357\" srcset=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-3-1024x358.png 1024w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-3-300x105.png 300w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-3-768x269.png 768w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-3.png 1224w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<p>When All Nodes Are Finished \u2192 Set the Ceph Release<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ceph osd require-osd-release squid<\/code><\/pre>\n\n\n\n<p>Check again:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ceph status\nceph health<\/code><\/pre>\n\n\n\n<p>At this point, Ceph is fully upgraded cluster-wide.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\" id=\"Proxmox-Pre-Upgrade-Check-(Node-by-Node)\">Proxmox Pre-Upgrade Check (Node by Node)<\/h6>\n\n\n\n<p>Now the Proxmox upgrade begins \u2014 but again <strong>one node at a time<\/strong>.<\/p>\n\n\n\n<p>Run on each node:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pve8to9 --full<\/code><\/pre>\n\n\n\n<p>Any warnings should be corrected before proceeding.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\" id=\"Update-Debian-and-Proxmox-Repositories-(Node-by-Node)\">Update Debian and Proxmox Repositories (Node by Node)<\/h6>\n\n\n\n<p>Proxmox VE 9.x is based on <strong>Debian 13 Trixie<\/strong>, so the repository entries must be updated from <em>bookworm<\/em> to <em>trixie<\/em>.<\/p>\n\n\n\n<p>Keep in mind:<br><strong>Every system may contain different repository files.<\/strong><br>You must update <em>only the files that actually exist on your node.<\/em><\/p>\n\n\n\n<p><strong>General Rule<\/strong><\/p>\n\n\n\n<p>For <strong>any<\/strong> repository file that still contains bookworm, update it using this pattern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/&lt;your-file&gt;.list<\/code><\/pre>\n\n\n\n<p>In the Proxmox Web UI under:<\/p>\n\n\n\n<p><strong>Node \u2192 Updates \u2192 Repositories<\/strong><\/p>\n\n\n\n<p>Every entry must show <strong>trixie<\/strong> under the <em>Suites<\/em> column<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"#lb-3-03e81085\" class=\"lb-thumb\" aria-label=\"Bild vergr\u00f6\u00dfern\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"353\" src=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1024x353.png\" alt=\"\" class=\"wp-image-352\" srcset=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1024x353.png 1024w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-300x104.png 300w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-768x265.png 768w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-1536x530.png 1536w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image.png 2031w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<p>Example for the main Debian sources<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list<\/code><\/pre>\n\n\n\n<p>Example for typical Proxmox repository files<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/pve-no-subscription.list\nsed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/pve-enterprise.list\nsed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/pvetest-for-beta.list\nsed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/pve-install-repo.list<\/code><\/pre>\n\n\n\n<p>Example for PBS Client (if installed)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/ceph.list<\/code><\/pre>\n\n\n\n<p>PBS Client Repository (if present)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/bookworm\/trixie\/g' \/etc\/apt\/sources.list.d\/pbs-client.list<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\" id=\"Perform-the-Upgrade-(Node-by-Node)\">Perform the Upgrade (Node by Node)<\/h6>\n\n\n\n<p>After updating the sources, perform the actual OS upgrade:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt dist-upgrade\nreboot<\/code><\/pre>\n\n\n\n<p>When the node is back online, verify:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pveversion -v\nceph status<\/code><\/pre>\n\n\n\n<p>Only after the current node is successfully upgraded and healthy should the next node be processed.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\" id=\"Remove-Noout-(once-for-the-cluster)\">Remove Noout (once for the cluster)<\/h6>\n\n\n\n<p>Once <strong>all<\/strong> nodes have been upgraded and the cluster is stable again:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ceph osd unset noout<\/code><\/pre>\n\n\n\n<p>The Ceph cluster will now resume normal behavior.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"#lb-4-105df21d\" class=\"lb-thumb\" aria-label=\"Bild vergr\u00f6\u00dfern\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"905\" src=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-2-1024x905.png\" alt=\"\" class=\"wp-image-354\" srcset=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-2-1024x905.png 1024w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-2-300x265.png 300w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-2-768x678.png 768w, https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/11\/image-2.png 1526w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/a><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Upgrading a Proxmox cluster has always followed a clear and reliable pattern:first bring Ceph to the correct major release on all nodes, and only then perform the operating system and Proxmox upgrade node by node.Sticking to this established order ensures a stable and predictable cluster migration. This guide walks you through the traditional, proven workflow [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[18,12,10],"class_list":["post-351","post","type-post","status-publish","format-standard","hentry","category-guide","tag-homelab","tag-linux","tag-proxmox"],"_links":{"self":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":4,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":481,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts\/351\/revisions\/481"}],"wp:attachment":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/media?parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/categories?post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/tags?post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}