iT邦幫忙

0

vCenter 6.7的VMFS儲存區如何回收windows虛擬機上的thin provision類型的虛擬硬碟上釋放的空間???

  • 分享至 

  • xImage

請問前輩,怎麼維護windows虛擬機的thin provision type的虛擬硬碟,windows虛擬機上的虛擬硬碟將空間釋放出來,但是vCenter上的vmfs儲存區的空間還是沒釋放
windows虛擬機版本 : windows server 2008R2和windows server 2016都有這個狀況
vCenter和vSphere host版本都是6.7
圖一,vCenter控管介面顯示此虛擬機使用1.15TB
https://ithelp.ithome.com.tw/upload/images/20211029/20006861PlTs3GyGkB.jpg

圖二,但是實際上,windows虛擬機的thin provision type的虛擬硬碟只使用大概172GB
https://ithelp.ithome.com.tw/upload/images/20211029/20006861Ts463krOPs.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
Ray
iT邦大神 1 級 ‧ 2021-10-29 23:13:33
最佳解答

你要把 VM Free 的空間全部填成 Zero, 他才能被回收;
這個工作要在 VM 關機狀態下做, 官方 KB 有工具和程序:
https://kb.vmware.com/s/article/2136514

看更多先前的回應...收起先前的回應...
唬爛 iT邦好手 1 級 ‧ 2021-10-30 16:58:52 檢舉

大神請教一下
VM如果一開始就選擇Thin模式,不是使用多少才佔用多少空間嗎?然後犧牲的是磁帶I/O存取效能
我的理解正確嗎?
如果是,那為何會發生發問者的狀況?
https://www.google.com/amp/s/kenwu0310.wordpress.com/2017/10/03/vmware-esxi-vm-%25E7%25A1%25AC%25E7%25A2%259F%25E6%25A0%25BC%25E5%25BC%258F%25E5%25B7%25AE%25E7%2595%25B0%25E8%2588%2587%25E5%25BB%25BA%25E8%25AD%25B0/amp/

Ray iT邦大神 1 級 ‧ 2021-10-30 17:18:25 檢舉

先簡單問兩個問題:

  1. 當你在 Guest OS 下令:刪掉一個檔案的時候, OS 的 File system 是怎麼去刪資料的? 他的每一步動作是甚麼? 寫了甚麼? 刪了甚麼?
  2. ESXi Host 要如何知道: VM Disk 裡面的每一個 Block 中, 哪個 Block 的資料是有用要保留的? 哪個 Block 是沒用可以丟棄的?

這兩個問題的答案, 可以解釋你的疑問...
我正要出門, 晚點有時間再詳細說明....

唬爛 iT邦好手 1 級 ‧ 2021-10-30 19:09:48 檢舉

感謝大神的開釋
大概知道原因了?
如果您方便,請再詳細說明,謝謝

Ray iT邦大神 1 級 ‧ 2021-10-30 20:15:26 檢舉

第一個問題:

File system 刪除一個檔案, 他只會去刪 Index table, 並不會去動到真正的檔案本體. 他就是把 Index 裡面, 指向這個檔案的指標刪掉或者歸零而已, 檔案內容完全不會去動.....

但是你每次在瀏覽檔案區的時候, 都是要從 Index 開始查找, 所以 Index 刪掉就等於你找不到這個檔案了, 計算容量的時候, 也不會去計入已經刪掉的 Index;

雖然檔案本身仍然存在, 仍然佔用空間, 但從 File System 角度看, 他認為: 這個容量是不存在的, 直到其他空間用滿, 沒有空間可用又需要寫入的時候, 他才會把後面要寫的資料, 直接覆蓋到這個一直存在的區域內.

所以, 對實體硬碟來說, 根本就沒有所謂: 刪除檔案, 這樣的動作, 只是把後面的資料, 不斷覆蓋到舊的/已經不用的檔案位置上去, 一直疊上去. 所以也不會有: 空間被清出來, 這樣的動作.

ESXi VM Disk 也只是在反映實體硬碟的這些動作而已.
既然你實體硬碟上面不會真的刪掉, ESXi 也不會刪掉.

第二個問題:

ESXi Disk 模擬的動作, 就是一連串的 BIOS Disk 呼叫: 根據 Cylinder/Head/Sector 參數, 找到資料定位, 然後讀/寫資料. 他只認得: C/H/S 和 Read/Write 這樣的指令, 也不會再傳遞任何具有人類意識的備註或說明;

所以他根本不知道你是要幹嘛? 你要讀, 他就讀給你; 你要寫, 她就幫妳寫; 至於你讀寫的資料, 對他有甚麼意義? 他完全不知道!

當 File System 在 Index Table 標記說: 這個檔案要刪除! 他的動作就可能只是: 下令給 BIOS 到 C12/H64/S33 這個位置, 在這裡寫入, 假設: 0x10/0x54/0x12, 代表已經刪除掉了. 要刪另外一個檔案? 那就叫 ESXi 去 C67/H23/S89 這個位置, 寫入: 0x64/0x28/0x75 這個資料, 代表已經刪除了......

