2013-06-12 43 views
1

我正在閱讀一些操作系統的概念,並偶然發現了這一點。在寫入快照複製時發生寫請求時會發生什麼?

從我的理解,當你把一個快照,

寫時複製將記錄文件系統(元數據)的當前狀態。 這會導致系統輕微停頓(幾乎是瞬間的)。

如果文件系統在未修改的文件上收到讀取請求,我們正在讀取快照元數據,並將其重定向到原始副本。

當文件系統收到寫請求時會發生什麼?它是否更新原始文件系統和複製的文件系統?

回答

0

這很大程度上取決於您所談論的是什麼樣的快照。

如果您正在討論Btrfs或ZFS等寫入時複製文件系統中內置的快照類型,那麼在快照上寫入請求「正常工作」是文件系統工作方式的副作用:當新數據被寫入,它們被寫入新的位置,並且寫入新的元數據以反映這一點。但是新數據和元數據只能寫入一個快照,而不能寫入其他數據。一旦寫入新數據和新元數據,寫入的快照將釋放舊副本 - 但其他快照仍在使用該副本,因此它們並未實際發佈。最終結果是這些數據不再在兩個快照之間共享。我使用術語「快照」和「其他快照」,因爲在這種類型的系統中,一旦拍攝快照,快照和原始照片都是平等的。

如果您正在討論LVM快照等內容,那麼文件系統實際上完全不知道發生了什麼。就它而言,它是寫給一個普通的塊設備。在這種情況下,LVM必須管理哪些底層塊仍然在快照和快照的原點之間共享,哪些底層塊已經分離。快照存儲發散的塊的副本(或者因爲它們寫入快照或源設備中)。

相關問題