{"id":694,"date":"2023-07-04T21:55:30","date_gmt":"2023-07-04T21:55:30","guid":{"rendered":"http:\/\/blog.ignoranthack.me\/?p=694"},"modified":"2023-07-04T21:58:33","modified_gmt":"2023-07-04T21:58:33","slug":"a-bit-of-zfs-faff-on-ubuntu-22-04","status":"publish","type":"post","link":"http:\/\/blog.ignoranthack.me\/?p=694","title":{"rendered":"A bit of #ZFS Faff on Ubuntu 22.04"},"content":{"rendered":"\n<p>I&#8217;m a ZFS on Root guy, so I get to be my own support on most days.  Today, I wanted to see how hard common tasks that I once did on #FreeBSD with ZFS tools would be. Namely, I wanted to pluck out a 250G drive from my Root Pool and replace it with a 1TB drive, live, with a minimal of fuss.<\/p>\n\n\n\n<p>I think I was successful, and it wasn&#8217;t that hard.  I did have to <a href=\"https:\/\/fedoramagazine.org\/managing-partitions-with-sgdisk\/\">teach<\/a> myself a bit about how sgdisk(8) works and what not to do, but in the end I came up with the following bit of notes that seemed to work for me.  A lot of my previous ZFS experience was applicable here, but I have spent decades being oblivious to the magic of Grub and boot loaders on x86 Linux ports. <\/p>\n\n\n\n<p>Thank you to the fine folks over at <a href=\"https:\/\/openzfs.github.io\/openzfs-docs\/Getting%20Started\/Ubuntu\/Ubuntu%2022.04%20Root%20on%20ZFS.html\">OpenZFS<\/a> for having a VERY easy to follow 22.04 install guide, which I definitely stole things from.  <\/p>\n\n\n\n<p>The following is just my notes and if you see some things that will bite me, let me know on <a href=\"https:\/\/infosec.exchange\/@seanwbruno\">Mastodon<\/a>, you can find me over at infosec.exchange<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># sgdisk -p \/dev\/sda\nDisk \/dev\/sda: 781422768 sectors, 372.6 GiB\nModel: MK0400GCTZA     \nSector size (logical\/physical): 512\/512 bytes\nDisk identifier (GUID): DFE9708A-6076-4E24-B683-64A286A1E751\nPartition table holds up to 128 entries\nMain partition table begins at sector 2 and ends at sector 33\nFirst usable sector is 34, last usable sector is 781422734\nPartitions will be aligned on 2048-sector boundaries\nTotal free space is 2014 sectors (1007.0 KiB)\n\nNumber  Start (sector)    End (sector)  Size       Code  Name\n   1            2048         1050623   512.0 MiB   EF00  EFI system partition\n   2         1050624         5244927   2.0 GiB     8200  Linux swap\n   3         5244928         9439231   2.0 GiB     BE00  Solaris boot\n   4         9439232       781422734   368.1 GiB   BF00  Solaris root\n# sgdisk -p \/dev\/sdb\nDisk \/dev\/sdb: 537234768 sectors, 256.2 GiB\nModel: Crucial_CT275MX3\nSector size (logical\/physical): 512\/512 bytes\nDisk identifier (GUID): AC04D23F-E1FD-4B88-9880-B9679DCF4BBD\nPartition table holds up to 128 entries\nMain partition table begins at sector 2 and ends at sector 33\nFirst usable sector is 34, last usable sector is 537234734\nPartitions will be aligned on 2048-sector boundaries\nTotal free space is 2014 sectors (1007.0 KiB)\n\nNumber  Start (sector)    End (sector)  Size       Code  Name\n   1            2048         1050623   512.0 MiB   EF00  EFI System Partition\n   2         1050624         5244927   2.0 GiB     8200  \n   3         5244928         9439231   2.0 GiB     BE00  \n   4         9439232       537234734   251.7 GiB   BF00\n---------------------------------------------------------------------------------\n   \n# sgdisk -d 1 \/dev\/nvme0n1\n# sgdisk -n 1:2048:1050623 -t 1:ef00 -c1:\"EFI system partition\" \/dev\/nvme0n1\n# sgdisk -n 2:1050624:5244927 -t 2:8200 -c2:\"Linux swap\" \/dev\/nvme0n1\n# sgdisk -n 3:5244928:9439231 -t 3:be00 -c3:\"Solaris boot\" \/dev\/nvme0n1\n# sgdisk -N 4 -t 4:bf00 -c4:\"Solaris root\" \/dev\/nvme0n1\n\n# sgdisk -p \/dev\/nvme0n1\nDisk \/dev\/nvme0n1: 500118192 sectors, 238.5 GiB\nModel: WDC WDS256G1X0C-00ENX0                  \nSector size (logical\/physical): 512\/512 bytes\nDisk identifier (GUID): F2E3AFF0-5C0C-4A03-BE8C-83EC2DEDB914\nPartition table holds up to 128 entries\nMain partition table begins at sector 2 and ends at sector 33\nFirst usable sector is 34, last usable sector is 500118158\nPartitions will be aligned on 2048-sector boundaries\nTotal free space is 2014 sectors (1007.0 KiB)\n\nNumber  Start (sector)    End (sector)  Size       Code  Name\n   1            2048         1050623   512.0 MiB   EF00  EFI system partition\n   2         1050624         5244927   2.0 GiB     8200  Linux swap\n   3         5244928         9439231   2.0 GiB     BE00  Solaris boot\n   4         9439232       500118158   234.0 GiB   BF00  Solaris root\n--------------------------------------------------------------------------------\n# cat \/proc\/mdstat \nPersonalities : &#91;raid1] &#91;linear] &#91;multipath] &#91;raid0] &#91;raid6] &#91;raid5] &#91;raid4] &#91;raid10] \nmd127 : active raid1 sdb2&#91;0] sda2&#91;1]\n      2094080 blocks super 1.2 &#91;2\/2] &#91;UU]\n      \nunused devices: &lt;none&gt;\nroot@hattie:~# mdadm --manage \/dev\/md127 --fail \/dev\/sda2\nmdadm: set \/dev\/sda2 faulty in \/dev\/md127\nroot@hattie:~# mdadm --manage \/dev\/md127 --remove \/dev\/sda2\nmdadm: hot removed \/dev\/sda2 from \/dev\/md127\nroot@hattie:~# cat \/proc\/mdstat \nPersonalities : &#91;raid1] &#91;linear] &#91;multipath] &#91;raid0] &#91;raid6] &#91;raid5] &#91;raid4] &#91;raid10] \nmd127 : active raid1 sdb2&#91;0]\nex      2094080 blocks super 1.2 &#91;2\/1] &#91;U_]\n      \nunused devices: &lt;none&gt;\n# mdadm --manage \/dev\/md127 --add \/dev\/nvme0n1p2\nmdadm: added \/dev\/nvme0n1p2\nroot@hattie:~# cat \/proc\/mdstat \nPersonalities : &#91;raid1] &#91;linear] &#91;multipath] &#91;raid0] &#91;raid6] &#91;raid5] &#91;raid4] &#91;raid10] \nmd127 : active raid1 nvme0n1p2&#91;2] sdb2&#91;0]\n      2094080 blocks super 1.2 &#91;2\/1] &#91;U_]\n      &#91;===&gt;.................]  recovery = 18.7% (392832\/2094080) finish=0.2min speed=130944K\/sec\n      \nunused devices: &lt;none&gt;\n-------------------------------------------------------------------------------------\n# zpool status bpool\n  pool: bpool\n state: ONLINE\n  scan: scrub repaired 0B in 00:00:01 with 0 errors on Sun Jul  2 00:00:02 2023\nconfig:\n\n\tNAME                                      STATE     READ WRITE CKSUM\n\tbpool                                     ONLINE       0     0     0\n\t  mirror-0                                ONLINE       0     0     0\n\t    2ae2089b-40b0-1944-9c6d-a436c8ba3295  ONLINE       0     0     0\n\t    b2bbd1e6-7b68-4d90-bf9c-f6d6bb13daac  ONLINE       0     0     0\n\n# ls -l \/dev\/disk\/by-partuuid\/\ntotal 0\nlrwxrwxrwx 1 root root 10 Jul  4 12:59 0240b02b-5a83-45f7-b209-de850d66cc48 -&gt; ..\/..\/sda4\nlrwxrwxrwx 1 root root 10 Jul  4 13:01 26050a01-81fa-df4c-bb64-b825072a4cb5 -&gt; ..\/..\/sdb2\nlrwxrwxrwx 1 root root 15 Jul  4 13:04 277066fd-6087-45d3-bc21-36e2be379a7a -&gt; ..\/..\/nvme0n1p2\nlrwxrwxrwx 1 root root 10 Jul  4 13:01 2ae2089b-40b0-1944-9c6d-a436c8ba3295 -&gt; ..\/..\/sdb3\nlrwxrwxrwx 1 root root 15 Jul  4 13:00 76e8a1b2-3877-4732-8b6b-2c4f47615733 -&gt; ..\/..\/nvme0n1p4\nlrwxrwxrwx 1 root root 10 Jul  4 12:59 83437572-9020-4945-8354-47d99f2de483 -&gt; ..\/..\/sda2\nlrwxrwxrwx 1 root root 15 Jul  4 13:00 86c776d9-9aa6-47de-8d45-26dc8833cea8 -&gt; ..\/..\/nvme0n1p3\nlrwxrwxrwx 1 root root 10 Jul  4 13:01 8a0ac60b-20ed-4bde-a27d-dd4f4160fa29 -&gt; ..\/..\/sdb1\nlrwxrwxrwx 1 root root 15 Jul  4 13:00 a963a8f4-3765-477c-bc08-6ea53f71b22b -&gt; ..\/..\/nvme0n1p1\nlrwxrwxrwx 1 root root 10 Jul  4 12:59 b2bbd1e6-7b68-4d90-bf9c-f6d6bb13daac -&gt; ..\/..\/sda3\nlrwxrwxrwx 1 root root 10 Jul  4 12:59 d8132cf7-b5f7-4721-8340-3ce42d4b918e -&gt; ..\/..\/sda1\nlrwxrwxrwx 1 root root 10 Jul  4 13:01 e70d10dd-f1bd-f345-b5a9-e285acd26d8a -&gt; ..\/..\/sdb4\n\n# zpool replace bpool \/dev\/disk\/by-partuuid\/b2bbd1e6-7b68-4d90-bf9c-f6d6bb13daac \/dev\/disk\/by-partuuid\/86c776d9-9aa6-47de-8d45-26dc8833cea8\n# zpool status\n  pool: bpool\n state: ONLINE\nstatus: One or more devices is currently being resilvered.  The pool will\n\tcontinue to function, possibly in a degraded state.\naction: Wait for the resilver to complete.\n  scan: resilver in progress since Tue Jul  4 13:08:52 2023\n\t305M scanned at 102M\/s, 125M issued at 41.6M\/s, 305M total\n\t121M resilvered, 40.89% done, 00:00:04 to go\nconfig:\n\n\tNAME                                        STATE     READ WRITE CKSUM\n\tbpool                                       ONLINE       0     0     0\n\t  mirror-0                                  ONLINE       0     0     0\n\t    2ae2089b-40b0-1944-9c6d-a436c8ba3295    ONLINE       0     0     0\n\t    replacing-1                             ONLINE       0     0     0\n\t      b2bbd1e6-7b68-4d90-bf9c-f6d6bb13daac  ONLINE       0     0     0\n\t      86c776d9-9aa6-47de-8d45-26dc8833cea8  ONLINE       0     0     0  (resilvering)\n\nerrors: No known data errors\n-------------------------------------------------------------------------------------------------\n\n~# update-initramfs -c -k all\nupdate-initramfs: Generating \/boot\/initrd.img-5.19.0-45-generic\ncp: cannot stat '\/lib\/firmware\/updates\/amdgpu': No such file or directory\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/ip_discovery.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/vega10_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sienna_cichlid_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/navi12_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/psp_13_0_10_sos.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/aldebaran_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/aldebaran_sjt_mec2.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/aldebaran_sjt_mec.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_imu.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_rlc.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_mec.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_me.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_pfp.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_0_toc.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sdma_6_0_3.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sienna_cichlid_mes1.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sienna_cichlid_mes.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/navi10_mes.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_mes1.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_mes.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/smu_13_0_10.bin for module amdgpu\nI: The initramfs will attempt to resume from \/dev\/md127\nI: (UUID=514a7d66-c1d7-41c2-86e1-b072f30e2dd6)\nI: Set the RESUME variable to override this.\nupdate-initramfs: Generating \/boot\/initrd.img-5.19.0-46-generic\ncp: cannot stat '\/lib\/firmware\/updates\/amdgpu': No such file or directory\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/ip_discovery.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/vega10_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sienna_cichlid_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/navi12_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/psp_13_0_10_sos.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/aldebaran_cap.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/aldebaran_sjt_mec2.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/aldebaran_sjt_mec.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_imu.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_rlc.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_mec.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_me.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_pfp.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_0_toc.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sdma_6_0_3.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sienna_cichlid_mes1.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/sienna_cichlid_mes.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/navi10_mes.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_mes1.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/gc_11_0_3_mes.bin for module amdgpu\nW: Possible missing firmware \/lib\/firmware\/amdgpu\/smu_13_0_10.bin for module amdgpu\nI: The initramfs will attempt to resume from \/dev\/md127\nI: (UUID=514a7d66-c1d7-41c2-86e1-b072f30e2dd6)\nI: Set the RESUME variable to override this.\n\n--------------------------------------------------------------------------------------\n# grub-install --target=x86_64-efi --efi-directory=\/boot\/efi \\\n    --bootloader-id=ubuntu --recheck --no-floppy\nInstalling for x86_64-efi platform.\nInstallation finished. No error reported.<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m a ZFS on Root guy, so I get to be my own support on most days. Today, I wanted to see how hard common tasks that I once did on #FreeBSD with ZFS tools would be. Namely, I wanted to pluck out a 250G drive from my Root Pool and replace it with a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_share_on_mastodon":"1"},"categories":[2,10,9],"tags":[],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=\/wp\/v2\/posts\/694"}],"collection":[{"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=694"}],"version-history":[{"count":3,"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=\/wp\/v2\/posts\/694\/revisions"}],"predecessor-version":[{"id":697,"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=\/wp\/v2\/posts\/694\/revisions\/697"}],"wp:attachment":[{"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=694"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.ignoranthack.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}