開発元 http://zfsonlinux.org/
debへのリンクがあるので、Debianマシンならdebパッケージがあるのかと思ったのですが、ライセンスの関係上あくまでもtgzなソースのみの提供みたいです。
まずはHowtoに書いてあるように必要なパッケージを入れます
apt-get install build-essential gawk alien fakeroot linux-headers(uname -r)
そうしたらSPLパッケージをmakeします。
libdir='${exec_prefix}/lib'
zpool: error while loading shared libraries: libspl.so.1: cannot open shared object file: No such file or directory
と言われると思います。なので/usr/libと決めうちにしてしまいました。export LD_LIBRARY_PATHだったかなんだかで変えられたような気がするのですが忘れました。
追記:Debianならおとなしくmake debすれば一撃なのでdebファイルを作るべきですね
configureが通ったらmakeですが、このときにmake debやmake rpmとすることによってdebパッケージor rpmパッケージが作成されます。オフィシャルによるとrpmを作ってからalienでdebパッケージにコンバートするみたいです。パッケージを作らずそのままコンパイルするのであればmakeするだけでいいです。自分はpacoというmakeでインストールされたファイルを追跡するソフトを使っているので普通にmake&&paco -D make installしました。
そしてzpoolコマンドを使ってみる。
root@debian:/# zpool create zfs1 raidz sdb sdc sde sdd
root@debian:/# zpool status
pool: zfs1
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zfs1 ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sde ONLINE 0 0 0
sdd ONLINE 0 0 0
errors: No known data errors
すげー!LinuxでZFSがうごいた!調子に乗ってパフォーマンスのテストをしてみます。
root@debian:/# dd if=/dev/zero of=/zfs1/4g bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 15.753 s, 273MB/s
root@debian:/# dd of=/dev/null if=/zfs1/4g bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 2.05506 s, 2.0 GB/s
シーケンシャルの書きは速いです。読み込みの結果はどこかにキャッシュされているようで正確な値がでません。何度かファイルサイズを変えてみたのですが読みの速度がどうしても正常な値がでませんでした。
他にhdparmを使ったベンチをとろうと思ったのですが/zfs1にマウントされたZFSはブロックデバイスではないので-tが出来なかったためbonnie++を使用しました。
実行したコマンド: bonnie++ -d /zfs1/ -s 1024 -r 512 -u root -q |bon_csv2html>/zfs1/result.html
結果をここに貼ろうと思ったのですが長すぎたため別にまとめました。
結果
zfsマシンはNehalemなXeon 5640を積んでるマシンなのですがそれ以外はCore2Quadなマシンなので、全くハードウェアが違うので参考程度に。
ベンチをとって思ったのは、メモリがあればそれだけキャッシュに回しているような気がするなということです。iops=1579とかそんなの絶対おかしいよ…
まあとにかく、目に見えて低いパフォーマンスがでているわけではないので問題ないと思います。
zfs set compression=lzjb ZFSTANK
とやればマシンパワーを消費する代わりにファイルを書くときに自動的に圧縮してくれるのでlogrotateによるtar.gzをしなくても済みます。とりあえず実験機(Express5800 GT120)で1ヶ月くらい使ってみようと思います。
-----追記-----
zfs-fuseとどの程度違うのか試してみました。
root@debian:/zfs2# dd if=/dev/zero of=/zfs2/4g bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 52.6356 s, 79.7 MB/s
root@debian:/zfs2# dd if=/dev/zero of=/zfs2/4g bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 52.2843 s, 80.2 MB/s
root@debian:/zfs2# dd of=/dev/null if=/zfs2/4g bs=1M
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 0.444548 s, 9.4 GB/s
やはり書き込みが遅いです。bonnie++の方にも結果を反映しました。が、apt-get autoremove zfs-fuseをしたらcpやmakeのコマンドが使えなくなり、再起動したら二度と起動しなくなりました。oh.......
何かと問題になるAdvanced Formatの対応はどうなのかと疑問だったのですが、
1.15 How does ZFS on Linux handles Advanced Format disks?
Advanced Format (AF) is a new disk format which natively uses a 4,096 byte instead of 512 byte sector size. To maintain compatibility with legacy systems AF disks emulate a sector size of 512 bytes. By default, ZFS will automatically detect the sector size of the drive. This combination will result in poorly aligned disk access which will greatly degrade the pool performance.
Starting with version 0.6.0-rc5 an ashift property has been added to the zpool command to explicitly assign the sector size of the created pool. The ashift values range from 9 to 16 with the default value 0 meaning auto-detect the sector size. This value is actually a bit shift value, so an ashift value for 512 bytes is 9 (29 = 512) while the ashift value for 4,096 bytes is 12 (212 = 4,096). To force the pool to use 4,096 byte sectors we must specify this at pool creation time:
$ sudo zpool create -o ashift=12 tank mirror sda sdb
と、公式のFAQに書いてありました。これで多い日も安心。(セクタ長的な意味で
ツイート
コメントを書く
必要事項とコメントを入力して下さい。