HASS.IO -> transfer from SD card to SSD or USB

@truglodite I went for:

Vantec USB 3.0 to 2.5" SATA HDD Adapter with case (CB-STU3-2PB) with
Kingston 120GB A400 SSD 2.5’’ SATA 7MM 2.5-Inch SA400S37/120G

So far so good!

2 Likes

@Jefe & @godinperson, thanks… list updated.

1 Like

Do you guys notice considerable performance improvements with ssd drives? Also is it easy to move from sd card that already has hassos installed to ssd drive? Basically wondering if the juice is worth the squeeze :slight_smile:

It is faster, and it won’t corrupt. I’ve burned 4 SD cards before switching. As of moving it, you should be able to restore a snapshot. On my side, it didn’t work. I copied my configuration.yaml and that was it.

Thanks

I have actually noticed a huge improvement in speed as the database gets large. Before, my pi would run smooth for about 7days (about 0.2 load average), then load averages would shoot way up to 1.5+ and hass would become very sluggish. The history would take minutes to load, and some automations would be ‘missed’ presumably because the pi was too busy talking to the sd (indicated by the high load average). Since moving to ssd, my database is now 1.4GB, well over a week of data, and it still runs snappy as a fresh install. Even loading 1week history takes just seconds to display… try that on sd! …and of course I won’t have to go down that depressing road of potential sd card failures either (which was my #1 motivation to go ssd). The only downside (for now until this gets merged in a hassos release image) is the update button doesn’t work, so any updates have to be done manually or through the dev channel.

Moving from sd to ssd for me was simple. I took a full snapshot and saved it to a PC. I flashed the ssd with the pi bootable image, booted up and let hassos complete install (my adapter required adding bootcode.bin and timeout to the otp memory). Once hass finished install, I setup my admin account, logged in, installed ssh plugin with a temporary password so I could ssh in to transfer my snapshot file from the PC to “/backup” (I avoid samba wherever possible, but you can use that if you prefer). Hit refresh on the snapshot screen (snapshot now displays), then did a restore (not wipe/restore). Then the pi rebooted and all was back to normal. The restore saved all of my complex configs… SSL certs, ssh tokens, and of course configuration.yaml stuff (and all of the linked files it may reference… like sensors.yaml, customization.yaml, secrets.yaml… etc files you have linked in your configuration.yaml). Note that some features you may be using may require a reboot or 2 to get up and running fully. So don’t start over from scratch just because say your mqtt sensors show as unavailable after the first reboot… they will show up after another reboot.

3 Likes

Thank you sooo much for such a detailed response. You just convinced me to go the SSD route. I have the same issue with everything slowing down after 7 days and i am running mango db as well, so really excited about finally fixing this now.
You are running this on pi3 or on a pi4?

1 Like

You are very welcome! I am happy to promote this feature in hopes that the devs seeing interest and success among many ppl will encourage them to push this to release sooner. Fingers crossed that it gets released very soon!

I’m running a pi3b+ for now.

I would certainly not mind buying a pi4 for it, but from what I’ve seen so far nobody has tested this on a pi4 yet. AFAIK there isn’t a USB boot image available for the pi4 yet. A dev posted on github page mentioning something about pi4 USB boot having some fundamental complications that will need to be worked out. He also mentioned that pi4 may be stuck with USB 2.0 performance for some time (I guess the drivers aren’t currently ready for USB 3.0).

On the upside, I believe someone sent a pi4 to rbray not long ago… he appears to be our pointman for getting this feature released. He needed one for testing… now that he has one fingers crossed pi4 USB boot comes soon for hassos.

1 Like

Well this guy got it running on his Rpi4 by first booting of sd and then OS uses USB SSD: https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/

I have my NVME drive coming this weekend excited to migrate to pi4+try the usb boot

1 Like

Hey! great!

Next step is hassio on PI4 + SSD? hope so…

@skynet01, hope all goes well when you get around to playing with the pi4. I am not sure how hassos would have to be changed to allow pi4 usb boot. I posted before, but again to round out this post, here’s hassio pr #440:

At the top you can see this pr has been merged to the hassio dev branch, which is currently at release 3.4:

Of course, since pi4 is new and thus under heavy development, there are images for the pi4 available for testing (expand “assets”)… in particular the 32bit image can be downloaded here:

https://github.com/home-assistant/hassos/releases/download/3.4/hassos_rpi4-3.4.img.gz

It would be a fair assumption that the devs would prefer hassos usb boot to be implemented with the same install procedure as the pi3. So maybe it will just work like it does on pi3? There is at least one way to find out. :wink:

1 Like

Is your pi3 rebooting reliably now after the initial issue?

Any one teste the X825 USB SATA board for the pi4? Is it working? https://www.aliexpress.com/item/4000050043559.html?algo_pvid=23160da8-a2ba-4998-b73b-61677bc782de&algo_expid=23160da8-a2ba-4998-b73b-61677bc782de-0&btsid=24d8c0c3-a2a3-43e2-9bd2-a50e3d874109&ws_ab_test=searchweb0_0,searchweb201602_7,searchweb201603_60

@Crhass, yes it has been 100% reliable since I fixed it with the bootcode.bin file on the sd card. In fact, I was able to successfully update from 97.2 to 98.1 this morning using the web ui dashboard button.

[edit: On a related note, I was able to make my smooth running hass instance even faster by adjusting ozw logging levels (I had some energy meter plugs that were spamming the ozw log). After moving to ssd my load averages with a large database (>1GB) dropped from 1.5ish down to 0.2ish… with the tweaks to my zwave logging that is now down to 0.05ish!!! That is awesome given my not so small network of 50 or so devices (easily 200+ entities recorded). So the pi3b+ is now looking like overkill for an ‘average’ size network when paired with an ssd, LOL.

Also, based on my calcs from the past weeks usage (database grew 1GB in 7 days), my 120GB ssd should be able to handle 1 years worth of data. It would take 2 years to fill the 100GB free space, but I believe when hass purges the database it needs at least enough free space to save a copy of the database. Hence, the db should not be allowed to grow larger than 1/2 of it’s storage size.]

hello @skynet01,

i made it working, after install Hassio in a docker env.

It works but the Rpi4 (i have the 4Gb sdram version) take between 5 and 10 minutes to open/display the desktop of Raspbian Buster…lol

After it works great, i upload a snapshot with samba and restore it…all works…

If i open a chromium web browser page in Buster desktop…what a mess! the Rpi goes to 100% processor, chromium bug…not stable at all…

Perhaps i ask to much to the Rpi4…?

it should be faster on Rpi4, are you using Hassos? Or running it in docker?

In other note, I tried following the guide to have USB SSD after boot in Pi4 doesn’t seem to work…
I tried following a few guides like (https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/) . I get stuck on editing cmdline.txt but modifying cmdline.txt in /mnt/boot/ to use my newly formatted usb drive doesn’t seem to work. Upon reboot it still shows “/dev/mmcblk0p3” as the root partition. Anyone had success with this?

I got Pi4 + SSD working. Had to ditch Hassos for Raspbian but the performance is worth it. Posted a quick guide in this thread here: Rpi 4 installation

2 Likes

This sounds really promising! I’ve just had to ditch a HA-ruined SD card for the first time so anything to improve speed and reliability would be great.

You make it sounds really simple…TOO simple in fact…so can I just run my plan past you to see if you think it’ll work?

Currently running HassOS 2.12 with HA 0.98.5 on an rPI3B+.

I have a spare 250GB Crucial BX100 2.5" SSD knocking about in a non-powered Aukey USB-C enclosure which I am planning to use.

So if I…

  1. make a full snapshot backup and save this externally
  2. remove the SD card
  3. use Etcher to write the latest version of HassOS (2.12) to the SSD [EDIT: sorry, just realised I need 3.4]
  4. plug in the SSD to the Pi and power on
  5. do basic configuration, then upload and restore from my backup

… do you think it will work?

My main concerns are a) incompatibility of software/hardware and b) insufficient power to drive Pi, SSD, and my z-wave stick. Do I need a beta version of HassOS? [EDIT: as before, 3.4]

