Please also see Moving boot from one zpool to another and Adding a zroot pool to an existing system.
On my 20x HDD system at home (also known as knew), I am having a recurring problem with booting. This is also the same system mentioned in my FreeBSD Forums thread about some CAM errors.
Side note: I now think those CAM errors may be temperature related. EDIT: 2018-12-29: They were not temperature related. I think it was a faulty drive connector on the backplane.
Rather than struggle with this issue, I want to move zroot to a pair of SSDs which are both directed attached to the M/B. With this solution, I can still use ZFS, but the complexity is gone. It is then just a simple disk attached directly, no HBA involved.
HBA are great. They are great for storage, and large arrays, but I don’t want to use them for my boot.
The issue: how to move it all over.
I think I need to do this all offline, while booted from a live-thumbdrive (I will undoubtedly use mfsBSD).
The issue: what needs to be moved from the existing zpool?
Where to mount the SSDs?
There are no spare drive bays in this system. I may have to mount them inside the M/B portion of the case. The case is magnetic. Perhaps I can mount the SSDs in a 2.5″ to 3.5″ drive adaptor, and then attach that to the side of the case. I think I can do that.
The existing zpool
These are the existing zpools:
[dan@knew:~] $ zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT system 45.2T 3.36T 41.9T - 7% 7% 1.00x ONLINE - tank_data 45.2T 34.9T 10.3T - 16% 77% 1.00x ONLINE - tank_fast 408G 492K 408G - 0% 0% 1.00x ONLINE -
Only the system zpool is relevant here. That is the original zpool and is the one from which the system boots.
Here are the filesystems (with some omissions of candidates not suitable for moving)
[dan@knew:~] $ zfs list -r system NAME USED AVAIL REFER MOUNTPOINT system 2.56T 30.8T 329K / system/bootenv 329K 30.8T 329K none system/root 612K 30.8T 612K /root system/rootfs 15.6G 30.8T 15.6G legacy system/tmp 2.93M 30.8T 2.93M /tmp system/usr 412G 30.8T 329K /usr system/usr/home 2.22G 30.8T 329K /usr/home system/usr/home/dan 2.22G 30.8T 2.22G /usr/home/dan system/usr/local 883M 30.8T 883M /usr/local system/usr/obj 1.74G 30.8T 1.74G /usr/obj system/usr/ports 1.80G 30.8T 1.80G /usr/ports system/usr/ports/distfiles 256K 30.8T 256K /usr/ports/distfiles system/usr/src 1.82G 30.8T 1.82G /usr/src system/var 714M 30.8T 329K /var system/var/audit 366K 30.8T 366K /var/audit system/var/empty 329K 30.8T 329K /var/empty system/var/log 713M 30.8T 713M /var/log system/var/tmp 457K 30.8T 457K /var/tmp [dan@knew:~] $
/usr/home is not moving.
Here is a fresh install of FreeBSD 11 on zroot:
$ zfs list NAME USED AVAIL REFER MOUNTPOINT zroot 462M 5.22T 88K /zroot zroot/ROOT 460M 5.22T 88K none zroot/ROOT/default 460M 5.22T 460M / zroot/tmp 96K 5.22T 96K /tmp zroot/usr 444K 5.22T 88K /usr zroot/usr/home 180K 5.22T 180K /usr/home zroot/usr/ports 88K 5.22T 88K /usr/ports zroot/usr/src 88K 5.22T 88K /usr/src zroot/var 588K 5.22T 88K /var zroot/var/audit 88K 5.22T 88K /var/audit zroot/var/crash 88K 5.22T 88K /var/crash zroot/var/log 148K 5.22T 148K /var/log zroot/var/mail 88K 5.22T 88K /var/mail zroot/var/tmp 88K 5.22T 88K /var/tmp
Again, I won’t move /usr/home.
Here are the root directory entries:
$ ls / COPYRIGHT dev home media proc sbin usr bin entropy lib mnt rescue sys var boot etc libexec net root tmp zroot
I cannot use copy | receive here because they are not distinct file systems.
I think I’m just going to have to do this as I go along…
What size SSD?
A recent FreeBSD 11.1 install takes up about 460MB:
[dan@r710-01 ~]$ zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zroot 5.39T 464M 5.39T - 0% 0% 1.00x ONLINE - [dan@r710-01 ~]$
Let’s have some room and say we want a minimum of a 1GB SSD. But realistically speaking, it’ll be more like 40-100GB.
Edit 2018-12-29
Sadly, I did not record what I did. Now I am set to repeat the process on slocum.