ディスク入れ替え予行演習(ZFS)
自宅サーバの OpenSolaris 化に向けて、ディスク入れ替えの予行演習を VMWare の上で実施してみたら一発では上手いこと行かなかったので、備忘録がわりにメモなどを。
予行演習の段取りとしては:
- 同一容量のディスクによる入れ替え ⇒ 入れ替え手順そのものの確認
- 容量の大きなディスクによる入れ替え ⇒ 領域拡張手順の確認
といった感じで進める方向で、まずは同一容量のディスクによる入れ替えを。
手順的には、OpenSolaris の日本語MLでの"システムDISK交 換"に関するスレッドから辿れる情報通りに進めれば良いのだけれど、Solaris のディスク管理なんて21世紀になってからとんとご無沙汰なので、確認がてらディスク管理のマニュアルなどを読んでみることに。
すると、ディスクラベルのコピーを非対話的に実施する方法が:
prtvtoc /dev/rdsk/コピー元ディスク | fmthard -s - /dev/rdsk/コピー先ディスク
format コマンドによる対話実行でのラベル定義なんて、まどろっこしくてやってられるか!という困った気質の自分としては、これ幸いとコマンド実行一発で移行元ディスクから移行先ディスクにラベル情報をコピー。
その後の "zpool attach" と内容同期はスムーズに進むも、installgrub 実行の際に問題が。
Partition 0 of the disk has an incorrect offset
と言い張って installgrub が一向に先に進んでくれない。
エラーメッセージで検索して見つけた情報が、Soalris2 fdisk パーティションの作成をやらないと駄目(コメント欄参照)らしいというもの。あぁ、そういえば先述したシステム管理のマニュアルでも「fdisk パーティションが云々」とかいう文言を見た気がするなぁ。
改めて読み直すと、fdisk で切ったパーティションを Solaris 用にアレして、その範囲内でスライスを切れ、ということらしい。っつーか、こんな屋上屋を重ねるような構成ってどうよ?と思わないでもないが、「x86 系限定」の話ということはブート/BIOSあたりの都合に絡む話なのかな?
言われてみれば、fmthard で「ラベル情報を複製」した割には、複製先ディスクの prtvtoc 出力でセクタだったかシリンダだったかの数がちょっと多いのも気になってたんだよねぇ。fdisk パーティション情報の管理領域分だけずれてたんだな、きっと。
件のサイトウさんの手順でも、「新しいディスクのパーティションを切る」で:
と書いてあった。
x86 系での Solaris 利用でディスク追加をしたのは今回が初めてなので、知らなくても仕方が無いといえば仕方が無いけど、情報源は良く読めよ、全く > 自分
Solaris2 fdisk パーティションを切ってから再度手順を繰り返したところ、installgrub も無事成功。
そういえば /etc/vfstab の swap 設定が移行元ディスク名が直書きされていたなぁ。移行先ディスク上の当該スライスに書き換えても良いのだけれど、/etc/swapadd スクリプトを見るに、swap 設定のスライスを順次追加してくれるみたいなので、とりあえず移行元/移行先ディスクの swap 領域を併記してみることに。
諸々を終えての再起動も無事成功。swap も移行先のスライスのみが有効になっているので問題なさそう。
切り離したディスクに関する実験を幾つかやったら、いよいよ容量拡張の確認をしてみよう。