# gpart restore -> Invalid argument



## amnixed (Jul 3, 2020)

Hello All,

I'm trying to restore my boot mirror (2 identical USB sticks) using `gpart backup` and `gpart restore` but getting an error.


```
# gpart list da0
Geom name: da0
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 31260638
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da0p1
   Mediasize: 524288 (512K)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   efimedia: HD(1,GPT,2036be0c-1fcb-11ea-aa95-00e081b26276,0x22,0x400)
   rawuuid: 2036be0c-1fcb-11ea-aa95-00e081b26276
   rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
   label: (null)
   length: 524288
   offset: 17408
   type: freebsd-boot
   index: 1
   end: 1057
   start: 34
2. Name: da0p2
   Mediasize: 16004898816 (15G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 544768
   Mode: r1w1e1
   efimedia: HD(2,GPT,20a65a70-1fcb-11ea-aa95-00e081b26276,0x428,0x1dcfbb0)
   rawuuid: 20a65a70-1fcb-11ea-aa95-00e081b26276
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 16004898816
   offset: 544768
   type: freebsd-zfs
   index: 2
   end: 31260631
   start: 1064
Consumers:
1. Name: da0
   Mediasize: 16005464064 (15G)
   Sectorsize: 512
   Mode: r1w1e2

# gpart backup da0 > da0.backup

# cat da0.backup
GPT 128
1   freebsd-boot       34     1024 
2    freebsd-zfs     1064 31259568 

# gpart list da1
gpart: No such geom: da1.

# gpart restore da1 < da0.backup
gpart: start '34': Invalid argument
```

What am I doing wrong?


----------



## Zvoni (Jul 3, 2020)

Is your second USB-Stick really da1?


----------



## George (Jul 3, 2020)

amnixed said:


> # gpart list da1 gpart: No such geom: da1.


This is quite normal if there is no partitioning scheme (GPT, MBR, ...) on the disk, yet. You can see these disks here: `sysctl kern.disks`, or with `geom disk list da1`.

But I am not sure why you can't start at sector 34..


----------



## SirDice (Jul 3, 2020)

Might be due to 4K alignment. It starts at 40 nowadays.


----------



## amnixed (Jul 3, 2020)

Zvoni said:


> Is your second USB-Stick really da1?


Yes, when I plug it in the already running system, it is reported as da1.


----------



## amnixed (Jul 3, 2020)

Elazar said:


> This is quite normal if there is no partitioning scheme (GPT, MBR, ...) on the disk, yet. You can see these disks here: `sysctl kern.disks`, or with `geom disk list da1`.



Right. I wanted to show that there was no partitioning on the stick before I tried to restore from backup.


----------



## amnixed (Jul 3, 2020)

SirDice said:


> Might be due to 4K alignment. It starts at 40 nowadays.


If that's the case, it seems to defeat the purpose of backup/restore, doesn't it?


----------



## Mjölnir (Jul 3, 2020)

Did you also try with `gpart restore -F`?


----------



## George (Jul 3, 2020)

GPT needs 33 sectors. Sector 34 should be usable. Maybe try by hand with `gpart add -t freebsd-boot -b 34 ...`.

There is a similar thread, maybe of interest.  Solved - gpart add -b 2048 starts partition at LBA 2079 ... forums.freebsd.org › ... › Storage


----------



## amnixed (Jul 4, 2020)

mjollnir said:


> Did you also try with `gpart restore -F`?



Just tried it - didn't work.

I got a pair of 32 GB USB sticks and added one of them to the existing 16 GB stick to restore the mirror:

`# zpool status
  pool: freenas-boot
 state: ONLINE
  scan: resilvered 3.37G in 0 days 00:19:14 with 0 errors on Sat Jul  4 01:24:34 2020
config:

    NAME        STATE     READ WRITE CKSUM
    freenas-boot  ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        da0p2   ONLINE       0     0     0
        da1p2   ONLINE       0     0     0

errors: No known data errors`

The mirror now consists of 1 16GB and 1 32GB sticks. As SirDice noted on the new stick da1p1 starts at 40 while on the old 16GB stick da0p1 starts at 34.


----------



## Mjölnir (Jul 4, 2020)

This is just guessing: grep dmesg for any USB _quirks_ activated on this stick.  There might be some subtle consequence, i.e. the stick refuses to write before sector 40.


----------

