Usually, yes: keep Home Assistant's active config, registries, metadata, and local database on a reliable SSD, and place large media, camera recordings, exports, and secondary backup copies on HDD storage.
The important boundary is not simply small files versus large files. Home Assistant's /config tree contains tightly coupled persistent state, while Recorder performs frequent database work and external mounts add startup and availability dependencies. Separate data by access pattern, document every mount, and verify a restart plus a restore before trusting the split.
Keep the Active Home Assistant State Together on SSD
Treat /config as one recovery unit. It normally includes YAML, secrets, the .storage directory, registries, integration state, andโwhen SQLite is usedโthe active database. Splitting individual hidden state files across mounts makes ownership, startup order, and restore coverage harder to reason about.
Recorder writes continuously, so its storage behavior differs from an archive that is opened occasionally. Independent troubleshooting guidance recommends fast storage for the active Home Assistant database because frequent reads and writes can turn slow media into visible history and automation delays. The useful evidence focus is fast storage for the active database, not a promise that every SSD fixes every bottleneck.
If you use an external MariaDB or PostgreSQL service, the database becomes a separate stateful system with its own backup, authentication, network, and upgrade boundary. Do not treat moving the database URL as a simple file-placement change.
Move Capacity-Heavy Data Only When It Has a Clear Boundary
HDD storage is a reasonable target for large media files, long camera recordings, exported reports, and additional backup copies when those paths do not contain the live configuration or database. These workloads usually value capacity more than small random I/O latency.
Create explicit host paths and mount them at stable container locations. Do not point a broad parent mount over /config, because an empty or late host path can hide the expected data and make Home Assistant appear newly installed. Confirm the HDD is mounted before the container starts and decide what should happen if it is unavailable.
The related ZimaSpace article on Home Assistant metadata and history growth helps separate registries, Recorder history, logs, and backups before you assign each class to a storage tier.
Plan Backups Across Both Storage Tiers
Write down which backup captures /config, the active database, the HDD paths, and any external database. A full-looking archive can still omit a separately mounted media or database path, while a filesystem copy can be inconsistent if it captures a database mid-write.
Keep at least one backup copy off the Home Assistant host. The SSD/HDD split improves placement; it does not protect against deletion, power faults, controller failure, or a bad migration that reaches both disks. Record encryption keys and credentials with the recovery plan rather than on the same machine.
Before changing mounts, create a known-good backup and note current entity counts, integrations, recent history, dashboards, automations, and media paths. Those observations become the acceptance test after recreation and are more useful than checking only whether the login page opens.
Validate the Split Through Restart, Load, and Restore
Restart the host, not only Home Assistant, to test mount order. Confirm that /config resolves to the SSD path and every bulk-data mount resolves to the intended HDD path before Home Assistant begins writing. An empty directory at either location is a stop condition.
Run the original workload: open history, trigger a busy automation, write a recording or media file, and create a backup. A passing result keeps control responsive, writes data to the intended disks, produces no database or permission warnings, and leaves the host with normal I/O latency.
Finally, restore to an isolated test instance and verify both storage tiers. Roll back the split if Home Assistant starts with empty registries, stale history, missing media, or mount-dependent failures. Escalate to an external database or redesigned storage only when the simpler SSD /config plus HDD bulk-data boundary cannot meet capacity or availability needs.
Support & Tips
More to Read

How to Optimize Home Assistant Database Connections for Concurrent Containers
Tune an external Recorder database from measured active connections and latency, not by raising max connections or copying another host's pool.

How to Prevent Duplicate Jobs or Imports in Home Assistant
Use traces and unique operation keys to make automations and imports safe to retry without producing duplicate actions or records.

How to Repair Home Assistant After Its Database Volume Fills Up
Recover from a full Recorder volume without deleting evidence first, then reduce growth and prove history and automations survive restart.