ESXi 又如何能了解這些代表甚麼意義?
他頂多也只能照單全收, 按表操課而已.

刪除一個檔案/刪除幾個檔案/刪除全部檔案....
這些都只是對人類有意義而已, 他是透過 File system 去紀錄和演繹出來的; 至於比 File System 更底層的 Disk Subsystem, 他只有聽命行事, 沒有思考能力, 完全不了解你想做甚麼

因此當你在 Guest OS 裡面刪掉資料之後, 雖然 OS 的 File System 能幫你回收並算出正確的可用容量, 但實際上這些資料仍然佔用著實體位置, 直到下一個資料蓋掉他之前, 都會一直存在磁碟子系統裡面. ESXi Thin Provision 就是忠實反映這個狀況.

唬爛 iT邦好手 1 級 ‧ 2021-10-30 21:48:47 檢舉

感謝大神開釋
第一個問題,嗯,完全理解,基本的電腦概論
第二個問題,以前完全沒去思考過...,枉費VMWare摸那麼久了...,慚愧...
以上,謝謝

Dear Ray:
後來我找了一台之前預計要砍掉的虛擬機來測試
以下為測試前的狀況
虛擬機在vCenter上的Storage Usage(測試前)
https://ithelp.ithome.com.tw/upload/images/20211030/20006861rBzzDioXdB.jpg
虛擬機實際windows file system的磁碟Usage(測試前)
https://ithelp.ithome.com.tw/upload/images/20211030/200068616T7Aq4aFgt.jpg

虛擬機實際windows file system的磁碟Usage(測試sdelete之後)
https://ithelp.ithome.com.tw/upload/images/20211030/20006861krjJePMpWK.jpg

虛擬機在vCenter上的Storage Usage(測試sdelete之後),反而比使用sdelete之前,占用vCenter上的Storage Usage還高,請問這樣正常嗎?
我還可以做下一步驟嗎?
https://ithelp.ithome.com.tw/upload/images/20211030/20006861uKoDAsOyaw.jpg

Ray iT邦大神 1 級 ‧ 2021-10-30 23:33:35 檢舉

這是正常的, sdelete 會把 VM Guest OS 沒用到的 disk block 全部填 0 進去, 等於是把你整個 ESXi 4TB disk 的資料全部寫滿, 所以你在 ESXi 上看到的會是被寫滿的容量.....

這要等到你去執行 vmkfstools -K 之後才會開始裁減這些多餘的 block....

Dear Ray:非常感謝您的耐心回覆,請問那這個ESXi 4TB disk執行 vmkfstools -K起來可能要花不少時間,對吧??? 在執行期間是否
會拉高IOPS影響到同VMFS Datastore上的其他virtual machines呢??? 建議是在離峰時段做嗎?

另外想請教Ray一個問題,是否以下作法也可以讓VMFS Datastore釋放空間???
1.透過storage vMotion或將此虛擬主機關機並移動到其他VMFS Datastore上,那這個虛擬機在vCenter上的Storage Usage也會被釋放???
2.直接刪除掉此虛擬機

搭版詢問一下,請問如果要將C槽多餘的空間回收的話也是使用這個方式去做嗎?

Ray iT邦大神 1 級 ‧ 2021-10-31 17:35:53 檢舉

樓上正確喔....

Ray iT邦大神 1 級 ‧ 2021-10-31 17:40:28 檢舉

1.透過storage vMotion或將此虛擬主機關機並移動到其他VMFS Datastore上,那這個虛擬機在vCenter上的Storage Usage也會被釋放???
2.直接刪除掉此虛擬機

  1. Storage vMotion 只是把原本的 Disk Layout 搬到新的地方存放, 他不知道 Guest OS 裡面的哪些空間是沒有用的? 當然也就不會刻意去縮減大小.
  2. 刪掉 VM 也要記得選: Delete from Disk 才會刪掉占用的空間; 否則就只會刪掉 VM 的設定而已, Disk 卻留在 Storage 裡面.....
Ray iT邦大神 1 級 ‧ 2021-10-31 17:45:01 檢舉

vmkfstools -K起來可能要花不少時間,對吧???

是的, 必須留意你的 IOPS 被消耗光....

通常如果空間足夠的話, 另外新開一個 Thin Disk, 在 Guest OS 裡面先把檔案搬過去, 再砍掉舊的, 這樣操作速度會比上面的方法快, 而且可以控制 IOPS 的上限....

突然覺得VMware真是博大精深阿?我還沒有做下一步驟vmkfstools -K disk_name.vmdk,虛擬機占用Storage Usage的空間居然自己變小...真是不知道怎麼理解它........
https://ithelp.ithome.com.tw/upload/images/20211101/20006861I7LtdSrUUf.jpg

我要發表回答

立即登入回答