mount_md: mdmfs + suffix patch ― 2006年05月15日 06時22分22秒
mdconfig と普通の mount で基本的には用は足りていた。しかし、頻繁に使うようになると、いちいち mdconfig をやり、mount するのが次第に面倒になる。mdmfs の最大の欠点は、fstab からは使えない。名前も然り、機能も然りである。
まず、考えたのは newfs をやらないオプション。まあ、同じことを考える人はいる。こちらは、既に 7-current に取り込まれている。6-release 用に抜きだしてきた。これだけでは、まだまだ実用性に欠ける。スライスがあったり、パーティションがあると、一切使えない。
そこで、デバイスの後に拡張子を付けるパッチを作った。これは、md3.uzip や md5s3d などとして、デバイスを指定できる。数字なしで、md.uzip や mds3d などとやっても、ほぼ同じ動作になる。数字があるときには、その md デバイス番号を割り当てるのが違いだ。
注釈: デバイスの後に拡張子を付けるパッチ には 6-release 用 newfs をやらないオプションは既に含まれている。そのため、6-release にはそのまま当たるが、current 以降にはそのままでは当たらない。6-release 用 newfs をやらないオプションをリバースパッチとして、当てた後で適用すること。2006/07/14 追記。
具体的には、以下のような事が実現できる。
# mdmfs -P -F ports-5.4.uzip -oro md.uzip /tmp/test
# df /tmp/test
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md4.uzip 358126 277934 51542 84% /tmp/test
# mdmfs -P -F ports-5.4.uzip -oro /dev/md8.uzip /tmp/test
# df | grep test
/dev/md4.uzip 358126 277934 51542 84% /tmp/test
/dev/md8.uzip 358126 277934 51542 84% /tmp/test2
# mdmfs -P -F hd10meg.img mds1a /tmp/test3
# df /tmp/test3
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md9s1a 7526 4 6920 0% /tmp/test3
# mdmfs -P -F file.md md /tmp/test4
# df /tmp/test4
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md10 846 4 776 1% /tmp/test4
これで、格段に使い勝手がよくなった。さて、これから最後の仕上げである。man mount を見るとわかるが、mount は mount_xxx を呼び出す仕組みになっている。mdmfs では mount から呼び出せない。そこで、mount_md を mdmfs の別名のプログラムとしてインストールする。
実は、
--- src.orig/sbin/mdmfs/Makefile Fri May 5 01:34:10 2006
+++ src/sbin/mdmfs/Makefile Fri May 5 01:33:09 2006
@@ -2,6 +2,6 @@
PROG= mdmfs
-LINKS= ${BINDIR}/${PROG} ${BINDIR}/mount_mfs
+LINKS= ${BINDIR}/${PROG} ${BINDIR}/mount_mfs ${BINDIR}/mount_md
MAN= mdmfs.8
MLINKS+= mdmfs.8 mount_mfs.8
が、それに相応する部分なのだが、なぜか /usr/src/sbin/mdmfs から make install しても mount_md が入らない。同じように LINKS を複数指定している物もあるのになぜ、動かないのだろう。make installworld からは入れたことはないので、そちらはどうなっているかは知らない。
そういうわけで、もし mount_md が入ってなかったら、ln /sbin/mdmfs /sbin/mount_md でもやってほしい。
これで、uzip を fstab から mount 出来る。
% grep md /etc/fstab
/dev/md.uzip /usr/ports md ro,-P,-F/usr/ports-20060511.uzip
% df /usr/ports
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md3.uzip 504286 325266 138678 70% /usr/ports
mount -d などと使うと、テストしやすい。なにせ、オプションの数が多いので、失敗した理由が掴みづらい。
Patches: 6-release 用 -P no-newfs パッチと デバイスの後に拡張子を付けるパッチ
コメント
_ 抹茶 ― 2007年11月04日 00時00分58秒
_ uyota ― 2007年11月09日 14時55分30秒
どちらのスクリプトも、デバイス名は決め打ちになっていて、全く融通が効きません。malloc 型や swap 型であれば、起動時に毎回
newfs をデバイスに対してやればいいので、まあそれでも構わないでしょう。わざわざ、スライスを切ったり、パーティションに分ける必要もありません。
しかし、vnode 型はそうはいきません。geom_uzip を使うのであれば、mount 時に /dev/md1.uzip にする必要があります。まあ、mdconfig には .uzip が更に決め打ちされているので、uzip の場合は、動きますが。しかし、スライスやパーティションがあったら、これでは動きません。/dev/md2s2 や /dev/md3 s4a などには rc スクリプトでは対応しきれていません。
_ 抹茶 ― 2007年11月18日 10時21分17秒
自分の使い方だとramdiskでことが足りてるみたいです
ついでにblog始めましたので、気が向いたら遊びにきてください
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/05/15/365756/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
## RAMDISK
ramdisk_units="1"
ramdisk_1_config="-t malloc -s 100m -o reserve"
ramdisk_1_owner="www"
ramdisk_1_perms="775"
fstabに以下の行を追加
/dev/md1 /home/www/ ufs rw 0 0
これじゃだめ?