如何處理檔案系統和快照空間大小不一致
本文在介紹如何處理檔案系統和快照空間大小不一致的基礎上,重點探討了其具體步驟,本文內容緊湊,希望大家可以有所收穫。
為什麼檔案系統和快照空間大小不一致?
有使用者諮詢,在ECS實例內刪除檔案後再打快照,發現快照容量並沒有變小。出現該現象的原因與快照原理、以及檔案系統與磁碟、快照的關係有關,即,只要被寫過資料的儲存區塊(Block),即使在磁碟中的相關檔案已經被刪除,資料區塊仍會被記錄到快照中,所以出現快照比磁碟佔用空間大的現象。檔案系統中所謂刪除只是在需要刪除的檔案頭部做個標記,讓使用者知道這塊空間可以利用了,但並不會減少磁碟本身的空間佔用。
為什麼檔案系統和快照空間大小不一致?
使用者在實例內部看到的是磁碟 (EBS),在磁碟分割區上建立的是檔案系統 (File System)。檔案系統負責管理磁碟空間,其操作最終會轉換為磁碟的 I/O 請求。 EBS 會記錄 Block(指磁碟的邏輯區塊位址被區塊儲存分割為相同大小的區塊)狀態,按需將髒資料拷貝到 OSS,這就是打快照的過程。
以下原因可能會造成檔案系統的空間與快照大小不一致:
檔案系統本身的元資料會佔用磁碟空間。
建立檔案系統過程會寫大量 Block。特別的,Windows 的慢速格式化會寫髒大量 Block,而使用快速格式化可以減少寫Block 的數量。
檔案系統為了減少開銷,刪除檔案只是在內部做個標記,而EBS 不感知這個刪除指令,Block 仍然是已分配狀態,所以仍會把這部分也做到快照裡,導致快照比檔案系統大。
Virtio-block 和Xen 的Block-front 等模組不支援TRIM 指令(一種IO指令,提示LBA上的某段資料不再使用,可以刪除),因而磁碟無法感知資料可以被刪除。
建立快照原理
建立快照原理如下圖所示。
說明:
將磁碟 LBA(邏輯區塊位址) 分割為 Block,未指派的稱為空區塊,圖中白色小方塊表示。
只要 Block 被寫過(已分配,將不再是空塊),就將參與計量。
磁碟第一個快照是全量,空區塊不拷貝。
磁碟後續快照是增量快照,拷貝自上一個快照以來的增量髒數據,因此同一個 Block 在不同快照中可能會出現多個版本(圖中以不同顏色來表示)。
快照計量方法
#如上圖所示,快照記錄空間共有11 個Block,比磁碟T2 中的9 個Block 還要多出2 個。
對單一區塊磁碟的所有快照整體計量。
只對已分配的 Block 進行計量。不同時間點相同版本 Block 只統計一次。
不同版本的 Block 佔用 N 倍空間。
刪除快照的原則
刪除快照的原則如下圖所示。
說明:
離線分析已刪除快照的所有 Block,刪除其中未被其他快照引用的資料。
刪除S1 之後,剩下的快照一共有10 個Block(包含S0 的6 個、S1 產生的2 個髒資料、S2 的2 個。),而不是8 個Block(S0 的6個、S2 的2 個)。
「資料寫入操作」的準確定義
首先澄清一個概念,對底層分佈式儲存系統而言,「資料寫入作業」不僅意味著使用者寫入的業務數據,還包括格式化磁碟等一系列I/O操作。
用戶拿到磁碟後,必須先格式化才能正常使用。格式化的本質是建立檔案系統的過程。一個分割區或磁碟在作為檔案系統使用前,需要初始化,並將資料結構記錄到磁碟上,這個過程就叫建立檔案系統。
因此,在磁碟上建立檔案系統,也意味著對磁碟有資料寫入操作。不同的檔案系統,在格式化時寫入的檔案大小也不盡相同,具體如下:
Windows系統格式化,分為快速和正常格式化:
快速格式化只是給分區分配檔案系統,並重寫目錄表;
正常格式化不但會進行上述工作,還會對分區逐扇區進行掃描以確定和標記壞扇區;
因此正常格式化操作,會填入磁碟空區塊,相當於把磁碟全碟寫了一遍。在此種情況下,第一個全量快照的大小會近似於磁碟容量。而快速格式化佔用的實際空間則相對較少。
Linux系統格式化,也同樣是建立檔案系統的過程。因此剛剛格式化完畢的磁碟,在使用者沒有寫入業務資料的時候,第一個快照也會有一定的容量大小,具體要看不同的檔案系統格式而定。
以上是如何處理檔案系統和快照空間大小不一致的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

BITGet 是一款加密貨幣交易所,提供各種交易服務,包括現貨交易、合約交易和衍生品。該交易所成立於 2018 年,總部位於新加坡,致力於為用戶提供安全可靠的交易平台。 BITGet 提供多種交易對,包括 BTC/USDT、ETH/USDT 和 XRP/USDT。此外,該交易所還在安全性和流動性方面享有盛譽,並提供多種功能,如高級訂單類型、槓桿交易和 24/7 全天候客戶支持。

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

Gate.io是一款受歡迎的加密貨幣交易所,用戶可通過下載其安裝包並安裝在設備上使用。獲取安裝包步驟如下:訪問Gate.io官方網站,點擊“下載”,選擇對應操作系統(Windows、Mac或Linux),將安裝包下載至計算機。安裝過程中建議暫時禁用殺毒軟件或防火牆,確保安裝順利。完成後,用戶需創建Gate.io賬戶以開始使用。

在Docker環境中使用PECL安裝擴展時報錯的原因及解決方法在使用Docker環境時,我們常常會遇到一些令人頭疼的問�...

在LAMP架構下整合Node.js或Python服務許多網站開發者都面臨這樣的問題:已有的LAMP(Linux Apache MySQL PHP)架構網站需要...

BeyondCompare文件比較與同步的難題:大小寫敏感性失效在使用Beyond...
