先日、FreeBSD 上でもHP-UXやLinux と同様のLVMを使用できるらしいとメモを書きました。
このメモでは、メモリカードリーダーに挿入された複数のフラッシュメモリを一つのパーティションにまとめて、ファイルシステムにマウントするところまでまとめましたが、リブートした場合に自動的にLVMで管理されたドライブがファイルシステム上に復活するのか?ということを確認できていませんでした。
本番サーバーは、リブートに時間がかかるので、テストマシンで実験してみることにしました。テストマシンでは、USB フラッシュドライブを3個準備。
現状
- gvinum -n test1 concat /dev/da0 ….. でロジカルボリュームを作成し、
- newfs /dev/gvinum/test1 でファイルシステムを作成し、
- mount /dev/gvinum/test1 /mnt でマウントされた状態
- /etc/fstab には、/dev/gvinum/test1 を /mnt にマウントする記述あり
リブート
これで再起動すると、ファイルシステムをマウントする段階で止まってしまいました。つまり、起動時の設定ファイルに何か書かないと、LVM ボリュームをfstab の記述に従って自動でマウントしてくれることはありません。
まず、/etc/fstab 中の、LVM ボリュームをマウントするための行をコメント化。
/etc/rc.local を利用
rc.conf にスイッチを書けばよい訳ではないようなので、/etc/rc.local にコマンドを記述することにしました。
オンラインマニュアルはあまり細かいことは書いてありませんが、gvinum start というコマンドがそれっぽいので、これを実行した後、マウントすれば良さそうです。
そして、以下のように書いて、FreeBSDをリブート。
</etc/rc.local> /sbin/gvinum start sleep 1 mount /dev/gvinum/test1 /mnt
無事に、LVMボリュームが自動で、再マウントされました。
gvinum l コマンドで、ステータス表示。
# gvinum l 3 drives: D gvinumdrive2 State: up /dev/da2 A: 0/984 MB (0%) D gvinumdrive0 State: up /dev/da0 A: 0/124 MB (0%) D gvinumdrive1 State: up /dev/da1 A: 0/245 MB (0%) 1 volume: V test1 State: up Plexes: 1 Size: 1354 MB 1 plex: P test1.p0 C State: up Subdisks: 3 Size: 1354 MB 3 subdisks: S test1.p0.s0 State: up D: gvinumdrive0 Size: 124 MB S test1.p0.s1 State: up D: gvinumdrive1 Size: 245 MB S test1.p0.s2 State: up D: gvinumdrive2 Size: 984 MB