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 パッチと デバイスの後に拡張子を付けるパッチ
最近のコメント