ZFSチューニング

「ZFSチューニング」の編集履歴(バックアップ)一覧はこちら

ZFSチューニング - (2009/12/13 (日) 10:04:09) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

-Sunからの情報 --Solarisインターナルズ ---[[ZFS Best Practices Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Best_Practices_Guide&sl=en&tl=ja]]) ---[[ZFS Configuration Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Configuration_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Configuration_Guide&sl=en&tl=ja]]) ---[[ZFS Evil Tuning Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Evil_Tuning_Guide&sl=en&tl=ja]]) --ブログ ---[[Bill Moore氏>>http://blogs.sun.com/bill/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbill%2F&sl=en&tl=ja]]) ---[[Jeff Bonwick氏>>http://blogs.sun.com/bonwick/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbonwick%2F&sl=en&tl=ja]]) ---[[Neelakanth Nadgir氏>>http://blogs.sun.com/realneel/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Frealneel%2F&sl=en&tl=ja]]) ---[[Brendan Gregg氏>>http://blogs.sun.com/brendan/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbrendan%2F&sl=en&tl=ja]]) ---[[Neil Perrin氏>>http://blogs.sun.com/perrin/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fperrin%2F&sl=en&tl=ja]]) ---[[Constantin Gonzalez Schmitz氏>>http://blogs.sun.com/constantin/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fconstantin%2F&sl=en&tl=ja]]) -Solaris 10 と OpenSolaris でのzpoolバージョン比較 --zpool(ストレージフォーマット)のバージョンは、以下のコマンドで確認できる。 --- # zpool upgrade -v --2009年12月時点では、Solaris 10 10/09が最新。 ---Solaris 10 5/09: バージョン 10 ---OpenSolaris 2009.06: バージョン 14 ---Solaris 10 10/09: バージョン 15 -SSD導入でのZFS性能強化 --参考資料 ---[[ZFSはどう活用できるか @ @IT>>http://www.atmarkit.co.jp/fserver/articles/zfs/03/01.html]] ---[[SSD統合効果で速度が3倍、容量が2倍という例も @ @IT>>http://www.atmarkit.co.jp/ad/sun/0906storage/openstorage.html]] ---[[10/08 リリース: 別個の ZFS ログデバイスを設定する @ docs.sun>>http://docs.sun.com/app/docs/doc/819-6260/gfgaa?l=ja&a=view]] ---[[10/09 リリース: ZFS ストレージプールにおけるキャッシュデバイスの使用 @ docs.sun>>http://docs.sun.com/app/docs/doc/819-6260/gfxul?l=ja&a=view]] ---[[ZFS L2ARC @ Sunブログ>>http://blogs.sun.com/brendan/entry/test]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbrendan%2Fentry%2Ftest&sl=en&tl=ja]]) --考察 ---ハイブリッド・ストレージ・プールとして、二つの機能がサポートされている。 ----ZIL(Write用ログ領域): データ書き込み時のsyncをSSDで受け、素早く完了させる。物理メモリー容量の半分程度のSSD容量を使用する。 ----L2ARC(Read用拡張2次キャッシュ): 静的データをSSDに溜め、HDDの苦手なランダム読み込みを高速化する。SSDが大容量であるほど効果も高いと考えられる。 ---必要な特性 ----ZILは(保持時間は短いが)信頼性が要求される。必要に応じてミラーリングも構成できるが、SSD製品ではSLC型が妥当と思われる。 ----L2ARCの信頼性はほどほどで良い。チェックサムで誤りが見つかればSSDのデータは読み捨ててディスクから読み直す。また、システムをシャットダウンすると内容は破棄され、システム起動時は空の状態になる。SSD製品は、廉価なMLC型で良いと思われる。 ---Sunのプロモーション資料では、ZIL用SSDが32GB×1、L2ARC用SSDが80GB×1の構成で、SATAがSASより早くなると謳われている。 ----容量からSSD製品を推定すると、恐らく、ZILにはIntelのSLC型、L2ARCにはIntelのMLC型を採用しているのではないか? ---ZILが真価を発揮するのは、重い多重トランザクション処理でコミット性能が響くケースと考えられる。個人用途では、L2ARCのみで十分な改善効果を期待できるのではないか? --実機での導入確認 ---L2ARCサポートが導入されたSolaris 10 10/09リリースは、不具合を持つ地雷品と思われるため、実機導入はしばらく保留とする -Solaris 10/09、OpenSolaris 2009.06での書込み性能低下 --ZILの動作に変更があったためか、改版以降、ZFSへの書込み性能に低下が見られる。 ---改版前は、100Mバイト/秒ほどの速度で書込みをしても、数秒間バッファリングされ、物理ディスクへの頻繁な書込みはなかった。 ---改版後は、小刻みな書込みが行われるようになった。 --ZILの無効化を設定すると、この性能低下は回避できるようだ(Sunは推奨していない)。そのため、ZILの動作が何らかの形で関係していると考えられる。 ---無効化の方法は、下記の資料に記載されている。しかし、同時にこの資料では、無効化設定を利用環境に適用してはいけないと強く言っている。リスクとして挙げられているのは、データの整合性であるが、ファイルシステムとしての整合性は壊れないようにも読める。 ----[[ZFS Evil Tuning Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Evil_Tuning_Guide&sl=en&tl=ja]]) --ZILは、ZFSのバージョンアップに伴って機能拡張されているが、ZILそのものはZFSの初期段階から実装され、その機能目的も変わっていないようだ。 ---ZILの目的については、以下のブログが詳しい。 ----[[slog blog (or blogging on slogging)・ZFS: The Lumberjack @ Neil Perrin氏>>http://blogs.sun.com/perrin/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fperrin%2F&sl=en&tl=ja]]) ----これを読む限りでは、明示的なSYNC指示がない限り、バッファに数秒間溜められる動作が正しいように見える。 ---ZILの内部構造については、以下のブログが詳しい。動作回数を確認するためのDtraceスクリプトも挙げられている。 ----[[A quick guide to the ZFS Intent Log (ZIL) @ Neelakanth Nadgir氏>>http://blogs.sun.com/realneel/entry/the_zfs_intent_log]] ([[Google翻訳>>http://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=http%3A%2F%2Fblogs.sun.com%2Frealneel%2Fentry%2Fthe_zfs_intent_log]]) -----示されているソースファイルはリンク切れしている。現在参照できるリンク: [[zil.c>>http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/zil.c]] [[txg.c>>http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/txg.c]] -----txg_time(5秒)は、この後、txg_timeout(30秒)にさし換えられたようだ。
-Sunからの情報 --Solarisインターナルズ ---[[ZFS Best Practices Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Best_Practices_Guide&sl=en&tl=ja]]) ---[[ZFS Configuration Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Configuration_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Configuration_Guide&sl=en&tl=ja]]) ---[[ZFS Evil Tuning Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Evil_Tuning_Guide&sl=en&tl=ja]]) --OpenSolarisコミュニティー ---[[ZFS Resources>>http://hub.opensolaris.org/bin/view/Community+Group+zfs/]] --ブログ ---[[Bill Moore氏>>http://blogs.sun.com/bill/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbill%2F&sl=en&tl=ja]]) ---[[Jeff Bonwick氏>>http://blogs.sun.com/bonwick/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbonwick%2F&sl=en&tl=ja]]) ---[[Neelakanth Nadgir氏>>http://blogs.sun.com/realneel/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Frealneel%2F&sl=en&tl=ja]]) ---[[Brendan Gregg氏>>http://blogs.sun.com/brendan/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbrendan%2F&sl=en&tl=ja]]) ---[[Neil Perrin氏>>http://blogs.sun.com/perrin/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fperrin%2F&sl=en&tl=ja]]) ---[[Constantin Gonzalez Schmitz氏>>http://blogs.sun.com/constantin/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fconstantin%2F&sl=en&tl=ja]]) -Solaris 10 と OpenSolaris でのzpoolバージョン比較 --zpool(ストレージフォーマット)のバージョンは、以下のコマンドで確認できる。 --- # zpool upgrade -v ---ネタ元: [[ZFS ストレージプールをアップグレードする @ docs.sun>>http://docs.sun.com/app/docs/doc/819-6260/gcikw?l=ja&a=view]] --2009年12月時点では、Solaris 10 10/09が最新。 ---Solaris 10 10/08・5/09: [[バージョン 10>>http://hub.opensolaris.org/bin/view/Community+Group+zfs/10]] ---OpenSolaris 2008.11: [[バージョン 13>>http://hub.opensolaris.org/bin/view/Community+Group+zfs/13]] ---OpenSolaris 2009.06: [[バージョン 14>>http://hub.opensolaris.org/bin/view/Community+Group+zfs/14]] ---Solaris 10 10/09: [[バージョン 15>>http://hub.opensolaris.org/bin/view/Community+Group+zfs/15]] --アップグレードしてしまうと、戻せないので注意。OSのアップグレート時、zpoolについてはしばらくアップグレードを保留したほうが良さげ。 -SSD導入でのZFS性能強化 --参考資料 ---[[ZFSはどう活用できるか @ @IT>>http://www.atmarkit.co.jp/fserver/articles/zfs/03/01.html]] ---[[SSD統合効果で速度が3倍、容量が2倍という例も @ @IT>>http://www.atmarkit.co.jp/ad/sun/0906storage/openstorage.html]] ---[[10/08 リリース: 別個の ZFS ログデバイスを設定する @ docs.sun>>http://docs.sun.com/app/docs/doc/819-6260/gfgaa?l=ja&a=view]] ---[[10/09 リリース: ZFS ストレージプールにおけるキャッシュデバイスの使用 @ docs.sun>>http://docs.sun.com/app/docs/doc/819-6260/gfxul?l=ja&a=view]] ---[[ZFS L2ARC @ Sunブログ>>http://blogs.sun.com/brendan/entry/test]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fbrendan%2Fentry%2Ftest&sl=en&tl=ja]]) --考察 ---ハイブリッド・ストレージ・プールとして、二つの機能がサポートされている。 ----ZIL(Write用ログ領域): データ書き込み時のsyncをSSDで受け、素早く完了させる。物理メモリー容量の半分程度のSSD容量を使用する。 ----L2ARC(Read用拡張2次キャッシュ): 静的データをSSDに溜め、HDDの苦手なランダム読み込みを高速化する。SSDが大容量であるほど効果も高いと考えられる。 ---必要な特性 ----ZILは(保持時間は短いが)信頼性が要求される。必要に応じてミラーリングも構成できるが、SSD製品ではSLC型が妥当と思われる。 ----L2ARCの信頼性はほどほどで良い。チェックサムで誤りが見つかればSSDのデータは読み捨ててディスクから読み直す。また、システムをシャットダウンすると内容は破棄され、システム起動時は空の状態になる。SSD製品は、廉価なMLC型で良いと思われる。 ---Sunのプロモーション資料では、ZIL用SSDが32GB×1、L2ARC用SSDが80GB×1の構成で、SATAがSASより早くなると謳われている。 ----容量からSSD製品を推定すると、恐らく、ZILにはIntelのSLC型、L2ARCにはIntelのMLC型を採用しているのではないか? ---ZILが真価を発揮するのは、重い多重トランザクション処理でコミット性能が響くケースと考えられる。個人用途では、L2ARCのみで十分な改善効果を期待できるのではないか? --実機での導入確認 ---L2ARCサポートが導入されたSolaris 10 10/09リリースは、不具合を持つ地雷品と思われるため、実機導入はしばらく保留とする -Solaris 10/09、OpenSolaris 2009.06での書込み性能低下 --ZILの動作に変更があったためか、改版以降、ZFSへの書込み性能に低下が見られる。 ---改版前は、100Mバイト/秒ほどの速度で書込みをしても、数秒間バッファリングされ、物理ディスクへの頻繁な書込みはなかった。 ---改版後は、小刻みな書込みが行われるようになった。 --ZILの無効化を設定すると、この性能低下は回避できるようだ(Sunは推奨していない)。そのため、ZILの動作が何らかの形で関係していると考えられる。 ---無効化の方法は、下記の資料に記載されている。しかし、同時にこの資料では、無効化設定を利用環境に適用してはいけないと強く言っている。リスクとして挙げられているのは、データの整合性であるが、ファイルシステムとしての整合性は壊れないようにも読める。 ----[[ZFS Evil Tuning Guide>>http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.solarisinternals.com%2Fwiki%2Findex.php%2FZFS_Evil_Tuning_Guide&sl=en&tl=ja]]) --ZILは、ZFSのバージョンアップに伴って機能拡張されているが、ZILそのものはZFSの初期段階から実装され、その機能目的も変わっていないようだ。 ---ZILの目的については、以下のブログが詳しい。 ----[[slog blog (or blogging on slogging)・ZFS: The Lumberjack @ Neil Perrin氏>>http://blogs.sun.com/perrin/]] ([[Google翻訳>>http://translate.google.co.jp/translate?js=y&prev=_t&hl=ja&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fblogs.sun.com%2Fperrin%2F&sl=en&tl=ja]]) ----これを読む限りでは、明示的なSYNC指示がない限り、バッファに数秒間溜められる動作が正しいように見える。 ---ZILの内部構造については、以下のブログが詳しい。動作回数を確認するためのDtraceスクリプトも挙げられている。 ----[[A quick guide to the ZFS Intent Log (ZIL) @ Neelakanth Nadgir氏>>http://blogs.sun.com/realneel/entry/the_zfs_intent_log]] ([[Google翻訳>>http://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=http%3A%2F%2Fblogs.sun.com%2Frealneel%2Fentry%2Fthe_zfs_intent_log]]) -----示されているソースファイルはリンク切れしている。現在参照できるリンク: [[zil.c>>http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/zil.c]] [[txg.c>>http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/txg.c]] -----txg_time(5秒)は、この後、txg_timeout(30秒)にさし換えられたようだ。 --改版前もZILは実装されていたことを考えれば、ZILを無効化しての回避策は、デグレードと考えられる。 -COWは絶対ではない --SCSI・SASディスクや最近のSATAディスクには、コマンドキューイング機能が実装されている。コマンドキューイング機能が働くと、ZFSのウリのひとつであるCOW(Copy-On-Write)の原則が崩れ、SYNCができずにシステムが停止した場合には、ファイルシステムの整合性を保証できなくなるのではないか? ---参考情報: [[ネイティブ・コマンド・キューイング (NCQ) とは? @ Intel>>http://www.intel.com/jp/support/chipsets/imst/sb/CS-012305.htm]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。