ふとDVD-RAMにZFSをつくってみようという気になったのでやってみた。(OSはFreeBSD 9.0-CURRENT)
freebsd# zpool create dvdram /dev/acd0
freebsd# zpool list
NAME     SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
dvdram  4.25G   206K  4.25G     0%  ONLINE  -
....
freebsd# df /dvdram
Filesystem 1K-blocks Used   Avail Capacity  Mounted on
dvdram       4386684   56 4386628     0%    /dvdram
freebsd# zfs create dvdram/tmp
freebsd# df | grep /dvdram
dvdram                     4386604        60   4386544     0%    /dvdram
dvdram/tmp                 4386600        56   4386544     0%    /dvdram/tmp
freebsd# zfs list -r dvdram
NAME         USED  AVAIL  REFER  MOUNTPOINT
dvdram       272K  4.18G    60K  /dvdram
dvdram/tmp    56K  4.18G    56K  /dvdram/tmp
あっさりできた。

メタデータは標準で3重化されているがデータは冗長性がないので2重化しておこう。

freebsd# zfs set copies=2 dvdram

さて書き込み性能はどんなものか?

freebsd# time dd if=/dev/urandom of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 2.119697 secs (49468206 bytes/sec)
0.000u 2.044s 0:02.12 96.2%     26+4151k 0+0io 0pf+0w
freebsd# time dd if=/dev/urandom of=/dvdram/tmp/random.out bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 97.429001 secs (1076246 bytes/sec)
0.000u 2.185s 1:37.43 2.2%      33+5331k 0+0io 0pf+0w
/dev/null送りにしたケースがオーバヘッド/dev/urandomのオーバーヘッドなので それを差し引きすると 1.049 MiB/s (1.10MB/s) 。メディアは三菱化学の5xで、 ドライブは PIONEER DVD-RW DVR-112 (1.21)。 ddが終わったあともドライブのアクセスランプは点滅していた。遅延書き込みだろう。

さて、メディアを抜いてみようか..

freebsd# cdcontrol eject
freebsd# zpool status dvdram
  pool: dvdram
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        dvdram      ONLINE       0     0     0
          acd0      ONLINE       0     0     0

errors: No known data errors
あっさり成功してしまった。 ロックされて失敗するのを期待してたんだが...

じゃあexportしないといけないよねってことで

freebsd# zpool export dvdram
^T

load: 0.67  cmd: zpool 42164 [tx->tx_sync_done_cv)] 30.07r 0.00u 0.02s 0% 2176k
^C
ささってしまった。

コンソールメッセージにはこんなのが出てた。

Nov 22 16:24:48 freebsd root: ZFS: zpool I/O failure, zpool=dvdram error=6
Nov 22 16:24:48 freebsd root: ZFS: zpool I/O failure, zpool=dvdram error=28
Nov 22 16:24:48 freebsd last message repeated 2 times
Nov 22 16:24:48 freebsd root: ZFS: vdev I/O failure, zpool=dvdram path= offset= size= error=

別のターミナルを開いてstatusコマンドをたたいてみると

koie@freebsd% zpool iostat -v
                capacity     operations    bandwidth
pool          used  avail   read  write   read  write
-----------  -----  -----  -----  -----  -----  -----
dvdram        201M  4.05G      0      3    340   324K
  acd0        201M  4.05G      0      3    340   324K
-----------  -----  -----  -----  -----  -----  -----
tank          787G  1.17T     10     10  67.7K   295K
  raidz1      787G  1.17T     10      9  67.7K   157K
    ad6s2        -      -      3      5  95.7K  78.9K
    ad8s2        -      -      3      5  96.0K  78.9K
    ad10s2       -      -      3      5  95.9K  78.9K
  label/zil    20K  1.95G      0      1      1   138K
-----------  -----  -----  -----  -----  -----  -----

koie@freebsd% zpool status dvdram
  pool: dvdram
 state: ONLINE
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://www.sun.com/msg/ZFS-8000-HC
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        dvdram      ONLINE       0     4     0
          acd0      ONLINE       0     6     0

errors: 4 data errors, use '-v' for a list
koie@freebsd%
本来ならばこのURLを参照するとサクっと詳細な情報がえられるはずなのだが、SunがORACLEに買収されてしまった影響でORACLEのログインページにとばされてしまってみられない。 もし作業現場でORACLEのアカウントをもってなかったらかなりイラっとくるはずだな、これは。

zpool clearするといいらしい。zpool clear dvdramしたらzpool exportコマンドももど ってきた。

freebsd# zpool status dvdram
cannot open 'dvdram': no such pool

ちゃんとexportされてる。もういちどDVD-RAMを取り出して入れ直してから再マウントに 挑戦。

freebsd# cdcontrol eject
freebsd# zpool import dvdram
freebsd# zpool list
NAME     SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
dvdram  4.25G   201M  4.05G     4%  ONLINE  -
tank    1.94T   787G  1.17T    39%  ONLINE  -
freebsd# zpool status dvdram
  pool: dvdram
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Mon Nov 22 16:34:47 2010
config:

        NAME        STATE     READ WRITE CKSUM
        dvdram      ONLINE       0     0     0
          acd0      ONLINE       0     0     0  28K resilvered

errors: No known data errors
freebsd#
無事できました、パチパチ。

あとおもしろいことといえば、 ディスクの記録面をみると二本の太い筋がみえて、データが二重化されているのがよくわかる。 こういうところは光デバイスのいいところ。

そういえばzfs set atime=off dvdramするのをわすれてた。100MBくらいのデジカメ画像をコピーしてから zfs set atime=off dvdramしたんだが、なかなか終わらない。なにしてるんだろう...