Skip to main content

Posts

Showing posts from 2025

Deploying CEPH in the homelab

I recently rebuilt my Ceph lab to more closely mirror a real production deployment, rather than the usual - it works but don’t look too closely lab setups. The goals were simple but non-negotiable: 3 MONs (odd quorum) 2 MGRs (HA control plane) Host-level fault domain Replication size = 3 RGW (S3) only — no CephFS, no RBD Clean DNS (no /etc/hosts hacks) This post walks through the exact process I used to deploy a clean, repeatable Ceph RGW cluster using cephadm on Ubuntu, with explicit placement control and zero surprises. 🧠 Cluster Design – Nodes & IPs Monitor / Manager Nodes (Control Plane) ceph-mon01 — MON + MGR — 172.16.1.81 ceph-mon02 — MON + MGR — 172.16.1.82 ceph-mon03 — MON + MGR — 172.16.1.83 RGW (S3 Gateway) ceph-rgw01 — RGW Gateway — 172.16.1.86 OSD Storage Nodes ceph-osd01 — OSD Node (6 × 80 GB disks) — 172.16.1.91 ceph-osd02 — OSD Node (6 × 80 GB disks) — 172.16.1.92 ceph-osd03 — OSD Node (6 × 80 GB disks) — 172.16.1.93 📋 Cluster Requirements ...

Removing Multiple Datastores From Single ESXI Host Via PowerCLI

This post covers removing a multiple datastores from a single host at a time in vCenter with the use of PowerCLI. In the case where you have multiple hosts which have MANY MANY Datastores attached, its important to make sure you fully unmount and detach the DS from the host before removing storage connections.  Below is the code to make this happen $datastores = 'DS1','DS2'  $startTime = Get-Date $esxName = 'vmh.local' foreach($datastoreName in $datastores){ $datastoreName  $esx = Get-VMHost -Name $esxName $ds = Get-Datastore -Name $datastoreName $canonicalName = $ds.ExtensionData.Info.Vmfs.Extent[0].DiskName $storSys = Get-View $esx.Extensiondata.ConfigManager.StorageSystem $device = $storsys.StorageDeviceInfo.ScsiLun | where {$_.CanonicalName -eq $canonicalName} if($device.OperationalState[0] -eq 'ok'){     $StorSys.UnmountVmfsVolume($ds.ExtensionData.Info.Vmfs.Uuid) } $storSys.DetachScsiLun($device.Uuid) } $endTime = Get-Date $executionTime = $endTime...