FWIW, personally I strongly considered trying to move from SD-> SSD on my Pi3+, but ended up just biting the bullet and purchasingd an Intel NUC (i5-6260u, 4GB RAM, 128GB SSD). Was about $200 on eBay. Might be a little overkill, but figured if I want to add RTSP cam feeds, or move my ZWave network off SmartThings to the NUC it would be able to handle it nicely.

Rough steps I took:

  • Backed up my config on my Pi3 & saved to local PC
  • I also made local .txt file backup copies of the config settings for Hass.io Add-On’s (Samba, DuckDNS, Configurator, SSH server [which I still haven’t gotten back working, but eh, whatever :wink: ])
  • Set static IPs via router on NUC and changed port forwarding to new NUC IP so DuckDNS would work.
  • Followed JuanMTech’s YouTube video / guide (https://www.juanmtech.com/set-up-hassio-in-docker-and-in-an-ubuntu-server/)
  • Copied the backup from local back to NUC and restored
  • Made sure I could log back into HA and then pulled the monitor, keyboard, mouse, etc. from the NUC and it runs headless in my network closet now.

Pretty much everything came right back up. Believe I had to change “ETH0” to “” in order to get Samba to work. Took a little over an hour, and I’m fairly novice and knew NOTHING about Linux/Ubuntu before starting. I’ve certainly learned there’s more than one way to successfully set this up - and not saying this is the best, it’s just what I did and is working well (knock on wood).

1 Like

Your procedure as stated should work. You may run in to 2 issues that are quick to fix.

  1. Your pi3b may not have USB boot mode enabled. To fix that you just bootup with an sd card containing raspbian with a special file. Specifically, after flashing raspbian buster lite to an sd card, add the line to the “config.txt” file on the boot partition:

program_usb_boot_mode=1

Don’t forget to save the file. Now boot the raspbian sd and upon bootup your pi3b will now have usb boot mode turned on (on the next boot up).

  1. Your USB ssd may not be compatible with uboot. To fix this you copy the “bootcode.bin” file from your ssd (this file will be there after you flash hassos 3.4 with etcher) to the root of a small sd card (formatted fat32), and leave that sd installed so it can boot your ssd. This solution of course doesn’t technically get rid of the sd card, but at least the sd is only active briefly during bootup (ssd takes over after that and none of the common sd card slowdowns will happen… the sd will last ‘forever’ as well).

If you have a full snapshot and a fried sd card, you haven’t got much to loose by trying it out. Worst case you have to buy a cheap sd card (I am using an ancient 4gb card) to do both of those 2 steps to get it rolling. I recommend having a small sd card on hand when you do this just in case… that way any painful moments can be minimized. :wink:

With all this in mind, folks who may be on the fence and thinking about waiting for their sd to crap out before moving over… you might want to rethink that strategy especially if you don’t have a second small sd card on the side. If you move to ssd before the sd fails, at least that sd can still be used if needed.

7 Likes

ajoyce, it really was that simple for me. I used the steps you propose on my rpi3b+. (This rpi model already has USB boot mode enabled.)

Here are the steps I followed:

  • Created a snapshot and copied it externally.
  • Burned HassOS 3.4 to an SSD (Crucial BX500).
  • Booted up with the SSD (no SD card inserted).
  • Restored the snapshot.

It really was that easy.

1 Like