「ZFSチューニング」の編集履歴(バックアップ)一覧はこちら
ZFSチューニング - (2011/09/14 (水) 08:08:55) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
-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秒)にさし換えられたようだ。
-COWは絶対ではない
--改版前もZILは実装されていたことを考えれば、ZILを無効化しての回避策は、デグレードと考えられる。
--SCSI・SASディスクや最近のSATAディスクには、コマンドキューイング機能が実装されている。コマンドキューイング機能が働くと、ZFSのウリのひとつであるCOW(Copy-On-Write)の原則が崩れ、ファイルシステムの一貫性は十分に保証できなくなるのではないか?
---参考情報: [[ネイティブ・コマンド・キューイング (NCQ) とは? @http://www.intel.com/jp/support/chipsets/imst/sb/CS-012305.htm]]
-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)の原則が崩れ、ファイルシステムの一貫性は十分に保証できなくなるのではないか?
---参考情報: [[ネイティブ・コマンド・キューイング (NCQ) とは? @http://www.intel.com/jp/support/chipsets/imst/sb/CS-012305.htm]]