我有一個關於Linux中的mmap文件(Ubuntu 14具體)的問題。Linux內存映射文件(刪除)
我們在主機上運行DSE/DSE SOLR,我們看到一些文件隨機消失。它看起來像應用程序開始構建索引時創建了一堆mmap文件,並在繼續構建索引時使用它們。查看/ proc/$ {dse_pid}/map_files我看到一堆指向(刪除)文件的符號鏈接。在我們的日誌中,我們看到的東西像
錯誤[HTTP-8983-EXEC-5] 2017年4月20日02:08:41,901 SolrException.java (線136),IO,同時試圖讓錯誤java.io.FileNotFoundException:在 目錄的大小_2zm29_Lucene41_0.pos
什麼樣的map_files樣子就是這樣的一個例子:
LR -------- 1個卡桑德拉卡桑德拉64 Apr 21 16:49 7f82c1a22000-7f82c1a23000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.tim (刪除)LR -------- 1個卡桑德拉卡桑德拉64 04月21 16點49 7f82c1a23000-7f82c1a24000 - > /卡桑德拉/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.pos (刪除)lr -------- 1 cassandra cassandra 64 Apr 21 16:49 7f82c1a24000-7f82c1a25000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.doc (刪除)lr -------- 1 cassandra cassandra 64 Apr 21 16:49 7f82c1a25000-7f82c1a28000 - > /cassandra/data/solr.data /clearcore_solr.validations_search/index/_2grig_Lucene41_0.pos (刪除)lr -------- 1 cassandra c assandra 64 Apr 21 16:49 7f82c1a29000-7f82c1a2a000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig.nvd (刪除)lr -------- 1 cassandra cassandra 64 4月21 16:49 7f82c1a2a000-7f82c1a2b000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_Lucene41_0.doc (刪除)
我的問題是,是否有任何可能導致這些文件隨機消失?好像它每隔幾天有一個或兩個文件記錄這種類型的錯誤,proc /中大約有90個(刪除的)鏈接。操作系統是否可以提前清理某些mmap文件,從而導致proc /中的符號鏈接被破壞?我無法解釋這種行爲。
此外,通常情況下,如果一個進程沒有正確關閉其與mmap文件的連接,操作系統是否清理文件並將其從文件系統中刪除?或者如果一個進程不乾淨地打斷它與文件的連接會發生什麼?