gvirstor の実験2006年09月22日 11時42分55秒

FreeBSD GEOM Storage Virtualisation Layer を試してみることにした。

まずは、gvirstor で使うためのデバイスを準備。


# dd if=/dev/zero of=1.md seek=999 count=1 bs=1M
1+0 records in
1+0 records out
1048576 bytes transferred in 0.023139 secs (45316392 bytes/sec)
# dd if=/dev/zero of=2.md seek=999 count=1 bs=1M
1+0 records in
1+0 records out
1048576 bytes transferred in 0.040312 secs (26011477 bytes/sec)
# dd if=/dev/zero of=3.md seek=999 count=1 bs=1M
1+0 records in
1+0 records out
1048576 bytes transferred in 0.019748 secs (53097266 bytes/sec)
# ls
1.md    2.md    3.md
# mdconfig -a -t vnode -f 1.md 
md2
# mdconfig -a -t vnode -f 2.md
md3
# mdconfig -a -t vnode -f 3.md
md4

次に、gvirstor をコンパイル。どこに展開しても、あまり関係ない。ただ、geom を基にした機能なので、geom 以下に展開しようとしただけだ。


# cd /usr/src/sys/geom/
# rm -rf gvirstor
dynabook# tar xvf gvirstor-beta3.tbz
# cd gvirstor
# sed -i "" 's/CFLAGS/#CFLAGS/' Makefile
# make
Warning: Object directory not changed from original /usr/src/sys/geom/gvirstor
@ -> /usr/src/sys
...
ld -Bshareable  -d -warn-common -o geom_virstor.ko geom_virstor.kld
objcopy --strip-debug geom_virstor.ko
# make so
gcc -o geom_virstor.so -lgeom -shared -export-dynamic
-Wall -I/usr/src/sbin/geom geom_virstor.c binstream.c g_virstor_md.c
/usr/src/sbin/geom/misc/subr.c strip geom_virstor.so
ln -f -s /sbin/geom gvirstor
# make so
gcc -o geom_virstor.so -lgeom -shared -export-dynamic
-Wall -I/usr/src/sbin/geom geom_virstor.c binstream.c g_virstor_md.c
/usr/src/sbin/geom/misc/subr.c mstrip geom_virstor.so
ln -f -s /sbin/geom gvirstor
# make install
install -o root -g wheel -m 555   geom_virstor.ko /boot/kernel
kldxref /boot/kernel
 ./gvirstor label -v -s 500 test md2 md3
Unknown command: label
usage: gvirstor help
       gvirstor list [name ...]
       gvirstor status [-s] [name ...]
       gvirstor load [-v]
       gvirstor unload [-v]

いくつか試したが、何故かうまくいかなかった。


# grep label *c
g_virstor.c:/* Declare malloc(9) label */
geom_virstor.c: {"label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, virstor_main,
geom_virstor.c:static void      virstor_label(struct gctl_req *req);
geom_virstor.c: if (strcmp(name, "label") == 0)
geom_virstor.c:         virstor_label(req);
geom_virstor.c:virstor_label(struct gctl_req *req)

label への入口は存在しているみたいだが、help などにも出て来ない。結構、時間を使ったので、今の時点では諦めることにした。なお、FreeBSD 6.1-RELEASE と FreeBSD 6.2-PRERELEASE で試した。

次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/09/22/533605/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。