説明の想定としては、
現在 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
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ 山銀
└ G兄