2026/01/01(木)geom label のメモ

geom ラベルの操作がよくわからないので確認した。

geom part modify や geom パーティション作成の際の create にラベルを指定した場合はラベルがディスクに書き込まれる。glabel や geom label を使った場合はディスクに書き込まれない。OS上のgeomデータとして保持されるので、これは揮発する。という事らしい。

自分の理解では、ラベルの操作は3つのコマンドで実施できる。

  • glabel
  • geom label
  • gpart
    • create -l LABEL
    • modify -l LABEL

それぞれラベルの付き方や見え方が異なるみたいだ。

  • /dev/ 以下での見え方が異なる。
  • geom 関連コマンド

GEOMのラベルと GUID Partition のラベルをないまぜにとらえてしまっているのか?

gpart(8) の label の説明がこれ。GUID Partition のメタデータを使ってラベルを付けている。

-l label The label attached to the partition. This option is only valid when used on partitioning schemes that support partition labels.

glabel(8) の説明はこれ。GPT (= GUID Partition) だと思われる。

Support for partition metadata is implemented for:

  • GPT labels (directory /dev/gpt/).
  • GPT UUIDs (directory /dev/gptid/).

geom label は glabel っぽい。

geom(8) の説明。これっぽい。ラベルを付与するときに create サブコマンドを使うとデバイスには書き込まれない。label サブコマンドで作るとデバイスに書き込まれる。

create Create temporary label name for the given provider. This is the
“manual” method. The kernel module geom_label.ko will be loaded if it is not loaded already.
label Set up a label name for the given provider. This is the
“automatic” method, where metadata is stored in a provider's last sector. The kernel module geom_label.ko will be loaded if it is not loaded already.

動かしてみる

ada6p1 にラベルを付けてみる。初期状態。gptid だけ付与されている。

Geom name: ada6p1
Providers:
1. Name: gptid/074bb1ee-375d-11ed-8291-7085c2c786cd
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   secoffset: 0
   offset: 0
   seclength: 5860533088
   length: 3000592941056
   index: 0
Consumers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

glabel create で付与してみる。 geom ではラベルが付くが、gpt パーティションには書き込まれないはず。

%sudo glabel create labelc ada6p1

glabel list や geom label list だとラベルが見える .. code:

Geom name: ada6p1
Providers:
1. Name: gptid/074bb1ee-375d-11ed-8291-7085c2c786cd
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   secoffset: 0
   offset: 0
   seclength: 5860533088
   length: 3000592941056
   index: 0
Consumers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

Geom name: ada6p1
Providers:
1. Name: label/labelc
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   secoffset: 0
   offset: 0
   seclength: 5860533088
   length: 3000592941056
   index: 0
Consumers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

geom part list では label が null になっている。

%geom part list ada6
Geom name: ada6
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 5860533127
first: 40
entries: 128
scheme: GPT
Providers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   efimedia: HD(1,GPT,074bb1ee-375d-11ed-8291-7085c2c786cd,0x28,0x15d50a360)
   rawuuid: 074bb1ee-375d-11ed-8291-7085c2c786cd
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 3000592941056
   offset: 20480
   type: freebsd-zfs
   index: 1
   end: 5860533127
   start: 40
Consumers:
1. Name: ada6
   Mediasize: 3000592982016 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

glabel label で付与してみる。デバイスに書き込まれず geom ラベルが上書きされた。想定外。

Geom name: ada6p1
Providers:
1. Name: gptid/074bb1ee-375d-11ed-8291-7085c2c786cd
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   secoffset: 0
   offset: 0
   seclength: 5860533088
   length: 3000592941056
   index: 0
Consumers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

Geom name: ada6p1
Providers:
1. Name: label/labell
   Mediasize: 3000592940544 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   secoffset: 0
   offset: 0
   seclength: 5860533087
   length: 3000592940544
   index: 0
Consumers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
%geom part list ada6
Geom name: ada6
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 5860533127
first: 40
entries: 128
scheme: GPT
Providers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   efimedia: HD(1,GPT,074bb1ee-375d-11ed-8291-7085c2c786cd,0x28,0x15d50a360)
   rawuuid: 074bb1ee-375d-11ed-8291-7085c2c786cd
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 3000592941056
   offset: 20480
   type: freebsd-zfs
   index: 1
   end: 5860533127
   start: 40
Consumers:
1. Name: ada6
   Mediasize: 3000592982016 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

gpart modify, geom part modify を使うとパーティションに書き込まれる。 .. code:

%sudo gpart modify -i 1 -l "on-partition" ada6
ada6p1 modified
%geom part list ada6
Geom name: ada6
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 5860533127
first: 40
entries: 128
scheme: GPT
Providers:
1. Name: ada6p1
   Mediasize: 3000592941056 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0
   efimedia: HD(1,GPT,074bb1ee-375d-11ed-8291-7085c2c786cd,0x28,0x15d50a360)
   rawuuid: 074bb1ee-375d-11ed-8291-7085c2c786cd
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: on-partition
   length: 3000592941056
   offset: 20480
   type: freebsd-zfs
   index: 1
   end: 5860533127
   start: 40
Consumers:
1. Name: ada6
   Mediasize: 3000592982016 (2.7T)
   Sectorsize: 512
   Stripesize: 4096
   Stripeoffset: 0
   Mode: r0w0e0

man を読んで把握した内容とは食い違うけど、

  • glabel コマンドではパーティションに書き込まない
  • gpart modify, create や geom part modify, create では書き込める

という事みたい。zpool の指定にデバイス名ではなくラベルを使いたくて確認していたけど、label だと揮発してしまうので modify を使って付与したラベルを使うのが安全そう。