aboutsummaryrefslogtreecommitdiff
path: root/content/post/nas-upgrade/index.md
diff options
context:
space:
mode:
authorKumar Damani <me@kumardamani.net>2026-07-24 04:25:00 +0000
committerKumar Damani <me@kumardamani.net>2026-07-24 04:25:40 +0000
commita6a3f943063ce04fd0fd3030c6f67711a7943bd4 (patch)
treef3a6c8b97f61031641c4c0e613c76e9a60a1910b /content/post/nas-upgrade/index.md
parent3a2dd35f4b6b6414ec3ba4af4e0984598ff9aa35 (diff)
preparing for switch to typst
Diffstat (limited to 'content/post/nas-upgrade/index.md')
-rw-r--r--content/post/nas-upgrade/index.md139
1 files changed, 0 insertions, 139 deletions
diff --git a/content/post/nas-upgrade/index.md b/content/post/nas-upgrade/index.md
deleted file mode 100644
index ea7f0bb..0000000
--- a/content/post/nas-upgrade/index.md
+++ /dev/null
@@ -1,139 +0,0 @@
----
-title: "NAS Upgrade"
-date: 2024-06-01T15:56:10-04:00
-draft: false
-description: "I upgrade my NAS hardware, and the platform it runs on."
-author: "Kumar Damani"
----
-
-Doing it right this time.
-
-<!--more-->
-
-Until now I've been using a [RockPro64](https://pine64.org/devices/rockpro64/) in the (excellent for starters) Pine64 [NAS case](https://wiki.pine64.org/wiki/NASCase) for my NAS.
-It runs [Armbian](https://www.armbian.com/rockpro64/), `openzfs`, and I manage my ZFS as needed on the CLI.
-I share my datasets over NFS to my Proxmox guest VMs for access.
-This has served me reasonably well for the past few years.
-But we have a baby coming soon, and along with that a flurry of new photos and videos
-for my family to store on my NAS.
-And although I *probably* have enough buffer to survive the initial few months,
-I certainly wish to do better than my current 2xHDD mirrored pool giving me ~4TB of storage.
-
-![nas nas](oldnas.png)
-
-# The Plan
-Luckily I already possess the hard-drives I need for my desired pool.
-In total, I have 2 HDDs from my current NAS, and 2 spares -
-all the same 4TB capacity.
-
-I still want to keep my current NAS running as a backup store,
-but I only need 1 drive for this purpose (for now).
-That leaves me with 3 HDDs we can use for our new `raidz1` pool which would give
-me 2 drives for storage and 1 for parity.
-
-Now for the platform. I have been a very happy user of [Proxmox](https://www.proxmox.com/en/proxmox-virtual-environment/overview) (on my compute node)
-and it already comes ready with ZFS support so I'll stick with that.
-I did consider [TrueNAS](https://www.truenas.com) (both standalone, and virtualized within Proxmox with
-disk-passthrough), but when it comes to storage, I want as few surprises as possible
-so I stuck with what I know. I'm already used to ZFS on the CLI and Proxmox is based on
-Debian so if/when something goes wrong, I don't want to be messing around with an unfamiliar UI.
-
-Although I don't want to manage ZFS via a GUI,
-I'd like a way to manage *access* to my datasets via a GUI.
-[Cockpit](https://cockpit-project.org) seems like a good light-weight choice.
-It runs as an LXC container within Proxmox using bind-mounts for the dataset paths.
-I can then select which paths I allow access to over my network
-using NFS, and SMB protocols on a per-user basis.
-
-# Shopping
-Needs:
-- `>= 3` hot-swappable HDD bays
-- `>= 16` GB RAM (for ZFS)
-- runs Proxmox
-
-Wants:
-- IPMI
-- 1U
-- 10Gb networking
-
-On eBay, I ended up checking out with:
-
-![nas chassis](nas-chassis.png)
-![ethernet adapter](ethernet.png)
-
-| Part | Price (shipped) |
-| -------------- | --------------- |
-| 1U 20" Short Depth Supermicro Server X9SCL-F XEON E3-1270 V2 16GB NIC Rails | $236 |
-| Mellanox ConnectX-2 PCIe x8 10Gbe SFP+ network card | $23 |
-
-which gave me everything I needed **and** wanted!
-
-# Build
-First I free one of my HDDs from my RockPro64 NAS for use in my new pool.
-This means I am running on a single HDD for the remainder of the migration.
-
-With the free HDD, and my two spares,
-I get everything assembled, and set up a new Proxmox node with a ZFS pool
-from the UI using the 3 disks.
-
-![proxmox zfs pool](zfs-pool.png)
-
-# Sync
-To migrate all of my data from the old pool to the new pool I use
-[`syncoid`](https://github.com/jimsalterjrs/sanoid/tree/master?tab=readme-ov-file#syncoid).
-It uses ZFS snapshots to accomplish this. It's awesome.
-
-This takes many hours depending on the size of your pool and your connection,
-but since I saw almost full utilization of my network link
-I was convinced it's the best I can do right now.
-
-I've seen in a few Reddit posts suggesting ways this can be optimized using
-some combination of `zfs send` with `mbuffer` rather than `ssh` which
-`syncoid` uses, but I'm happy with the convenience of `syncoid`.
-
-The best part is that everything can still be running while this is going on!
-This is because only the first sync takes a long time since it needs to copy
-*everything* over. All subsequent syncs only transfer the delta
-since the last sync which should be pretty quick if your data does not change
-all that much.
-
-That being said, since I am now running on a single drive, and hitting it hard during
-sync, I do not want to stay in this state for any longer than I need to due to
-potentially leading my single disk to failure.
-
-Once the sync is complete, I do a second sync (for the delta), and promptly
-shut down all of my services to prepare for the cut-over.
-
-# Cockpit
-Before I can re-enable my services. I need to expose my datasets on Cockpit.
-
-I create a Debian LXC, and assign the generated MAC a static IP on my network.
-Other than that, I just make sure my container has the NFS feature enabled:
-
-![cockpit lxc features](cockpit-lxc.png)
-
-Setting up user permissions is a pain, but once done
-I expose the relevant NFS as well as Samba paths for my services -
-replicating my old NAS's shared paths.
-
-# Voila
-In my homelab nameserver, I update the A record
-for my NAS to point to the new IP of my Cockpit LXC container,
-and start my services back up.
-
-I confirm everything is still good by turning off the old NAS, and yep still good.
-
-Luckily for me all good on the first try!
-
-# Finishing touches
-I set up a cron on my old NAS to sync data nightly from the new pool.
-This will only work while the actual data size on my new pool is less than 4TB,
-so I'll need to get a new drive with higher capacity to keep the backups going
-in the future.
-
-Luckily I should have about a year until I exceed 4TB on the new pool so I'll be keeping
-an eye on deals to snag an 8TB backup drive along with a few spares for my new NAS.
-
-# Resources
-- https://www.apalrd.net/posts/2023/ultimate_nas/
-- https://blog.kye.dev/proxmox-cockpit