Proxmox ZFS & Hardware RAID Capacity Calculator
Calculate net usable Proxmox VE ZFS capacity, padding loss, slop space, 80% safe ceiling, ARC RAM, and zpool create CLI script.
Input Parameters
Calculation Results
- totalDrives
- 6
- driveSize
- 4
- unit
- TB
- topology
- raidz2
- mediaType
- ssd
- mediaLabel
- Enterprise SSD
- vdevCount
- 1
- ashiftVal
- 12
- recordKiB
- 128
- poolName
- rpool-data
- rawTotalTB
- 24
- rawTotalTiB
- 21.83
- standardRaidUsableTB
- 16
- standardRaidUsableTiB
- 14.55
- parityAndSpareLossTB
- 8
- paddingLossTB
- 0.45
- slopSpaceTB
- 0.1374
- zfsNetUsableTB
- 15.41
- zfsNetUsableTiB
- 14.02
- safeUsableTB
- 12.33
- safeUsableTiB
- 11.21
- faultToleranceText
- 2 drive per VDEV bersamaan
- speedReadGain
- 4×
- speedWriteGain
- 1×
- estReadIops
- 32000
- estWriteIops
- 6800
- minArcRamGB
- 26
- recommendedRamGB
- 32
- warningMessage
- undefined
# ===================================================================== # InfraCalc.id — ZFS Pool untuk Proxmox VE | Topologi: RAIDZ2 | 6 Drive (24 TB Raw) # Kapasitas Bersih ZFS: 15.41 TB (14.02 TiB) | Batas Aman 80%: 12.33 TB (11.21 TiB) # Ganti ID DISK dengan ID asli dari: ls -l /dev/disk/by-id/ (hindari nama /dev/sdX) # ===================================================================== # 1. Buat ZFS Storage Pool di Terminal Proxmox VE zpool create -f -o ashift=12 -O compression=zstd -O acltype=posixacl -O xattr=sa -O normalization=formD rpool-data \ raidz2 /dev/disk/by-id/nvme-DISK_1 /dev/disk/by-id/nvme-DISK_2 /dev/disk/by-id/nvme-DISK_3 /dev/disk/by-id/nvme-DISK_4 /dev/disk/by-id/nvme-DISK_5 /dev/disk/by-id/nvme-DISK_6 # 2. Rekomendasi Dataset Options untuk Proxmox VM & Container zfs set recordsize=128k rpool-data zfs set atime=off rpool-data # 3. Verifikasi Status Pool zpool status rpool-data zfs list rpool-data
How to Use This Tool
- Select your drive count, individual disk capacity (TB or GB), and target ZFS topology (Mirror / RAID 10, RAIDZ1, RAIDZ2, or RAIDZ3).
- Specify the pool ashift (ashift 12 for modern 4K disks), dataset recordsize (128 KiB standard, 16 KiB database, or 1024 KiB backup), and storage media type (NVMe, SSD, or HDD).
- Inspect the net usable ZFS capacity, the 80% performance threshold, estimated IOPS, and ARC RAM requirements, then copy the zpool create command into your Proxmox VE shell.
Worked Example: Proxmox Standard 6 × 4 TB RAIDZ2
Computed example: An array of 6 drives × 4 TB (24 TB / 21.83 TiB raw) in RAIDZ2 yields a net ZFS usable capacity of 15.41 TB (14.02 TiB) after parity, padding loss (0.45 TB), and slop space (0.1374 TB). The 80% safe capacity ceiling is 12.33 TB (11.21 TiB) with a minimum ARC RAM requirement of 26 GB (host recommendation 32 GB).
{
"drives": 6,
"driveSize": 4,
"unit": "TB",
"topology": "raidz2",
"ashift": "12",
"recordsize": "128",
"mediaType": "ssd",
"poolName": "rpool-data"
}- totalDrives:
- 6
- driveSize:
- 4
- unit:
- TB
- topology:
- raidz2
- mediaType:
- ssd
- mediaLabel:
- Enterprise SSD
- vdevCount:
- 1
- ashiftVal:
- 12
- recordKiB:
- 128
- poolName:
- rpool-data
- rawTotalTB:
- 24
- rawTotalTiB:
- 21.83
- standardRaidUsableTB:
- 16
- standardRaidUsableTiB:
- 14.55
- parityAndSpareLossTB:
- 8
- paddingLossTB:
- 0.45
- slopSpaceTB:
- 0.1374
- zfsNetUsableTB:
- 15.41
- zfsNetUsableTiB:
- 14.02
- safeUsableTB:
- 12.33
- safeUsableTiB:
- 11.21
- faultToleranceText:
- 2 drive per VDEV bersamaan
- speedReadGain:
- 4×
- speedWriteGain:
- 1×
- estReadIops:
- 32000
- estWriteIops:
- 6800
- minArcRamGB:
- 26
- recommendedRamGB:
- 32
- warningMessage:
- undefined
Core Concept & Engineering Notes
How It Was Calculated (Formulas & Steps)
Mathematical Formulas
- Gross Raw Capacity (TB) = Drive Count × Capacity per Drive
- Binary Capacity (TiB) = Decimal TB × 0.9094947 (10^12 to 2^40)
- Standard Usable = Effective Data Drives × Capacity per Drive
- Padding Loss = Standard Usable × Padding Ratio (0.028 for 128k recordsize)
- Slop Space = min((Standard Usable − Padding Loss) × 1/32, 0.1374 TB / 128 GiB)
- Net ZFS Usable = Standard Usable − Padding Loss − Slop Space
- 80% Safe Capacity = Net ZFS Usable × 0.80 (prevents Copy-on-Write performance collapse)
- ARC RAM Recommendation = Base 2 GB + 1 GB per 1 TB Raw Capacity
Step-by-Step Calculation
- Raw Pool Capacity: 6 × 4 TB = 24 TB (21.83 TiB)
- Standard Hardware RAID baseline: 4 effective data drives = 16 TB (14.55 TiB)
- OpenZFS Overheads: RAIDZ sector padding loss = 0.45 TB (128k recordsize), slop space allocation = 0.1374 TB (capped at 128 GiB)
- Net ZFS Usable: 15.41 TB (14.02 TiB); Recommended 80% Safe Capacity ceiling = 12.33 TB (11.21 TiB)
- Host Memory Sizing: Base 2 GB + 1 GB/TB raw = 26 GB ARC RAM (Recommend 32 GB total host RAM)
Frequently Asked Questions (FAQ)
Why is the usable ZFS capacity in Proxmox smaller than standard hardware RAID?
Beyond the ~9% difference between decimal TB (10^12) and binary TiB (2^40) reported by the OS, ZFS reserves Slop Space (1/32 of pool size, up to 128 GiB), sector padding alignment margins on RAIDZ, and internal copy-on-write metadata structures.
Why is it strongly advised never to fill a ZFS pool beyond 80% capacity?
Because ZFS is a Copy-on-Write filesystem. When free capacity drops below 20%, the kernel switches from a high-speed first-fit block allocator to an exhaustive best-fit allocator, escalating fragmentation and drastically depressing write performance.
How much RAM does Proxmox VE require for the ZFS ARC cache?
The standard sizing guideline is 2 GB base RAM for the Proxmox OS plus 1 GB of RAM per 1 TB of raw pool capacity. If inline deduplication is enabled, RAM requirements jump dramatically to at least 5 GB per 1 TB of storage to hold the DDT table in memory.
Why should we always use `/dev/disk/by-id/` rather than `/dev/sda` device names in Proxmox?
Linux device letters such as `/dev/sda` or `/dev/sdb` are dynamically assigned during kernel boot and can shuffle upon reboot or controller port re-cabling. Using persistent `/dev/disk/by-id/` paths binds drives to their permanent serial numbers, preventing failed pool imports.
Related Calculators
Calculate usable storage, parity loss, disk efficiency, and fault tolerance across RAID 0, 1, 5, 6, 10, 50, and 60 configurations.
Calculate server UPS capacity (kVA/VA), VRLA battery runtime (Ah), and 24/7 monthly electricity cost with 25% safety margin and power factor.
Calculate server room heat dissipation in BTU/hr, convert to air conditioning PK ratings with 24/7 redundancy, and size server racks with airflow buffer.
References & Notes
- OpenZFS Documentation — Storage Pool Administration & Performance
- Proxmox VE Documentation — ZFS on Linux
Note: Results above are mathematical estimates based on standard formulas. Always verify against official vendor documentation and site conditions before production deployment.