2019/10/09
MBRパーティションとGPTパーティションの混在でgmirrorを作る→その後両方ともGPTパーティションに変更
説明の想定としては、
現在 2TB 未満のディスクを使って gmirror を構築しているが、ディスク障害によるディスク交換で将来的に 2TB を超える HDD にアップグレードを考えているため、ミラーの方肺を 2TB 以上の HDD に置き換え、その後両方とも 2TB を超える HDD に揃える。
といった状況の下で説明とする。

gmirror は MBR パーティションと GPT パーティションの混在も可能のようだが、両方ともパーティション単位で指定すること。
MBR パーティションをドライブ全体で指定してしまうと、ミラーされる側 (GPT パーティション:ここでは ada3p1) が ada3p1s1d なんて超へんてこなデバイス名になってしまう。(笑)
% gpart show ada2 ada2s1 ada3
=>      63  10485697  ada2  MBR  (5.0G)
        63  10485657     1  freebsd  [active]  (5.0G)
  10485720        40        - free -  (20K)

=>       0  10485657  ada2s1  BSD  (5.0G)
         0        16          - free -  (8.0K)
        16  10485641       4  freebsd-ufs  (5.0G)

=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

% gpart show -lp ada2 ada2s1 ada3
=>      63  10485697    ada2  MBR  (5.0G)
        63  10485657  ada2s1  (null)  [active]  (5.0G)
  10485720        40          - free -  (20K)

=>       0  10485657   ada2s1  BSD  (5.0G)
         0        16           - free -  (8.0K)
        16  10485641  ada2s1d  (null)  (5.0G)

=>      40  16777136    ada3  GPT  (8.0G)
        40  16777136  ada3p1  (null)  (8.0G)

% sudo gmirror label -v mirror0 ada2s1d
Metadata value stored on ada2s1d.
Done.

% gmirror status
          Name    Status  Components
mirror/mirror0  COMPLETE  ada2s1d (ACTIVE)

% gmirror insert -v mirror0 ada3p1
Done.

% gmirror status
          Name    Status  Components
mirror/mirror0  COMPLETE  ada2s1d (ACTIVE)
                          ada3p1 (ACTIVE)

