2012-04-12 69 views
2

我有一個運行在KVM/QEMU之上的ARM虛擬機,其中一個文件被掛載爲根文件系統。虛擬機沒有網絡連接,因此安裝根目錄的NFS不存在問題。我正在測試一個IO的特定傳輸機制,所以我有點卡住了我所擁有的。如何禁用根設備上的文件系統緩存?

我想將文件發送到guest虛擬機,所以我想將該文件掛載到主機上,寫入文件,然後卸載它以強制刷新。文件系統的內容很簡單,我有一個備份,所以我沒有腐敗問題。同樣,性能不是問題。

問題是,當我執行mount-write-unmount的事情時,guest虛擬機從未看到該文件。我猜這是由於內核文件系統緩存的結果,並且當我執行ls時,該文件不在那裏。我猜測有關文件系統的元數據被緩存在內存中,並且文件系統的更新永遠不會出現。

我猜如果我禁用文件系統緩存,那麼所有的讀取將被強制爲磁盤,導致文件系統被擊中,我的文件出現。有小費嗎?

回答

2

我能想到的是:

sync 
echo 3 > /proc/sys/vm/drop_caches 

這:

qemu -drive cache=none,file=file.img