2013-07-11 52 views
1

我執行的fsync()操作在MongoDB中,但它只是立即返回。它似乎沒有做任何事情。我如何驗證數據是否確實已經刷新到磁盤?MongoDB的驗證,如果FSYNC工作

注:我SYNCDELAY設置爲0,這意味着寫將不會自動每60秒fsync'ed。

我的實際命令使用Perl驅動程序:

$connection->fsync({async=>1}); 

感謝。

回答

3

如果您不希望fsync立即返回,那麼您可以刪除async選項,它將成爲阻塞操作。

但是,如果你不希望它會阻止,你可以使用db.currentOp從殼查詢FSYNC的當前狀態。

如果你想從Perl的信息,你可以用我在this answer概述的技術。不幸的是有沒有方便的方法來直接通過run_command得到它。

+0

好吧,這是完美的!謝謝。將syncdelay設置爲0是否會影響此操作?並且是否必須爲此啓用日誌記錄? – Sai

+1

syncdelay指定自動fsyncs之間的時間間隔;它不會影響手動執行fsync時發生的情況。日記與fsyncs無關。 – friedo

+0

好吧。謝謝 – Sai