ZFSのintent log(ZIL)についての考察
@tokuhy ARC/L2ARCの説明がリードキャッシュとかいてあります。あとZILが使われるのは同期Write時のみで非同期Writeのときは使われません。
2010-05-26 00:45:02@kohju ZILは同期書き込みのために使います。ARCがディスクにフラッシュされるのが30秒くらい遅れるので、これでは同期書き込みにならないのです。
2010-05-26 01:47:47@mayn_lum その同期書き込みの瞬間ってのは、nfsdからsyncしたとき、arcバッファが書き込みであふれたとき、30秒でおわらないとき・・・と思ってるんですけど、他にあります?
2010-05-26 01:52:01@kohju 同期書き込みきたら ARC にも ZIL にもいっちゃいますよ。ちゅどんって電源落ちた時に同期書き込みのデータ整合性を確保するために。
2010-05-26 01:59:30@satokaz いや、同期書き込みが明示的に呼ばれるときは当たり前として、同期書き込みが発効されていないのに、ZILがつかわれるときの話です。
2010-05-26 02:02:37@satokaz O_SYNC/O_DSYNCはファイル単位なので該当するファイルのみZILを使いまくります。syncはファイルシステム全体なのでがんばってARCからディスクに書きにかきに行きますがそのときはARCの内容をZILに書くことはしません。
2010-05-26 02:03:51@satokaz 書き込みをキャッシュするARCバッファがあふれたときとか、30秒分のライトが終わらないときとかも、外付けのlogディスクをつかわないのかなと。
2010-05-26 02:04:02@kohju たぶん、pool が持ってる intent log と SSD とか使って外だしする separate intent log の役割の違いってことですかね?
2010-05-26 02:08:33@kohju logディスクが使われるようなことは無いです。NFS Writeの場合でもcommitが帰ってくるのが遅くなるだけです。
2010-05-26 02:08:38@satokaz ですです。外付けのlog ディスクは一体、ほんとにsyncの時だけしか使われてないのかしら?と言う話。
2010-05-26 02:09:39@kohju もし外付けのLogディスクがSyncの時につかわれるとしたらそのあとでlogからpoolへのコピーが実行される必要があります。
2010-05-26 02:11:57@kohju zilに書かれた内容はいずれpoolに書かれます。でもそれは30秒後かもしれません。APIコールを呼んだ側にはZILに書かれた時点でリターンしてきています。
2010-05-26 02:17:52