ディスク容量の違うディスクを gmirror で使用し、その後大きなドライブを使ったときの対処法をここに残しておく。
想定している内容としては
- ada2s1d に既にデータが存在する。
- RAID-1 としてペアにするディスクは ada2 より大きい物を使用する (ada3)。
- 後日その大きいサイズの HDD に容量を合わせる (ada2 = 5GB / ada3 = 8GB)。
となる。
順序としては
- マスターとなるディスク (小さい方) を gmirror label でメンバーに入れる。
- 大きいディスクを gmirror insert でメンバーに入れる。(この段階では小さいサイズに合う)
大きいディスクを手に入れたら
- 普通に (マルチユーザーモードで) 起動する。
- gmirror remove で小さいディスクをメンバーから外す。
- gmirror insert で新しいディスクをメンバーに入れる。
- 同期が完了するまで待つ。
- シングルユーザーモードで起動しなおす。
- gmirror resize で metadata を更新する。
- gpart resize でスライスとパーティションを広げる。
- growfs で広げたエリアを使えるようにする。
というフローで作業を実施。
gpart resize の使い方については「[修正版] ディスクスペースを拡張してみる@物理ディスク」を見て予習してください。
→
[修正版] ディスクスペースを拡張してみる@物理ディスク
まずは RAID-1 メンバーの作成。
ディスクの確認。
% fdisk ada2
(省略)
start 63, size 10485657 (5119 Meg), flag 80 (active)
(省略)
% fdisk ada3
(省略)
start 63, size 16776522 (8191 Meg), flag 80 (active)
(省略)
ちゃんとサイズは違ってます。
中身があることを確認。
% sudo mount /dev/ada2s1d /mnt
% ll /mnt
total 21996
drwxrwxrwx 3 root wheel - 512 10月 6 02:13 ./
drwxr-xr-x 23 root wheel - 512 10月 6 02:34 ../
drwxrwxr-x 2 root operator - 512 10月 6 02:12 .snap/
-rwxr--r-- 1 griffon wheel - 22475540 10月 6 02:13 kabe-gami.zip*
% df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ada2s1d 5061568 21992 4634652 0% /mnt
アンマウントしておく。
% sudo umount /mnt
RAID-1 メンバーの作成。
ここで「既存のディスクを RAID-1 化する」なら、現在使用中のディスクを先に gmirror で追加すること。
これを間違うと最悪ディスクの中身が消えます。
まずは中身が入ってるディスクをアタッチ。
ちなみにオプションは「停電またはシステムクラッシュの後に同期しない (-F)」としている。
(intel Rapid Strage Technorogy でも突然のリブートの後に同期するけど、あれをしないような感じ)
% sudo gmirror label -v -F mirror0 ada2
Metadata value stored on ada2.
Done.
念のためパーティションが存在するかを確認する。
% ll /dev/mirror/mirror0*
crw-r----- 1 root operator - 0x68 10月 6 02:39 /dev/mirror/mirror0
crw-r----- 1 root operator - 0x69 10月 6 02:39 /dev/mirror/mirror0s1
crw-r----- 1 root operator - 0x6b 10月 6 02:39 /dev/mirror/mirror0s1d
中身が無事かを確認する。
% sudo mount /dev/mirror/mirror0s1d /mnt
% df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/mirror0s1d 5061568 21992 4634652 0% /mnt
% ll /mnt
total 21996
drwxrwxrwx 3 root wheel - 512 10月 6 02:13 ./
drwxr-xr-x 23 root wheel - 512 10月 6 02:34 ../
drwxrwxr-x 2 root operator - 512 10月 6 02:12 .snap/
-rwxr--r-- 1 griffon wheel - 22475540 10月 6 02:13 kabe-gami.zip*
この次に空のディスクをアタッチする。
% sudo gmirror insert -v mirror0 ada3
Done.
% gmirror status
Name Status Components
mirror/mirror0 DEGRADED ada2 (ACTIVE)
ada3 (SYNCHRONIZING, 55%)
% gmirror status
Name Status Components
mirror/mirror0 COMPLETE ada2 (ACTIVE)
ada3 (ACTIVE)
中身が無事かを確認する。
% df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/mirror0s1d 5061568 21992 4634652 0% /mnt
% ll /mnt
total 21996
drwxrwxrwx 3 root wheel - 512 10月 6 02:13 ./
drwxr-xr-x 23 root wheel - 512 10月 6 02:34 ../
drwxrwxr-x 2 root operator - 512 10月 6 02:12 .snap/
-rwxr--r-- 1 griffon wheel - 22475540 10月 6 02:13 kabe-gami.zip*
gmirror はディスクサイズが異なる物をペアにした場合、一番小さい物に合わせられる。
% gmirror list
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NOFAILSYNC
GenID: 0
SyncID: 1
ID: 414357605
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
Mediasize: 5368708608 (5.0G) ←★RAID-1 メンバーのサイズ
Sectorsize: 512
Mode: r1w1e3
Consumers:
1. Name: ada2
Mediasize: 5368709120 (5.0G) ←★ディスクのサイズ
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 3914746213
2. Name: ada3
Mediasize: 8589934592 (8.0G) ←★ディスクのサイズ
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 320096764
ディスクサイズが異なっているが RAID-1 メンバーのサイズは一番小さい物に合わせられていることが確認出来る。
今度は小さいサイズの HDD を退役させ、ディスク容量を増やす。
% gmirror list
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NOFAILSYNC
GenID: 0
SyncID: 1
ID: 307285312
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: 317673527
2. Name: ada3
Mediasize: 8589934592 (8.0G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 3541304040
% sudo gmirror remove mirror0 ada2 ←★サイズの小さいディスクを remove する。
% gmirror status
Name Status Components
mirror/mirror0 COMPLETE ada3 (ACTIVE)
※ada2 (サイズの小さいディスク) が外れました。
% gmirror list
Geom name: mirror0
State: COMPLETE
Components: 1
Balance: load
Slice: 4096
Flags: NOFAILSYNC
GenID: 0
SyncID: 1
ID: 307285312
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
Mediasize: 5368708608 (5.0G)
Sectorsize: 512
Mode: r0w0e0
Consumers:
1. Name: ada3
Mediasize: 8589934592 (8.0G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 3541304040
大きいサイズのディスクのみ残っていることを確認しておく。
次に新しいディスクを刺してリビルドを実施。
(ややこしいのでデバイス名は変えます。)
% fdisk /dev/ada4
(省略)
start 63, size 16776522 (8191 Meg), flag 80 (active)
(省略)
こいつを RAID-1 メンバーにぶっこむ。
% sudo gmirror insert -v mirror0 ada4
Done.
% gmirror status
Name Status Components
mirror/mirror0 DEGRADED ada3 (ACTIVE)
ada4 (SYNCHRONIZING, 70%)
% gmirror status
Name Status Components
mirror/mirror0 COMPLETE ada3 (ACTIVE)
ada4 (ACTIVE)
% gmirror list mirror0
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NOFAILSYNC
GenID: 0
SyncID: 1
ID: 1256414995
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
Mediasize: 5368708608 (5.0G) ←★RAID-1 メンバーのサイズ
Sectorsize: 512
Mode: r0w0e0
Consumers:
1. Name: ada3
Mediasize: 8589934592 (8.0G) ←★ディスクのサイズ
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 968255354
2. Name: ada4
Mediasize: 8589934592 (8.0G) ←★ディスクのサイズ
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 3468845043
この時点では過去の小さいサイズをひきずったままとなっている。
さてリサイズ。
リサイズは RAID-1 メンバーをマウントしたままでは操作できないのでシングルユーザーモードで起動してオフラインで行う。
まずは gmirror resize で RAID-1 メンバーの metadata を更新する。
これはオプション無しでやれば良きにはからってくれる。
% sudo gmirror resize -v mirror0
Done.
% gmirror list
Geom name: mirror0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NOFAILSYNC
GenID: 0
SyncID: 1
ID: 2218697283
Type: AUTOMATIC
Providers:
1. Name: mirror/mirror0
Mediasize: 8589934080 (8.0G) ←★RAID-1 メンバーのサイズが変わった
Sectorsize: 512
Mode: r1w1e1
Consumers:
1. Name: ada3
Mediasize: 8589934592 (8.0G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 3801782773
2. Name: ada4
Mediasize: 8589934592 (8.0G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 3565686053
広がりました。:)
次に gpart resize でパーティションを広げる。
これをやらないと広がりません。gmirror resize はあくまで metadata の更新のみのようだ。
ちょっと確認してみよう。
% sudo mount /dev/mirror/mirror0s1d /mnt
% df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/mirror0s1d 5061568 21992 4634652 0% /mnt
↑ほらね。
アンマウントは忘れずに。
あらかじめスライスとパーティションの中身を確認。
% gpart show -lp /dev/mirror/mirror0
=> 63 16777152 mirror/mirror0 MBR (8.0G)
63 10485657 mirror/mirror0s1 freebsd-ufs [active] (5.0G)
10485720 6291495 - free - (3.0G)
% gpart show -lp /dev/mirror/mirror0s1
=> 0 10485657 mirror/mirror0s1 BSD (5.0G)
0 16 - free - (8.0K)
16 10485641 mirror/mirror0s1d freebsd-ufs (5.0G)
% gpart show /dev/mirror/mirror0
=> 63 16777152 mirror/mirror0 MBR (8.0G)
63 10485657 1 freebsd [active] (5.0G)
10485720 6291495 - free - (3.0G)
% gpart show /dev/mirror/mirror0s1
=> 0 10485657 mirror/mirror0s1 BSD (5.0G)
0 16 - free - (8.0K)
16 10485641 4 freebsd-ufs (5.0G)
広げていきます。
まずはスライスから。
% sudo gpart resize -i 1 /dev/mirror/mirror0
mirror/mirror0s1 resized
% gpart show /dev/mirror/mirror0
=> 63 16777152 mirror/mirror0 MBR (8.0G)
63 16777152 1 freebsd [active] (8.0G)
次にパーティション。
% sudo gpart resize -i 4 /dev/mirror/mirror0s1
mirror/mirror0s1d resized
% gpart show /dev/mirror/mirror0s1
=> 0 16777152 mirror/mirror0s1 BSD (8.0G)
0 16 - free - (8.0K)
16 16777136 4 freebsd-ufs (8.0G)
growfs で広げた部分を使えるようにしよう。
まずは確認。
% sudo growfs -N /dev/mirror/mirror0s1d
super-block backups (for fsck_ffs -b #) at:
11542656, 12825152, 14107648, 15390144, 16672640
本番。
% sudo growfs /dev/mirror/mirror0s1d
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/mirror/mirror0s1d 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/mirror0s1d /mnt
% df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/mirror0s1d 8106676 21992 7436152 0% /mnt
% ll /mnt
total 21996
drwxrwxrwx 3 root wheel - 512 10月 6 03:34 ./
drwxr-xr-x 23 root wheel - 512 10月 6 03:55 ../
drwxrwxr-x 2 root operator - 512 10月 6 03:33 .snap/
-rwxr--r-- 1 griffon wheel - 22475540 10月 6 03:34 kabe-gami.zip*
拡張終わり!!
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ 山銀
└ G兄