Best practice moving from sd-card to ssd raspberry

Today I wanted to do a fresh install of Home-Assistant. I did not succeed :frowning:

So now I first installed Raspbian Lite and did a manual installation of home-assistant as described here : https://www.home-assistant.io/docs/installation/raspberry-pi/

So I if you did not succeed yet you could try this route.

My SD card died a week ago. rPi stopped booting.
I bought a new SD card and tried to reinstall everything, but realized that it is too hard.
The old SD card was not readable from the PC. But it was from rPi. It just was in a read-only mode. This is how they die.

I created a backup and restored it on 128Gb SSD. Then ran sudo fsck -v -p /dev/sda1 and it found and reset the dirty bit on the sda1 partition. sda2 partition was fine.
Then it booted from SSD without a problem. HA UI works much faster. History and Logbook load in less than one second. Home, map and cameras appear immediately.

Write speed:

$ dd if=/dev/zero of=/tmp/test1.img bs=300M count=1 oflag=dsync
1+0 records in
1+0 records out
314572800 bytes (315 MB, 300 MiB) copied, 9.20859 s, 34.2 MB/s

Latency:

$ dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
1000+0 records in
1000+0 records out
512000 bytes (512 kB, 500 KiB) copied, 2.48363 s, 206 kB/s

So, if your SD card died and you do not have a backup, you may still be able to restore your installation.
I would recommend to switch to a cheap SSD.

3 Likes

Running home-assistant on docker on Synology Nas now. Works great.

1 Like

Hi, could you let me know how you restored backup to ssd?
Iˇve tried connect my ssd to rpi usb slot but rpi did not find it :frowning:
Shall I do any additional settings?

1 Like

Honestly the best way (not the fastest) is to do a fresh install and copy the files that you need back 1 by 1 and add all the components, sensors etc back from scratch. Because HA gets updated very very frequently there is a lot of unused files that remain etc (or corrupt files etc). I have had many problems fixed just because of a fresh install.

I know it is not the fastest, but you asked for the best way. I sincerely believe that this is the best way. As is with computers and phones. Installing Windows from scratch is always better than to restore a backup.

But then again it is totally up to you. If I were you I’d take a friday or saturday and work through this. I have a pretty large setup and it takes me about 2 evenings to get a fresh install going. This will take considerably less time on smaller setups.

2 Likes

I have Hassbian installation on pi3b+.
First, created a backup on a larger flash drive. Then used Etcher on PC to flash it to the SSD.
To create a backup I followed these: https://pimylifeup.com/backup-raspberry-pi/
https://superuser.com/questions/1097210/clone-only-space-in-use-from-hard-disk
My steps:

  1. Flash Hassbian on a new ssd using Etcher and boot rPI from it.
  2. Mount your SSD and old SD card on rPI. Use an External Hard Drive Enclosure and a USB card reader, these commands are useful:
dmesg      - system log about drives, you need to find your flash drive.
lsusb
sudo lsblk -o UUID,NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,MODEL
sudo blkid

E.g. sda1 is your SSD.

sudo mkdir /mnt/bak
sudo mount /dev/sda1 /mnt/bak
ls /mnt/PIHDD
  1. Create the backup. Be careful with disks’ and partitions’ names! Yours may be different, and I may have a mistake here.
    E.g. mmcblk0 is your old SD card
sudo mkdir /mnt/bak/ha_backup
cd /mnt/bak/ha_backup
sudo dd if=/dev/mmcblk0 of=backup.img bs=64K conv=noerror,sync status=progress
  1. If you plan to flash on the PC then dismount the backup disk now. If on rPI - then after the flashing.
lsof /mnt/bak           - check that it is not used.
sudo rmdir /mnt/bak
  1. Flash the image from the flash drive to SSD using Etcher on a PC. You can also restore the backup right on the rPI (do step 4 later then):
sudo dd if=/mnt/bak/ha_backup/backup.img of=/dev/mmcblk1 bs=64K
  1. Plug SSD to rPI and check its health. You may need to reset the readonly bit if SD card was not functional. Options depend on the file system.
sudo fsck -v -p /dev/sda1
  1. Turn off rPI. Remove new SD card and unplug USB card reader from rPI. Only plug the SSD and boot from it.
