1 ZFS Day 2011.10 LinuxでZFS Kazuhisa Hara @kazuhisya
Nov 07, 2014
1
ZFS Day 2011.10 LinuxでZFS
Kazuhisa Hara @kazuhisya
2
プロフィール
– 氏名:
•原 和久(Kazuhisa Hara) – ID: @kazuhisya
– 所属 •某DC業の会社
– 入社以来、某親会社に出稼ぎ(社内ベンチャーとか)
– 今はそこで研修講師しています » Web3層, Linux, VMware, KVM, ZFS, GlusterFS(NEW!)
– 興味分野 •おもにLinuxや仮想化、ストレージ周り
3
プロフィール
– Linux好き、主にRHEL系
• SUSEも昔ちょっと • Deb系は全く分からない
– でも普段ZFSを使うときは基本Solaris11-ex, OI, Nexentaになる
– BtrFSにも勿論期待してます • プレビューレベルだけど、RHEL6.2にマージされましたね!
– SmartOSにも注目してますよ!
• CrossbowやCOMSTERの資産が使えるのは素敵ですね
– 様々なOSの良いところを知って、活用できるようになれれ
ば良いのかなぁと思います
4
お手柔らかにお願いします
5
ZFS on Linuxの話
・・・の前に
6
ZFS概要(おさらい)
7
ZFS事前準備情報
• 128bitファイルシステム
• 大容量のファイルに対応
• HDDをストレージプールとして管理し、簡単にHDD増設が可能
• RAID(0,1,5,6,7)に相当する機能を提供
• Copy-on-Writeによるデータ完全性の保証
• スナップショット・クローン機能
• 重複排除機能(zpool v21~)
• スケールアップ志向
8
従来のストレージソリューション
• H/W RAID
– 高額
– チェックサム範囲が狭く、ブロック単位
– オンラインでの容量変更が難しい、もとい高い
• SAS
– バイト単価が高額
– 電力ワット単価も高額
– 容量の制限
• プロトコル
– 種類によってオプション扱い(iSCSI等々)
9
ZFSなソリューション
• 高速/大容量 – SATA & SSDのハイブリット構成も可能 – 16エクサバイトまでサポート
• 拡張性 – オンライン拡張 – スモールスタートが可能
• 信頼性 – Software RAID – End-to-Endのチェックサム
• 公証99.99999999999999999%の信頼性
– Copy-On-Write • Wirte-holeが起こらない
– 複数のRAIDレベル(0,1,5,6,7,mirror)
• 管理性 – プロトコル
• Cifs, NFS, iSCSI全て対応できる
10
ZFS on Linuxの話
種類
11
とりあえず お や く そ く
12
おやくそく
• ライセンス
– ライセンスの深いところはあえて突っ込まないよ
• ZFSはCDDL
• Linux KernelはGNU GPL
– CDDLとGPLの関係以外も勿論あるよね
• Oracle(Sun)とかNetAppとか・・・!
13
ZFS on Linuxの話
種類
14
種類
• ZFSはCDDLで提供されている
– Solaris以外にもOSOL, OI, NexentaをはじめFreeBSDやNetBSD, OS X(10.5以降はGoogle Code上で)等にもある
• ちょっと前までの話
– Linuxは?
• LLNLによるNative実装
• zfs-fuse
15
種類
• 2010年まで
– LLNL(ローレンス・リバモア国立研究所)による実装
•非オープンソース(米エネルギー省との契約)
– zfs-fuse
• FUSE実装のZFS, 2006年のGoogle Summer Codeより
• Fedoraの標準リポジトリやEPELにも入っている
16
2010年8月末
17
2011/08
18
2011/08
• 2010年8月
19
2011/08
• 2010年8月
20
Native ZFS Is Coming To Linux !!
21
種類
• 2010年半ば、2個のネイティブポート版開発プロジェクトが表に出てくる
– Knowledge Quest Infotech 版
• IT系ニュースサイトで取り上げられたり、結構話題になった
– zfsonlinux.org 版
•実は前記のLLNLのOSS実装
•あまり話題にはならなかった様子
22
種類
• まとめると
– Linuxで一般人が今使えるZFSの実装は
• zfs-fuse 版
• KQ Infotech 版
• zfsonlinux.org 版
23
Native ZFS on Linuxの話
近況
24
簡単な用語説明
• Native ZFS for Linuxで出てくる用語
– SPL
• Solaris Porting Layer
• Linux Kernel module, Solarisのkernel APIの一部を提供する
– ZPL • ZFS POSIX Layer
• lzfsという場合も
• (すごく極端に言うと)ZFSを通常のLinuxファイルシステムのようにマウントできるようにするmodule
25
Native ZFS on Linuxの話
近況
KQ Infotech 版
26
KQ Infotech版
• https://github.com/zfs-linux
27
KQ Infotech版
• Knowledge Quest Infotech 版
– IT系ニュースサイトで取り上げられたり、結構話題になったのはこれ
– SPL(Solaris Porting Layer)を実装
– ZFSは基本的にCDDL版をそのまま実装
– はやくからZPL(ZFS POSIX Layer)を実装
•要は何も考えなくても普通に使えた
28
KQ Infotech版
ところで KQ Infotech 版 だけど
今年度初め頃、
「最近コミットがないなぁ」
…と思っていたら
29
KQ Infotech版
(;゜д゜)・・・・
30
KQ Infotech版
会社ごと
買収されていたでござる
31
KQ Infotech版
32
KQ Infotech版
ぱったりと止まるコミット
2011/04/11
33
KQ Infotech版
• 2011/04/19 STEC社 に買われた模様
– STECはSSDとか作ってる会社(らしい)
– ZFSの最後のコミットも 2011/04/11
• 半年動いてない模様
– 最近のkernelだと素のままでビルド不能(?)
•例えば 2.6.32-131 系とか(RHEL6.1系)
•例えば 2.6.40 系とか(Fedora15)
•例えば 3.0 以降とか – 2.6.32-71 系までは動作確認済み(RHEL6.0)
34
Native ZFS on Linuxの話
近況
zfsonlinux.org 版
35
zfsonlinux.org版
• http://zfsonlinux.org/
36
zfsonlinux.org版
• https://github.com/zfsonlinux
37
zfsonlinux.org版
• zfsonlinux.org – 今日の本題はこれ
– KQIの実装が今後どうなるか分からない今、使うのであればこれ(かな、と)
• LLNLのOSS実装
•最新安定バージョンは 0.5.2 – zfs v5, zpool v28
• ZPLが実装された正式リリースはまだ – 要は普通には mount はできない
– せっかくNativeなのにfuse経由・・・
38
zfsonlinux.org版
• zfsonlinux.org
– 最新安定版にはZPLがない・・・・が
•最新開発バージョンは 0.6.0-rc6(2011/10/7)
– このバージョンにはZPLが入っている!
•という訳で、このバージョンの正式リリースに期待 – そろそろ出てもいい頃(?)
39
zfsonlinux.org版
Linux Kernel
SPL
ZFS
コンポーネント
40
zfsonlinux.org版
Linux Kernel: GPL
SPL: GPL
ZFS: CDDL
ライセンス
41
zfsonlinux.org版
ZFS CLI
libzfs
/dev/zfs ZVOL ZPL
Traversal
DSL DMU
ZAP ZIL
ARC
ZIO
VDEV Configration
Interface Layer
Transaction object Layer
Pooled Storage Layer
User
Kernel
ZFS on Linux for Luster SC10: LLNL発表資料より
42
zfsonlinux.org版
ZFS CLI
libzfs
/dev/zfs ZVOL ZPL
Traversal
DSL DMU
ZAP ZIL
ARC
ZIO
VDEV Configration
Interface Layer
Transaction object Layer
Pooled Storage Layer
User
Kernel
ZFS on Linux for Luster SC10: LLNL発表資料より
v0.6までで、ZPL以外実装済み
43
zfsonlinux.org版
• 意外と(?)普通に使えるZFS
– 皆大好きDeduplication、Compressも動確OK
– sharenfsオプションが使えるようになっていた
•最近のお話
• /etc/exports を書かなくても超お手軽にNFS
– もちろんスナップショットも取れるしブロックデバイスにすることもできる
44
zfsonlinux.org版
• 意外と(?)普通に使えるZFS
– SSDでZIL/L2ARCも使えてる
– Send/Receiveも利用できることを確認済み • Solaris系(v28) <-> Linux(v28)同士でもOKでした
– Importも動作確認
– あれ?なんかスゲーフツーにZFSじゃないですか
45
zfsonlinux.org版
• いまひとつのところ
– sharesmb は動かない
•これは結構根が深い
•普通に smb.conf 書いて
– COMSTERがない(iSCSIの話)
•どうしよもない
•これも従来通りのやり方で – iSCSI Enterprise Target とか
– scsi-target-utils とか
46
zfsonlinux.org版
• いまひとつのところ
– DKMSでない
• Dynamic Kernel Module Support
•要は kernel update のたびにビルドし直し
•ビルド環境を作っておいて、作成-リポジトリ登録の流れを自動化しておければベター
– それなりにバギー
• RCだし、当然だけどバギーです、はい – quota切ろうとするとハングする、ことがあるとか
– よくがるのが ほげほげの状況でデットロックする、とか
47
zfsonlinux.org版
• Issues
48
zfsonlinux.org版
49
zfsonlinux.org版
いまひとつのところもあるし、
バギーなら本番環境は無理だけど
まぁそれなりに望みはあるんじゃないの
という感触を持ってもらえたかもしれません
で、
50
実際どうよ?
パフォーマンスは
実際どうなの?
51
Native ZFS on Linuxの話
パフォーマンス
52
実際どうよ?
• ベンチマーク環境(OS) – NexentaStor 3.1.1 x86_64
• zfs v5, zpool v28
– Scientific Linux 6.1 x86_64 • zfs v5, zpool v28
– 基本方針 • 4本のHDDでRAID-Z1
• zpool get all で出てくるパラメータは基本的にデフォルトで同じにする(dedup, compはoff)
• 細かいチューニングはしない(noatime, elevator=deadlineとか)
• NFS, iSCSIでクライアントからベンチする
• ベンチには fio 1.55 を利用する
• ARCに乗っかってもそれはそれでOK
53
実際どうよ?
• ベンチマーク環境(HW)
– HP ProLiant MicroServer(旧世代)
• 発表時からZFSに最適じゃね?と常々思っていた
CPU AMD Athlon™ II NEO N36L
(2Core 1.3GHz)
MEM 8GB
HDD OS:
250GB (5inch drive bay)
zpool:
HGST 7200rpm 2TB * 4 (AHCI)
NIC Broadcom NC107i
1Gbps(OnBoard)
54
実際どうよ?
• 通常どんくらい出るの?
– 参考: INTERNET Watch
• 第415回:HP MicroServerで作る最強ホームサーバー
– http://internet.watch.impress.co.jp/docs/column/shimizu/20101109_405588.html
» Windows Home Server (Vail - 2011) NTFS (???)
» MEM: 4GB
» HDD: SAMSUNG HD204UI 5400rpm 2TB * 5 (AHCI RAID0 ??? Soft RAID ???)
55
実際どうよ?
NFS
NexentaStor vs. ZFS on Linux
56
実際どうよ?
• NFS
NFS
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux
57
実際どうよ?
(つд⊂)ゴシゴシ
58
NFS
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux
実際どうよ?
• NFS
59
実際どうよ?
(;゜д゜)・・・・
60
実際どうよ?
• NFS
– 読み込みは結構いい線
• ランダムでもNCQは爆速
• メモリ8GB盛った効果(?)
– 耐え難い書き込み性能・・・! • シーケンシャルで 400KB/s とか なんなの馬鹿なの死ぬの
NFS
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux
61
実際どうよ?
• 既知の問題のようです
– Issue #290, #361 あたり参照
– 結構根が深い
– マイルストーン的には 0.8.0には・・・
62
実際どうよ?
• asyncでやってみた(サーバ側)
NFS
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux zfsonlinux async
63
実際どうよ?
• ちょっと悩ましい
– sync + no_wdelayは変化なし
– 転送ブロックサイズを大きくすると、ほんの少し速くなる
• でも 1MB/s にも届かない
• そもそもsyncが腐ってるからしょうがない
– async最強
• 当たり前だけど、NFSでの書き込み保障はない
• zpool iostat見ながらベンチすると楽しい NFS
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux zfsonlinux async
64
実際どうよ?
iSCSI
NexentaStor vs. ZFS on Linux
65
実際どうよ?
• iSCSI
iSCSI
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux
66
実際どうよ?
• 結構いける
– ランダム512k書き込みが遅い
– ランダム4k(NCQ)の読みが遅い
– その他はなかなか優秀
iSCSI
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux
67
実際どうよ?
まとめ
NexentaStor vs. ZFS on Linux
68
実際どうよ?
iSCSI
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux
NFS
0 20,000 40,000 60,000 80,000 100,000 120,000
Seq-Read
Seq-Write
Rand-Read-512K
Rand-Write-512K
Rand-Read-4K
Rand-Write-4K
Rand-Read-4K-QD32
Rand-Write-4K-QD32
NexentaStor zfsonlinux zfsonlinux async
69
実際どうよ?
• まとめ
– NexentaStor • COMSTARやっぱ速い
• NFSはぱっとしないけど、許せるレベル(?)
– ZFS on Linux • NFSの地雷っぷりときたら
– sharenfsオプションで簡単に使えるのに勿体無い
• iSCSIは中々素敵なパフォーマンス – 十分使えると思う
– ついでにHW(microserver) • 思った以上に頑張る
• HW的にはシーケンシャルで1Gbpsを丁度使い切れるような設計の様に思える(なのかな?)
70
Native ZFS on Linuxの話
どんなシチュエーションで使える?
71
どんなシチュエーションで使える?
• ダメな環境例
– エンプラ環境
– 高いSLA
– 落ちると結構困る、データロストしたら結構困る
– HW、OSが64bit以外
– メモリが2GB以下
•いいけど僕責任持てないよ! – バギー、まだRC、安定版はZPLなし
– ライセンス
– 勿論ベンダはサポートしてくれないよ
72
どんなシチュエーションで使える?
• 使える環境例
– 検証環境のストレージに
– 会社のオレオレ専用マシン(あれば)
– ちょこっと使う程度のNAS
– 自宅の環境
•今日来てる人は皆 ぎーく か はかー だと思うので、皆様自宅Labに余ってるマシンや、FC、10GEなどなど使える物資はすべからくあると思います!
73
どんなシチュエーションで使える?
• 使える環境例
ようは
ブッ壊れたら
自分の責任の範囲で
何とかするぜ!!
という環境 (が、いまのところ良いと思う)
74
どんなシチュエーションで使える?
• 具体例➀
– 仮想化のストレージに
– Dedupフル活用構成(ファイルベース)
• KVMで(Xen kernelで動くかは?)
• Dedupは勿論on
• zfsでpoolを組んで、そこに仮想マシンイメージを置く
• libvirtで普通にpoolに追加
• qcow2で作ってもrawで作ってもOK – qcow2で作れば、ファイル(≒VM)単位でスナップショット
– rawで作るならpoolごとスナップショット
» パフォーマンス的にどっちかにしたほうがよさそう
75
どんなシチュエーションで使える?
• 具体例②
– 仮想化のストレージに
– Snapshotフル活用構成(ブロックベース)
• KVMでもXenでもOK
• zfsでブロックを作成
•そのブロックを直にVMにアタッチ
• SnapshotのcloneでVMをどんどん増やす
• Dedupを使わなくても、差分でしか使用量は増えない – virt-zfs方式でiSCSIで渡してもOK
76
どんなシチュエーションで使える?
• 具体例③
– 分散ファイルシステムのバックエンドに
– GlusterFS構成 • GlusterFSは、ノード数を増やしてもリニアに性能が伸びない
– ストライプの場合ある程度上げることもできる
– 現段階ではストライプと分散モードを同時に使用することができない(3.3.x より解禁)
• 各ノード自体の性能を上げる必要がある
• バックエンドをZFSにすれば、性能的にもスケールアップしやすい
• HOWTO: GlusterFS + ZFS on Linux
– http://www.gluster.com/2011/08/29/howto-glusterfs-zfs-on-linux/
77
どんなシチュエーションで使える?
• 具体例④
– DLNA(UPnP)サーバ • PS3やらXboxなどで、動画や音楽を再生できるあれ
•多分Solarisで構築するよりLinuxのが簡単(?)
•同じ容量なら、QN○Pやバッ○ァローのNAS製品を買うより安く付くよ!
•ドライバがわりと豊富
• SolarisよりもRAIDカードなどを選ばない – ヒント: eSATAでポートマルチプヤイヤ
78
ZFS on Linuxの話
まとめ
79
まとめ
• Linuxで一般人が今使えるZFSの実装は
– zfs-fuse 版
•お手軽さならダントツ、制限多い
– KQ Infotech 版
• ZPLの実装あり、ただし今後に期待できない?
– zfsonlinux.org 版
•まだまだ発展途上だけど、今後に期待できそう
80
まとめ
• zfsonlinux.org 版の現状
– 現行のリリースバージョン 0.5.x はzplが含まれていない
– 使うのであれば、 0.6.0(のRC) がオススメ
– 結構普通に使えるが、転んでも泣かない
81
まとめ
• 使えそうなシチュエーションは
– 検証環境とか
– 仮想化と相性よろしげ • dedup, snapshot, send/receive
• SmartOS(Solaris+KVM)はlibvirt対応してないし
– DLNAとか良いんじゃないですかね • 対応製品をことごとく持ってないので、試してないですが・・・
– エンタープライズにはまだ早い(かもしれない)
• やるならライセンス・サポートの問題も考える
82
デモ
83
デモ
• 今日のデモ環境は仮想マシンです
– 今日は会場提供をしてくださった Oracle さまに敬意を表して、Oracle Linux 6.1を用意させていただきました
84
Question?