# FSx File System -- Review Storage Tier

> FSx for Windows and Lustre file systems on SSD storage often over-pay when workloads need modest IOPS. Windows Single-AZ SSD runs $0.130 per GB-month versus $0.013 on HDD. ZopNight prices the swap as the real rate delta times capacity times 730 hours, abstaining on OpenZFS and NetApp ONTAP, which are SSD-only.

Source: https://zop.dev/integrations/aws/recommendations/fsx-file-system-review-storage-tier
Updated: 2026-08-19

---

## Which FSx types can hold HDD storage

- Metadata["storageType"] == "SSD" (discoverer FSxProvider, DescribeFileSystems; the prior hasTag(Tags,"storage_type"/"throughput_low") gates were dead TAG_GATED_DEAD reads)
- Metadata["fileSystemType"] ∈ \{WINDOWS, LUSTRE}, since HDD is supported only on these; OpenZFS / NetApp ONTAP are SSD-only, so an SSD→HDD swap is impossible there → abstain
- PricingAware (context-first, legacy map fallback): per-resource monthly cost
- resource.SizeGB (discoverer FSx StorageCapacity, GB), required to price the direct storage-tier delta; abstains when ≤0
- SKURatesAware + TargetSKUCandidates: fsx-ssd (source) + fsx-hdd (target) catalog rates (the no-op SetSKURates exists only to flip HasSKURatesAware("aws","fsx") true so the service seeds these rates)

## Why the SSD to HDD delta skips the shared helper

concrete-or-abstain (cost-driven rightsizing; the prior "performance"/SavingsUSD=0 advisory dodge is removed). savings = (fsx-ssd rate − fsx-hdd rate) × resource.SizeGB × 730, capped at the per-resource cost (savings ≤ cost invariant). This is a direct rate-delta computation, not model.DeriveCatalogDiffSavings, because that helper's compute-calibrated magnitude floor (0.001/hr) and fraction ceiling (0.85) both incorrectly reject a real FSx storage swap: the aggregator prorates FSx catalog storage rates to $/GB-hour at ingest (÷730), so real srcRate/dstRate are ~1e-4/1e-5 (always below the 0.001 floor), and the real AWS delta (Windows Single-AZ SSD $0.130 vs HDD $0.013/GB-mo, [both taken from the published FSx storage rates](https://aws.amazon.com/fsx/pricing/)) is ~0.90, above the 0.85 ceiling. Abstains (returns nil) whenever either rate is missing/non-positive, the HDD rate is not cheaper, or SizeGB is ≤0. Never a fabricated fraction, never SavingsUSD=0 under the cost-driven category.

## Migrating to an HDD file system

1. Review [the CloudWatch metrics FSx publishes per file system](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/monitoring-cloudwatch.html) for IOPS and throughput patterns
2. If IOPS requirements are low, create a new file system with HDD storage
3. Migrate data using DataSync or rsync
4. Update mount targets in applications
