Linux

LVM 快照 - 新數據是否被以前的數據替換?

  • May 22, 2021

據我了解,LVM 快照在創建時具有大小。根據 LVM 手冊頁,快照可能會用完所有空間並呈現不可用狀態(除非擴展)。但是它的空間是怎麼用完的呢?

假設:我在源(原始邏輯卷)上有一個 10M 的文件。當我創建快照時,它將是相同的。我在源文件中附加了一些數據。現在文件大小為15M。如果我再次做同樣的事情,通過將 15M 文件的大小設置為 20M,15M 文件會替換快照上的 10M 文件嗎?如果沒有,那麼快照以什麼方式用完其可用空間?

Copy-on-write LVM 快照包含快照和源之間的差異。因此,每次對其中任何一個進行更改時,都會將更改添加到快照中,從而可能會增加快照中所需的空間。(“潛在地”是因為已經為先前更改快照的塊的更改不需要更多空間,它們會覆蓋先前的更改 - 目標是跟踪目前差異,而不是所有更改的歷史記錄。)

LV 不知道儲存在其中的資料結構。將 5MiB 附加到文件會導致至少 5MiB 的更改寫入源,因此需要將更改的塊添加到快照中(以保留其快照內容)。將另一個 5MiB 寫入文件會導致另一個 5MiB(至少)對源進行更改,這會導致將類似數量的數據寫入快照(再次,以保留原始內容)。如快照中所見,文件的內容,或者實際上是卷,永遠不會因為源的更改而改變。

引用自:https://unix.stackexchange.com/questions/650848