% gmirror list mirror0
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 3646045765
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
   Mediasize: 5368647680 (5.0G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: ada2s1d
   Mediasize: 5368648192 (5.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 40448
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 2017605693
2. Name: ada3p1
   Mediasize: 8589893632 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 3326642448

% sudo mount /dev/mirror/mirror0 /mnt

% df /mnt
Filesystem          1K-blocks  Used   Avail Capacity  Mounted on
/dev/mirror/mirror0   5061568 28072 4628572     1%    /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 07:40 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 07:40 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 07:40 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 07:40 mikofuku_dd-dy_manual.pdf*

% sudo umount /mnt
更にこの後に MBR パーティションを持った小さなドライブから GPT パーティションを持った大きなドライブに入れ替える場合は、MBR の小さなドライブを remove してから GPT の大きなドライブを insert して growfs で広げる。
作業的には前途の通り。
GPTパーティションでgmirrorを作ってディスクサイズを広げてみる(GPT)



> MBR パーティションをドライブ全体で指定してしまうと、ミラーされる側 (GPT パーティション:ここでは ada3p1) が ada3p1s1d なんて超へんてこなデバイス名になってしまう。(笑)

だが、やってみるとこんなことになる。
% sudo gmirror label -v mirror0 ada2
Metadata value stored on ada2. Done. % gmirror status Name Status Components mirror/mirror0 COMPLETE ada2 (ACTIVE) % gmirror insert -v mirror0 ada3p1 Done. % gmirror status Name Status Components mirror/mirror0 COMPLETE ada2 (ACTIVE) ada3p1 (ACTIVE) % gmirror list mirror0 Geom name: mirror0 State: COMPLETE Components: 2 Balance: load Slice: 4096 Flags: NONE GenID: 0 SyncID: 1 ID: 1111266501 Type: AUTOMATIC Providers: 1. Name: mirror/mirror0 Mediasize: 5368708608 (5.0G) Sectorsize: 512 Mode: r0w0e0 Consumers: 1. Name: ada2 Mediasize: 5368709120 (5.0G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 3283235968 2. Name: ada3p1 Mediasize: 8589893632 (8.0G) Sectorsize: 512 Stripesize: 0 Stripeoffset: 20480 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 2283151022 % gmirror destroy mirror0 % % ll /dev/ada3* crw-r----- 1 root operator - 0x60 10月 9 06:16 /dev/ada3 crw-r----- 1 root operator - 0x67 10月 9 06:38 /dev/ada3p1 crw-r----- 1 root operator - 0x76 10月 9 07:43 /dev/ada3p1s1 crw-r----- 1 root operator - 0x88 10月 9 07:43 /dev/ada3p1s1d
% gpart destroy -F ada3 ada3 destroyed % ll /dev/ada3* crw-r----- 1 root operator - 0x60 10月 9 06:16 /dev/ada3

最終:2019/10/09 08:00:17 カテゴリ:雑記 
タグ:鯖管理
  - NO COMMENT -
TrackBack URL:
MBRパーティションの内容をGPTパーティションにdump/restoreを使わずにコピーする
MBR パーティションから GPT パーティションに dump | restore を使わずにコピーする方法。
どちらもパーティション単位で dd if of すれば良い。
% gpart show ada2 ada2s1 ada3
=>      63  10485697  ada2  MBR  (5.0G)
        63  10485657     1  freebsd  [active]  (5.0G)
  10485720        40        - free -  (20K)

=>       0  10485657  ada2s1  BSD  (5.0G)
         0        16          - free -  (8.0K)
        16  10485641       4  freebsd-ufs  (5.0G)

=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

% gpart show -lp ada2 ada2s1 ada3
=>      63  10485697    ada2  MBR  (5.0G)
        63  10485657  ada2s1  (null)  [active]  (5.0G)
  10485720        40          - free -  (20K)

=>       0  10485657   ada2s1  BSD  (5.0G)
         0        16           - free -  (8.0K)
        16  10485641  ada2s1d  (null)  (5.0G)

=>      40  16777136    ada3  GPT  (8.0G)
        40  16777136  ada3p1  (null)  (8.0G)

% sudo mount -v /dev/ada2s1d /mnt
/dev/ada2s1d on /mnt (ufs, local, writes: sync 2 async 0, reads: sync 3 async 0, fsid a1f99c5d0a3d3046)

% df /mnt
Filesystem   1K-blocks  Used   Avail Capacity  Mounted on
/dev/ada2s1d   5061568 28072 4628572     1%    /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 06:04 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 06:03 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 06:04 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 06:04 mikofuku_dd-dy_manual.pdf*

% sudo umount -v /mnt
/dev/ada2s1d: unmount from /mnt

% sudo dd if=/dev/ada2s1d of=/dev/ada3p1 bs=2M
2559+1 records in
2559+1 records out
5368648192 bytes transferred in 2.444914 secs (2195842973 bytes/sec)

% gpart show ada2 ada2s1 ada3
=>      63  10485697  ada2  MBR  (5.0G)
        63  10485657     1  freebsd  [active]  (5.0G)
  10485720        40        - free -  (20K)

=>       0  10485657  ada2s1  BSD  (5.0G)
         0        16          - free -  (8.0K)
        16  10485641       4  freebsd-ufs  (5.0G)

=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

% sudo mount -v /dev/ada3p1 /mnt
/dev/ada3p1 on /mnt (ufs, local, writes: sync 2 async 0, reads: sync 3 async 0, fsid a1f99c5d0a3d3046)

% df /mnt
Filesystem  1K-blocks  Used   Avail Capacity  Mounted on
/dev/ada3p1   5061568 28072 4628572     1%    /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 06:04 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 06:03 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 06:04 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 06:04 mikofuku_dd-dy_manual.pdf*

% sudo umount -v /mnt
/dev/ada3p1: unmount from /mnt
5GB の MBR パーティションを 8GB の GPT パーティションにコピーしたら 5GB になっちゃったので広げましょう。
パーティション情報的には大きくなってるので growfs だけで事足りる
% gpart show ada3
=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

% sudo growfs -N /dev/ada3p1
super-block backups (for fsck_ffs -b #) at:
 11542656, 12825152, 14107648, 15390144, 16672640

% sudo growfs /dev/ada3p1
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/ada3p1 from 5.0GB to 8.0GB? [yes/no] yes
super-block backups (for fsck_ffs -b #) at:
 11542656, 12825152, 14107648, 15390144, 16672640

% sudo mount -v /dev/ada3p1 /mnt
/dev/ada3p1 on /mnt (ufs, local, writes: sync 2 async 0, reads: sync 3 async 0, fsid a1f99c5d0a3d3046)

% df /mnt
Filesystem  1K-blocks  Used   Avail Capacity  Mounted on
/dev/ada3p1   8106676 28072 7430072     0%    /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 06:04 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 06:03 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 06:04 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 06:04 mikofuku_dd-dy_manual.pdf*

% sudo umount -v /mnt
/dev/ada3p1: unmount from /mnt

最終:2019/10/09 07:09:41 カテゴリ:雑記 
タグ:鯖管理
  - NO COMMENT -
TrackBack URL:
GPTパーティションでgmirrorを作ってディスクサイズを広げてみる(GPT)
詳細な説明は端折っているので、おおまかな流れは MBR のそれを参照してください。
gmirrorのディスクサイズを広げてみる(MBR)



GPT パーティションを gmirror で使用する場合は MBR の時のようにディスク全体を指定することが出来ません。
つまり、パーティショニングスキームが GPT の場合は MBR と違い、GPT パーティション単位でミラー設定を行わなければならない

でもなんで MBR じゃなくて GPT かって?
MBR は 2TB までのディスクしか扱えないので、それ以上を扱いたいなら GPT しかないのです…。
% gpart show -lp ada2 ada3
=>      40  10485680    ada2  GPT  (5.0G)
        40  10485680  ada2p1  (null)  (5.0G)

=>      40  16777136    ada3  GPT  (8.0G)
        40  16777136  ada3p1  (null)  (8.0G)

% sudo gmirror label -v mirror0 ada2p1
Metadata value stored on ada2p1.
Done.

% gmirror insert -v mirror0 ada3p1
Done.

% gmirror status
          Name    Status  Components
mirror/mirror0  COMPLETE  ada2p1 (ACTIVE)
                          ada3p1 (ACTIVE)

% gmirror list mirror0
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 315191848
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
   Mediasize: 5368667648 (5.0G) ←★小さい方に合わせられる
   Sectorsize: 512
   Mode: r1w1e1
Consumers:
1. Name: ada2p1
   Mediasize: 5368668160 (5.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 2366964925
2. Name: ada3p1
   Mediasize: 8589893632 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 1280267142

% sudo mount /dev/mirror/mirror0 /mnt

% df /mnt
Filesystem          1K-blocks  Used   Avail Capacity  Mounted on
/dev/mirror/mirror0   5061588 28072 4628592     1%    /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 04:32 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 04:31 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 04:32 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 04:32 mikofuku_dd-dy_manual.pdf*
今度は小さいドライブ (ada2) を外して大きなドライブ (ada4) に交換する。
MBR パーティションの時は RAID-1 パーティション (ここでは mirror0) に対して gpart resize を使用したが、GPT パーティションの場合はそれが不要になっているので gmirror resize するだけでパーティションサイズを大きく出来る。
% gmirror remove -v mirror0 ada2p1
Done.

% gmirror status
          Name    Status  Components
mirror/mirror0  COMPLETE  ada3p1 (ACTIVE)

% gmirror list mirror0
Geom name: mirror0
State: COMPLETE
Components: 1
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 1795428709
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
   Mediasize: 5368667648 (5.0G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: ada3p1
   Mediasize: 8589893632 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 1783526678

% gpart show ada4
=>      40  16777136  ada4  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

% gpart show -lp ada4
=>      40  16777136    ada4  GPT  (8.0G)
        40  16777136  ada4p1  (null)  (8.0G)

% gmirror insert -v mirror0 ada4p1
Done.

% gmirror status
          Name    Status  Components
mirror/mirror0  COMPLETE  ada3p1 (ACTIVE)
                          ada4p1 (ACTIVE)

% gmirror list mirror0
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 1795428709
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
   Mediasize: 5368667648 (5.0G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: ada3p1
   Mediasize: 8589893632 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 1783526678
2. Name: ada4p1
   Mediasize: 8589893632 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 2699217139

% sudo mount /dev/mirror/mirror0 /mnt

% df /mnt
Filesystem          1K-blocks  Used   Avail Capacity  Mounted on
/dev/mirror/mirror0   5061588 28072 4628592     1%    /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 06:39 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 06:39 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 06:39 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 06:39 mikofuku_dd-dy_manual.pdf*

% sudo umount /mnt

% gmirror resize mirror0

% gmirror list mirror0
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 1795428709
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
   Mediasize: 8589893120 (8.0G)
Sectorsize: 512 Mode: r0w0e0 Consumers: 1. Name: ada3p1 Mediasize: 8589893632 (8.0G) Sectorsize: 512 Stripesize: 0 Stripeoffset: 20480 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 1783526678 2. Name: ada4p1 Mediasize: 8589893632 (8.0G) Sectorsize: 512 Stripesize: 0 Stripeoffset: 20480 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 2699217139 % growfs -N /dev/mirror/mirror0 super-block backups (for fsck_ffs -b #) at: 11542656, 12825152, 14107648, 15390144, 16672640 % sudo growfs /dev/mirror/mirror0 It's strongly recommended to make a backup before growing the file system. OK to grow filesystem on /dev/mirror/mirror0 from 5.0GB to 8.0GB? [yes/no] yes super-block backups (for fsck_ffs -b #) at: 11542656, 12825152, 14107648, 15390144, 16672640 % sudo mount /dev/mirror/mirror0 /mnt % df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/mirror/mirror0 8106672 28072 7430068 0% /mnt % ll /mnt total 28076 drwxrwxrwx 3 root wheel - 512 10月 9 06:39 ./ drwxr-xr-x 23 root wheel - 512 10月 8 23:22 ../ drwxrwxr-x 2 root operator - 512 10月 9 06:39 .snap/ -rwxr--r-- 1 griffon wheel - 22475540 10月 9 06:39 kabe-gami.zip* -rwxr--r-- 1 griffon wheel - 6183181 10月 9 06:39 mikofuku_dd-dy_manual.pdf*
増えました。:)



ここからはダメな例とか詳細な説明とか。

ダメな例
% gpart show -lp ada2 ada3
=>      40  10485680    ada2  GPT  (5.0G)
        40  10485680  ada2p1  (null)  (5.0G)

=>      40  16777136    ada3  GPT  (8.0G)
        40  10485680  ada3p1  (null)  (5.0G)
  10485720   6291456          - free -  (3.0G)

% sudo mount /dev/ada2p1 /mnt

% ll /mnt
total 28076
drwxrwxrwx   3 root     wheel     -      512 10月  9 04:32 ./
drwxr-xr-x  23 root     wheel     -      512 10月  8 23:22 ../
drwxrwxr-x   2 root     operator  -      512 10月  9 04:31 .snap/
-rwxr--r--   1 griffon  wheel     - 22475540 10月  9 04:32 kabe-gami.zip*
-rwxr--r--   1 griffon  wheel     -  6183181 10月  9 04:32 mikofuku_dd-dy_manual.pdf*

% df /mnt
Filesystem  1K-blocks  Used   Avail Capacity  Mounted on
/dev/ada2p1   5061588 28072 4628592     1%    /mnt

% sudo umount /mnt

% sudo gmirror label -v mirror0 ada2
Metadata value stored on ada2.
Done.

% gmirror insert -v mirror0 ada3
Done.

% gmirror status
          Name    Status  Components
mirror/mirror0  COMPLETE  ada2 (ACTIVE)
                          ada3 (ACTIVE)

% ll /dev/mirror/mirror0*
crw-r-----  1 root  operator  - 0x6b 10月  9 04:34 /dev/mirror/mirror0

% sudo mount /dev/mirror/mirror0 /mnt
mount: /dev/mirror/mirror0: Invalid argument

% gmirror list
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 1623628032
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
   Mediasize: 5368708608 (5.0G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: ada2
   Mediasize: 5368709120 (5.0G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 26546643
2. Name: ada3
   Mediasize: 8589934592 (8.0G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 66523288
なんでマウントできない?と思ったら dmesg にこんなエラーが。
GEOM_MIRROR: Device mirror/mirror0 launched (1/1).
GEOM: mirror/mirror0: corrupt or invalid GPT detected.
GEOM: mirror/mirror0: GPT rejected -- may not be recoverable.
GEOM_MIRROR: Device mirror0: provider destroyed.
GEOM_MIRROR: Device mirror0 destroyed.
GEOM: ada2: the secondary GPT table is corrupt or invalid.
GEOM: ada2: using the primary only -- recovery suggested.
GEOM: diskid/DISK-01000000000000000001: the secondary GPT table is corrupt or invalid.
GEOM: diskid/DISK-01000000000000000001: using the primary only -- recovery suggested.
とりあえず gmirror destroy してから recover しておきましょう。
% gmirror destroy -v mirror0
Done.
% gpart show ada2
=>      40  10485680  ada2  GPT  (5.0G) [CORRUPT]
40 10485680 - free - (5.0G) % gpart recover ada2 ada2 recovered % gpart show ada2 => 40 10485680 ada2 GPT (5.0G) ←★CORRUPTがなくなった 40 10485680 - free - (5.0G)
つまりこれか。

FreeBSD Handbook
   18. GEOM: Modular Disk Transformation Framework
     18.3. RAID1 - Mirroring
       18.3.1. Metadata Issues
> gmirror(8) stores one block of metadata at the end of the disk. Because GPT partition schemes also store metadata at the end of the disk, mirroring entire GPT disks with gmirror(8) is not recommended. MBR partitioning is used here because it only stores a partition table at the start of the disk and does not conflict with the mirror metadata.
(和訳) gmirror(8) は、ディスクの最後に 1ブロックのメタデータを保存します。GPT パーティションスキームはディスクの最後にメタデータも保存するため、 gmirror(8) で GPT ディスク全体をミラーリングすることはお勧めしません。MBR パーティショニングは、ディスクの先頭にのみパーティションテーブルを格納し、ミラーメタデータと競合しないため、ディスク全体を使用することが出来ます。
つまりは GPT ディスクにパーティション切ってそれをミラーすればいいというわけで。
ここで注意する点は「両方同じパーティションテーブルを持ったパーティションが必要」ということだが、ぶっちゃけ後から追加するディスクが大きければ必ずしも同じパーティションテーブルでなくても良い。

仮にパーティションサイズが元居たパーティションサイズよりも小さい場合はこうなります。
% gpart show -lp ada2 ada3
=>      40  10485680  ada2  GPT  (5.0G)
        40  10485680     ada2p1  freebsd-ufs  (5.0G)

=>      40  16777136  ada3  GPT  (8.0G)
        40   8388608     ada3p1  freebsd-ufs  (4.0G)
   8388648   8388528        - free -  (4.0G)

% sudo gmirror label -v mirror0 ada2p1
Metadata value stored on ada2p1.
Done.

% gmirror insert -v mirror0 ada3p1
gmirror: Provider ada3p1 too small.
どうしてもパーティションサイズを同じにしてミラーしたいということであれば gpart backup [geom] | gpart restore [geom] してもいいが、ここで疑問なのは「ちょっとでも小さい方に restore したらどうなる?」だが、ちゃんと蹴られます。
% fdisk ada2
(省略)
    start 63, size 10485657 (5119 Meg), flag 80 (active)
(省略)

% gpart show ada3
=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

% gpart backup ada3 | gpart restore ada2
gpart: size '16777136': Invalid argument
gpart backup [geom] | gpart restore [geom] は、こう。
% gpart destroy -F ada4
ada4 destroyed

% gpart backup ada3 | gpart restore ada4

% gpart show ada3 ada4
=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

=>      40  16777136  ada4  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)
gpart backup | gpart destore はパーティション情報が残ってるとエラーになるので必ず gpart destroy でメタデータを削除してからにしましょう。
gpart destroy で Device busy と怒られたら -F で強制的にデストローイ!!!
% gpart backup ada3 | gpart restore ada4
gpart: geom 'ada4': File exists

% gpart destroy ada4
gpart: Device busy

% gpart destroy -F ada4
ada4 destroyed

% gpart backup ada3 | gpart restore ada4

% gpart show ada3 ada4
=>      40  16777136  ada3  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

=>      40  16777136  ada4  GPT  (8.0G)
        40  16777136     1  freebsd-ufs  (8.0G)

最終:2019/10/09 08:07:20 カテゴリ:雑記 
タグ:鯖管理
  - NO COMMENT -
TrackBack URL:
QRコード
携帯サイト試験運用
https://griffonworks.net/nikki/cgi-bin/k.cgi
1行板

備忘録
  • 無し
物欲リスト
  • Canon RF50mm F1.2L USM
  • SIGMA 20mm F1.4 EF Art
  • ニンバス チヌーク
  • OCB-1 ST II
ツーリング ドライブ兼野外撮影予定リスト