日誌檔案系統上有很多臨時檔案?

日誌檔案系統上有很多臨時檔案?

快速寫入和刪除多個文件

我將在持續一段時間內每秒寫入許多臨時檔案。每個都將在幾毫秒後被刪除。

假設我們有一個影像處理軟體,它可以處理來自快速相機的部分幀,每秒約 2000 個。它們中的每一個都被寫入一個文件,然後在相同的幾毫秒內對文件進行一些更改,再次讀取並刪除。

目前它在tmpfs檔案系統上運行,但我們假設它不能。
不,我不能“只要這樣做就可以修復它”,一些遺留集成需要它。

文件系統如何應對?

我想了解這是如何與檔案系統選項互動的。具體來說,我無法理解檔案系統日誌如何與之互動。

作為一個天真的想法,人們可能希望資料永遠不會接觸磁碟,甚至元資料也不會接觸磁碟;建立檔案然後刪除後,資料是一樣的,對嗎?而且寫入並刪除目錄中的名稱後,目錄也一樣了,對嗎?

驚人的效果

沒有錯。

目錄可以透過多種方式表示相同的檔案名,例如重複使用一個位置來儲存新檔案名,或重複使用另一個位置。
這意味著,當對磁碟區塊進行寫入操作時,它可能已經發生變化而沒有檔案系統層級的更改,因此需要將其寫入磁碟。

但我能否確保它不會為四個操作中的每一個操作編寫一次?那麼期刊呢?我的臨時資料最終會出現在日誌中嗎?我可以阻止嗎?

問題一:做這件事時我應該注意什麼或記住什麼?

答案1

我可以告訴你理論是什麼,但沒有實務經驗。我讀到文件每隔幾秒鐘就會從記憶體推送到磁碟,而刪除得足夠快的文件永遠不會最終出現在磁碟上。連日記裡也沒有。

我不確定文件是否需要存在整整 5 秒鐘才能推出,還是恰好在檢查點時刻存在(每 5 秒發生一次)。可能是後者。如果是這樣,則一些檔案將被吸收到磁碟中。這種情況會定期發生並持續很短的時間。

很少有安裝選項我建議調查一下。您可以透過增加間隔來任意減少這些檢查點時刻,但它們仍然會發生。由於我無法解釋的原因,延遲分配也會產生將資料推送到磁碟的副作用。我不記得在哪裡讀到這件事。

  • commit=nrsec (每 nrsec 秒同步所有資料和元資料。預設值為 5 秒。零表示預設值。)在 Ext3 上
  • Ext4 上的 delalloc(將區塊分配推遲到寫出時間。)

建議的解決方案:使用記憶體檔案系統。這樣您就可以確保磁碟上不會有任何內容。無論是 tmpfs 還是 ramfs,都存在一些差異,例如是否可以交換、成長超出指定容量。我知道這基本上就是您現在正在使用的。它不一定是 /tmp,您可以在任何目錄上建立此類類型的新檔案系統。

http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/

相關內容