阿里雲快照容量基本原理

phpcookie發表於2017-06-05

快照容量與磁碟容量的關係

快照是在某個時間點,對整個磁碟資料狀態的捕捉。在
建立快照的過程中, 通過消除空塊的操作,使得單個快照容量小於磁碟容量。
阿里雲會識別出從未寫入過資料的磁碟空間,並標記為空塊,不進行計量, 以節省使用者的快照空間。

資料寫入操作的準確定義

首先澄清一個概念,對底層分散式儲存系統而言,“資料寫入操作”不僅僅 意味著使用者寫入的業務資料,也包括格式化磁碟等一系列 IO 操作。
使用者在拿到磁碟後,必須要先格式化才能正常使用,格式化的本質是建立文 件系統的過程。一個分割槽或磁碟在作為檔案系統使用前,需要初始化,並將資料 結構記錄到磁碟上,這個過程就叫建立檔案系統。
因此,在磁碟上建立檔案系統,也就意味著對磁碟有資料寫入操作。
不同的檔案系統,在格式化時寫入的檔案大小也不盡相同,具體如下:

  1. Windows 系統格式化,分為快速和正常格式化:
    • 快速格式化只是給分割槽分配檔案系統,並重寫目錄表;

• 正常格式化不但會進行上述工作,還會對分割槽逐扇區進行掃描以
確定和標記壞扇區;
• 因此正常格式化操作,會填充磁碟空塊,相當於把磁碟全盤寫了
一遍。在此種情況下,第一個全量快照的大小會近似於磁碟容量。

   而快速格式化佔用的實際空間則相對較少。
  1. Linux 系統格式化,也同樣是建立檔案系統的過程。因此剛剛格式化完
    畢的磁碟,在使用者沒有寫入業務資料的時候,第一個快照也會有一定的 容量大小,具體要看不同的檔案系統格式而定。

虛擬機器內刪除檔案會減少空間佔用嗎?

檔案系統中所謂刪除只是在需要刪除的檔案頭部做個標記,告訴使用者這塊空 間可以利用了,並不會減少磁碟本身的空間佔用。

為什麼快照容量大於檔案系統內看到的資料量?

如上所述,檔案系統的格式化、檔案的刪除操作以及使用者的寫資料行為都會 使得磁碟空塊數量不斷減少,從而減弱了建立快照過程中消除空塊的效果。因此, 使用者會看到快照容量比檔案系統內展示的資料量要大。

為什麼快照刪除了之後,快照鏈總容量有時不會減少?

由於阿里雲採用的是增量快照的方式,即後面的快照會和之前的快照進行比對,如果是全部內容相同,則直接引用之前快照的內容,例如:
s1->s2->s3

在建立s3時,會把磁碟的內容和s2的內容進行比較,如果沒有發生任何變化,則直接引用s2的內容,增量大小則為0,s2的引用計數為1,此時刪除s2,並不會回收s2佔用的儲存空間。


相關文章