在 Linux 上將檔案寫入為記憶體中的假檔案

在 Linux 上將檔案寫入為記憶體中的假檔案

我想在一個假寫環境中運行一個 Linux 進程,其中所有檔案都寫入(使用寫(2)系統呼叫)被重定向到記憶體緩存,後續讀取(僅限同一區域)將從快取中提供服務。進程完成後可以丟棄快取。

該進程將修改的檔案很大(幾 TB),但寫入的資料總量很小(幾兆位元組)。因此,overlayfs 不是一個選項,因為我沒有幾 TB 的可用空間。

請注意,我不關心假設備節點或假權限,因此假根(1)對我沒有幫助。

這應該可以透過 LD_PRELOAD 來實現,追蹤(2),保險絲(8)或者DM快照。是否有現有的工具可以為我做這件事,如下所示:

$ fakewrites ./myprog myfile.dat

答案1

https://launchpad.net/libeatmydata

LD_PRELOAD 庫停用所有形式的安全地將資料寫入磁碟。 fsync() 變成 NO-OP,O_SYNC 被刪除等。

相關內容