2 Likes

mgluk, you did this with a USB ssd, or an ssd with an x850 expansion board?

I am looking to do the same just need to know what parts I need to experiment with.

bump…

I have done some more research and it seems on my pi3b+ this should work as expected. My understanding is that setting the boot bit is only necessary on the non-"+" models. Flashing a bootable image with etcher should just work like an sd… i hope.

I’m about to pull the trigger on a startech usb3-sata3 adapter and a kingston 120gb ssd for this. Any advice/pointers are welcome.

I updated my previous post. I used SanDisk SSD Plus 120GB SSD.

With hassos, hasbian, or other? From what I’ve been reading, it seems this may not actually work for me as I’m running hassos. I’ve seen there is a usb boot compatible image of hassos here, and that may be the closest method to what I was after thus far:

I’m still unclear on the differences between running raspbian+hassio as outlined in this thread:

…versus just using that usb bootable image instead. Either way, I have to learn how to transfer my configuration to the new system.

I do not think it matters whether you have HASSIO or Hassbian. You just need to boot from something to run my steps. You also can use a different method to create a backup, e.g. on a PC. But anyway you need to fix a file system corruption on the restored image.

mgluk, I may well not understand it correctly. I have read a lot of info about how hassos cannot be made usb bootable… devs only intend to allow moving the database to ssd… etc. All the tut’s on installing hassio on ssd seem to make use of either resin-os or hassbian, then you install docker, then install hassio in docker (or something like that?). Some folks use scripts to do it, some do it manually.

I’m not sure on how that goes as I’ve never done it that way; my previous instance was just a hassio (hassos based) image for rpi flashed on an sdcard… plug it in, turn it on, and lovelace pops up to guide you through… no terminal commands to install docker, hassio, etc. OS updates are done through the gui (vs having to ssh in to use apt-get… or making a cron job, etc). This is the ‘noob’ level system I’m talking about.

Well, it works! I’ve got hassos running on my pi3b+ with no sd card:

Hi, I managed to get mine restored to an SSD and it seems to work fine, the only problem is that i can no longer update my hassio. I checked the File System and my dev/root is full. My SSD is 120gb so i am guessing the file system never expanded to use all the space. Is there anyway to expand it? Thanks.

I’m not sure there is a way after it is installed to reallocate missing drive space. How did you go about ‘restoring’? The recommended method to upgrade to ssd is with a ‘fresh install’ of hassos 3.5rc… then you restore your data from a snapshot file (which should be taken before the upgrade).

Since some folks have had issues with snapshot restores, I would also recommend first attempting to restore a full snapshot on your existing system to make sure it works before attempting to upgrade to an ssd.

This is what i did:

  1. Full snapshot of system running on SD card
  2. Install HASSIO 3.5 to ssd using Etcher (i enabled the unsafe mode just incase)
  3. Hassio booted up, created a user and made a snapshot (just so i could find the snapshot folder).
  4. I uploaded my SD Card snapshot and did a full restore.
  5. Hassio booted up fine.

As i mentioned earlier i wasnt able to update afterwards even though everything seemed to be working. It was nothing to do with the hd space as i orginally thought, it turned out to be the http entry in my config file (legacy api password i think). I removed the hole thing and it finally updated (i guess it had been depreciated).

So far i have been running it on the SSD for 2 weeks and everything works much better, logs open quicker, reboots are fast etc and i feel safer that its not suddenl going to die on me.

1 Like

Any problems after HassOS reboot or power cut?

No issues after reboot or power loss so far.

1 Like

Your SSD type? And USB adapter?

Adapter

SSD

Is it a 32GB or 64GB? I bought a 64GB msata wuth a X850 board and when I use etcher to load Hassio onto it I get an error that my drive is too large. I also noticed that when it writes to the SSD it uploads between 9mb/s and 1mb/s (goes up and down never stable) and then stops for like a few seconds then uploads again…is it normal that it stops and goes like this (etcher)? It takes forever to load the Hassio image…

Also do I need to connect the 5V on the X850? I noticed it gets power from the USB so is it needed?

I get this error after etcher finishes loading the image:
2020-01-18_19-15-32

So etcher keeps destroying my ssd, I have to always use disk management to revive it…