Running HA OS from a USB HD on a Raspberry Pi

I have seen several articles about running HA from an SSD, but what about a good’ole spinning rust HD? Would that be possible? I would like to have more storage for the NVR clips and it seems that the difference in performance is not crazy.
Has it ever been done? Is the process different?
Home Assistant OS version 8.4 on Raspberry Pi 4b 4GB (currently on a 32GB SD card)

Well you laugh but the filesystem (at least in HaOS 7.x - didn’t check HaOS 8.x yet) is one from the stonehard disk age (ext4) and the used defaults (5s commit interval) is something that is even counter productive for flash storage as it increases small writes (and write amplification) which both let flash storage age faster and therefor die earlier :scream:

Guess best for you then would be talking advantage that you have a sd card already and leave the OS on it and only use the HD for storage.

Probably, the process will be exactly the same as if you use a external flash storage.

Common Tasks - Operating System # using-external-data-disk

I will tinker with it and report back. I would not mind trading off speed with durability: at this point HA is running a lot of stuff in my house.

The settings I know from HaOS (v7.x, ext4+default commit interval) will NOT HELP gain any speed. “Flushing” (writing) every 5 seconds to the sd card WILL ONLY wear out the flash cells much faster because of the write amplification* and the way flash storage works.

In the end no trade off but only 100% unnecessary lifetime loss. :frowning:

But when you have the (read only) OS on the sd card and you movee “data” to your external drive you have best of both worlds. Fast i/o performance for the system and no excessive wear on your hd :+1:


*this is because a flash works with pages. So if the system has like (only) two “sentences” worth of data to write after 5 seconds a whole (blank & bleached) page is “wasted” (worn out) for that. :-1:

And this goes on… every 5 seconds a new blank page wasted… and again… :put_litter_in_its_place: