新しく接続したディスクのパーティションを、既存のディスクと同じようにしたい場合には、gpart backup/restoreを使います。
# gpart show
=> 40 7814037088 ada0 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 3907029088 ada2 GPT (1.8T)
40 3907029088 - free - (1.8T)
=> 40 3907029088 ada3 GPT (1.8T)
40 3907029088 - free - (1.8T)
=> 40 3907029088 ada4 GPT (1.8T)
40 3907029088 - free - (1.8T)
=> 40 3907029088 ada5 GPT (1.8T)
40 3907029088 - free - (1.8T)
#
ada0とada1は4TB、ada2〜ada5は2TBのHDDです。単純にada1のパーティション情報をada2に書き込んでみるとエラーになります。
# gpart backup ada1 | gpart restore -F ada2
gpart: size '7814031360': Invalid argument
# gpart backup ada1
GPT 152
1 efi 40 1600 efiboot1
2 freebsd-boot 1640 1024 gptboot1
3 freebsd-zfs 4096 7814031360 disk1
#
3つ目のパーティションはこのディスクには大きすぎるので、3つ目のパーティション情報以外を書き込むことにします。
# gpart backup ada1 | head -3
GPT 152
1 efi 40 1600 efiboot1
2 freebsd-boot 1640 1024 gptboot1
# gpart backup ada1 | head -3 | gpart restore -F ada2
# gpart show ada1 ada2
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 3907029088 ada2 GPT (1.8T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 3907026464 - free - (1.8T)
#
そして3つ目のパーティションはコマンドで陽にして指定して作ります。
# gpart add -t freebsd-zfs -b 4096 ada2
ada2p3 added
# gpart show ada1 ada2
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 3907029088 ada2 GPT (1.8T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 3907025024 3 freebsd-zfs (1.8T)
3907029120 8 - free - (4.0K)
#
ラベルはないので、これも指定します。
# gpart show -l ada1 ada2
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efiboot1 (800K)
1640 1024 2 gptboot1 (512K)
2664 1432 - free - (716K)
4096 7814031360 3 disk1 (3.6T)
7814035456 1672 - free - (836K)
=> 40 3907029088 ada2 GPT (1.8T)
40 1600 1 (null) (800K)
1640 1024 2 (null) (512K)
2664 1432 - free - (716K)
4096 3907025024 3 (null) (1.8T)
3907029120 8 - free - (4.0K)
# gpart modify -i 1 -l efiboot2 ada2
ada2p1 modified
# gpart modify -i 2 -l gptboot2 ada2
ada2p2 modified
# gpart modify -i 3 -l disk2 ada2
ada2p3 modified
# gpart show -l ada1 ada2
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efiboot1 (800K)
1640 1024 2 gptboot1 (512K)
2664 1432 - free - (716K)
4096 7814031360 3 disk1 (3.6T)
7814035456 1672 - free - (836K)
=> 40 3907029088 ada2 GPT (1.8T)
40 1600 1 efiboot2 (800K)
1640 1024 2 gptboot2 (512K)
2664 1432 - free - (716K)
4096 3907025024 3 disk2 (1.8T)
3907029120 8 - free - (4.0K)
#
gpart backup/retoreを使うと、/dev/gptにディスクが現れないので、再起動します
# ls /dev/gpt
disk0 efiboot0 gptboot0
disk1 efiboot1 gptboot1
# reboot
…
# ls /dev/gpt
disk0 efiboot0 gptboot0
disk1 efiboot1 gptboot1
#