FreeBSDでZFSをちょっとだけ試してみる

かなり前からかなり気になってたZFSを試そうと思い立った。データベースサーバに利用できるかもしれないという妄想とともに。

面倒なことは嫌いなんでコマンドだけ調べてさっくりいけるか試してみる。

構成:
FreeBSD 7.3-R i386

Pentium4

# sudo atacontrol list
ATA channel 0:
 Master: acd0 <LITE-ON CD-ROM LTN-4891S/NDS3> ATA/ATAPI revision 7
 Slave:       no device present
ATA channel 1:
 Master:      no device present
 Slave:       no device present
ATA channel 2:
 Master:  ad4 <ST3160812AS/3.ADH> SATA revision 2.x
 Slave:   ad5 <ST3160023AS/3.18> SATA revision 1.x
ATA channel 3:
 Master:  ad6 <Maxtor 6L080M0/BACE1G10> SATA revision 1.x
 Slave:   ad7 <FB080C4080/HPF0> SATA revision 1.x

# df
Filesystem         1K-blocks      Used     Avail Capacity  Mounted on
/dev/ad4s1a           507630    151778    315242    32%    /
devfs                      1         1         0   100%    /dev
/dev/ad4s1e           507630        16    467004     0%    /tmp
/dev/ad4s1f        146304578    457280 134142932     0%    /usr
/dev/ad4s1d          2008622      9642   1838292     1%    /var
homenfs:/usr/home  465826084 193902918 234657080    45%    /usr/home
homenfs:/usr/ports 465826084 193902918 234657080    45%    /usr/ports

(FreeBSD) はじめてのZFS

これの通りに適当にやってみる。i386だとカーネル再構築しろってかいてあるけど、きっとそんなのは7.1とかの出来事だから7.,3なら大丈夫だぜと信じてそのままやる。

ハンドブックはチラ見だけする。英語あんまりわかんない。

#echo 'zfs_enable="YES"' >> /etc/rc.conf
#/etc/rc.d/zfs start
# kldstat
Id Refs Address    Size     Name
 1    9 0xc0400000 a2208c   kernel
 2    1 0xc0e23000 6a500    acpi.ko
 3    1 0xc465d000 23000    linux.ko
 4    1 0xc486c000 123000   zfs.ko
 5    1 0xc498f000 3000     opensolaris.ko

# zpool create example /dev/ad5
cannot create 'example': permission denied

ぐぬぬうごかない。
2chもチラ見しながら

70 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2010/01/14(木) 04:55:01
# gpart add -s 100m -t freebsd-zfs ad6
でad6p3を作成して

# zpool create testpool ad6p3
でプールを作ろうとしたら↓こんなエラー出て作れない(´・ω・`)
cannot create ‘testpool’: permission denied
ZFS: vdev failure, zpool=testpool type=vdev.open_failed
>>19と同様にシングルユーザーモードでもダメ

で、細かく情報見れないかと
# sysctl vfs.zfs.debug=1
ってやって、
# zpool create testpool ad6p3
をもう一度実行したら何故かプール作成成功…

何度か試したけど、デバッグ有効だと成功したり失敗したりする。
(デバッグ無効だと全然成功しない)
正直、原因が全く分からない…誰か心当たりある人いないですか?

aa

# sudo sysctl vfs.zfs.debug=1
vfs.zfs.debug: 1 -> 1
# zpool create example /dev/ad5
cannot create 'example': permission denied

reagan# tail -100 /var/log/messages
May 28 13:11:04 host sudo:     root : TTY=ttyp2 ; PWD=/ ; USER=root ; COMMAND=/sbin/sysctl vfs.zfs.debug=1
May 28 13:11:08 host kernel: vdev_geom_open_by_path:461[1]: Found provider by name /dev/ad5.
May 28 13:11:08 host kernel: vdev_geom_attach:112[1]: Attaching to ad5.
May 28 13:11:08 host kernel: vdev_geom_attach:133[1]: Created geom and consumerfor ad5.
May 28 13:11:08 host kernel: vdev_geom_detach:173[1]: Closing access to ad5.
May 28 13:11:08 host kernel: vdev_geom_detach:177[1]: Destroyed consumer to ad5.
May 28 13:11:08 host kernel: vdev_geom_detach:185[1]: Destroyed geom zfs::vdev.
May 28 13:11:08 host kernel: vdev_geom_open_by_path:472[1]: guid mismatch for provider /dev/ad5: 17463456876647191018 != 0.
May 28 13:11:08 host kernel: vdev_geom_open_by_guid:430[1]: Searching by guid [17463456876647191018].
May 28 13:11:10 host kernel: vdev_geom_open_by_guid:444[1]: Search by guid [17463456876647191018] failed.
May 28 13:11:10 host kernel: vdev_geom_open_by_path:461[1]: Found provider by name /dev/ad5.
May 28 13:11:10 host kernel: vdev_geom_attach:112[1]: Attaching to ad5.
May 28 13:11:10 host kernel: vdev_geom_open:516[1]: Provider /dev/ad5 not found.
May 28 13:11:10 host root: ZFS: vdev failure, zpool=example type=vdev.open_failed

なんかguidがどうのこうので失敗してるらしい。参った。

しょうがないのでkernelの値をいじる。

KVA_PAGESについての記述が/usr/src/sys/i386/conf/NOTESにあった

# Change the size of the kernel virtual address space.  Due to
# constraints in loader(8) on i386, this must be a multiple of 4.
# 256 = 1 GB of kernel address space.  Increasing this also causes
# a reduction of the address space in user processes.  512 splits
# the 4GB cpu address space in half (2GB user, 2GB kernel).  For PAE
# kernels, the value will need to be double non-PAE.  A value of 1024
# for PAE kernels is necessary to split the address space in half.
# This will likely need to be increased to handle memory sizes >4GB.
# PAE kernels default to a value of 512.
#
options         KVA_PAGES=260

値を追加して適当にmakeする。

%uname -a
FreeBSD host.l2tp.org 7.3-RELEASE FreeBSD 7.3-RELEASE #0: Fri May 28 13:34:47 JST 2010     [email protected]:/usr/src/sys/i386/compile/toZFS  i386

うまくいったらしい。

# zpool create example /dev/ad5
cannot create 'example': permission denied

でも動かない・・・。

面倒になってきたのでここで終了。
amd64ならさくっと解決したりして。

きっとハードウェアのguid取得あたりで64bit必要なのに32bitしかないとかでこけてるんだ、っていう妄想をしながら次回へ。

コメントを残す