録画マシンのHDDから不吉なメッセージが表示されはじめてしまったのだが、このマシン、 なぜか重要なのにRAIDで保護されていないことに気が付いて、とりあえずどうにかすることにした。 アーカイブ用に4TBのミラーがあるので、こいつにもう一台6TBのHDDを足して、その後、4TBの一台を rootディスクのミラー用に充てるという、玉突き移植です。これで来月にもう一台6TBのHDDを買えば アーカイブ用は6TBになる。やったね。
ということで例によって例のごとく書いておかないと忘れてしまうので以下HDD玉突き交換の手順 なお、交換自体は電源を落とさない方向で行います。録画マシンだから随時録画されているからね。
- 新しいHDDを購入。 とりあえず、最近は 6TB も値段が下がったので、今ある4TBの代わりに6TBの玉を購入。 今回もシーゲートw。ST3k にはいろいろトラウマあるけど、ST4k はあまり壊れていない気がする。 っていうか、RAIDの根底は「安いディスクを安全に」だからね。
- 新しいHDDをサーバに挿して認識させる。 外付けのHDDケースを使っているので、オンラインのままサクッと挿して認識させます。 dmesg で確認したところ da2 として認識しました。
da2 at mps0 bus 0 scbus0 target 2 lun 0 da2:Fixed Direct Access SPC-4 SCSI device da2: Serial Number WCT12WAZ da2: 600.000MB/s transfers da2: Command Queueing enabled da2: 5723166MB (11721045168 512 byte sectors) da2: quirks=0x8<4K>
- 領域を確保。 FreeBSD上での作業です。 gpart で領域を確保します。
gpart create -s gpt /dev/da2
gpart add -t efi -s 100M /dev/da2
gpart add -t freebsd /dev/da2
gpart show /dev/da2
> gpart show /dev/da2
=> 40 11721045088 da2 GPT (5.5T)
40 204800 1 efi (100M)
204840 11720840288 2 freebsd-ufs (5.5T)
- 暗号化領域を作成。
geli init /dev/da2p2
パスフレーズを二回入力。忘れないようにね。
geli attach /dev/da2p2
パスフレーズを一回入力。これで暗号化領域が使えるようになります。
- zpool のミラーを作成。 あとは、既存のzpool のミラーに追加します。
zpool attach archive0 da0.eli da2p2.eli
- ミラー完了後、古いHDD一台を、ブートドライブのミラーにします。そのために zfs から deteach します。
zpool detach archive0 da1.eli
- こんどはその古いHDDをまっさらにします。
geli detach /dev/da1.eli
8, パーテーションを切ります。
gpart show ada0
=> 40 7814037088 ada0 GPT (3.6T)
40 1024 1 freebsd-boot (512K)
1064 16777216 2 freebsd-swap (8.0G)
16778280 7797258848 3 freebsd-zfs (3.6T)
これに合わせるように、古いHDDのパーテーションを切ります。
gpart create -s gpt /dev/da1 gpart add -t freebsd-boot -s 512k /dev/da1 gpart add -t freebsd-swakt -s 8g /dev/da1 gpart add -t freebsd-zfs /dev/da1
- zroot のミラーに追加
zpool attach zroot ada0p2 da1p2
あとはミラーが完了するのを長い間待ちます。ときどき、zpool status zroot して どのくらいすすんでいるか確認します。 ミラー元のHDDにずっとエラーが出続けていたので、15MB/sec くらいの速度でしか同期 できなかったため、二日ほど時間がかかりました。
で、待つこと二日間。無事、ミラーが完了しました。
- bootcode の書き込み。 ミラー先のHDDにもブートコードを書き込んでおきます。
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
- エラーが出ていたHDDを切り離します。
zpool detach zroot ada0p2
これで古いほうのHDDが切り離せました。 このままでもとりあえずは良いけど、切りの良いところで電源を落として、HDDを取り外しましょう。
お疲れさまでした。