一直對(duì)快照的兩種模式cow和row區(qū)分不開(kāi),今天看到一篇文章講的很清晰。轉(zhuǎn)載過(guò)來(lái),希望能給有同樣困惑的同學(xué)以幫助。
所謂快照,是指某數(shù)據(jù)集在某一時(shí)刻一個(gè)完全可用的拷貝。也叫即時(shí)拷貝。注意是一個(gè)完全可用的。如果是在window環(huán)境下,則要結(jié)合VSS 機(jī)制,把應(yīng)用程序的buffer,文件系統(tǒng)的buffer,操作系統(tǒng)的buffer全部刷向磁盤(pán)后,再做快照。
當(dāng)前快照有兩種實(shí)現(xiàn),分別是COW(Copy on first write) 和ROW(Redirect on first write).
假如有一個(gè)卷8個(gè)物理塊,分別為1~8, 在某一個(gè)時(shí)刻做了快照,這時(shí)候生成了一個(gè)快照卷,快照卷也有8個(gè)塊,和原始卷一樣指向相同的物理塊。這時(shí)候有一個(gè)新的io,修改原始卷的第8個(gè)物理塊,對(duì)COW 而言,會(huì)依次做如下幾步
1、分配一個(gè)新的物理塊。我們稱(chēng)為第9個(gè)物理塊
2、讀取第8個(gè)物理塊
3、新讀取的第8個(gè)物理塊數(shù)據(jù)寫(xiě)入到第9個(gè)物理塊。
4、更新快照卷map,指向第9個(gè)物理塊
5、更新第8個(gè)物理塊

從上面可以看出,本來(lái)寫(xiě)一個(gè)物理塊,變成了1讀3寫(xiě)。
COW 優(yōu)點(diǎn):
1、原始卷物理塊連續(xù)。沒(méi)有碎片。
COW 缺點(diǎn):
1、寫(xiě)放大,本來(lái)一個(gè)寫(xiě),變成1讀3寫(xiě)。
對(duì)ROW 而言,會(huì)依次做如下幾步
1、分配一個(gè)新的物理塊。我們稱(chēng)為第9個(gè)物理塊
2、數(shù)據(jù)寫(xiě)入到第9個(gè)物理塊。
3、更新原始卷map,指向第9個(gè)物理塊

從上面可以看出,本來(lái)寫(xiě)一個(gè)物理塊,變成了2寫(xiě)。
ROW 優(yōu)點(diǎn):
1、性能比COW 好。
ROW 缺點(diǎn):
1、寫(xiě)放大,本來(lái)一個(gè)寫(xiě),變成2寫(xiě)。
2、原始卷物理塊不連續(xù)。沒(méi)、有碎片。