thin還是thick 續 ,實證新結論!

2021-09-05 03:14:35 字數 1957 閱讀 8221

曾經寫過一篇關於vmware虛擬磁碟格式的博文:《

thin還是thick?虛擬磁碟格式的選擇題》,介紹了thin和2種thick格式的虛擬磁碟特性,文中也提到vi3.x的時候, 部署(deploy)或轉殖(clone)一台虛機的時候,不能選擇格式,只能是eagerzeroedthick格式,這是vi3.x的乙個缺點,而這個缺點在4.0的時候被克服了,現在我們在vsphere4.0的時候從模板部署或者轉殖一台虛機的時候,可以選擇是thin還是thick。這個改良似乎意味著從模板deploy乙個thin的虛機要優於(或者說快於)deploy乙個thick的虛機。

按照常理理解,不應該如此麼?——因為thin格式需要複製的vmdk檔案尺寸比較小,所以deploy的時候速度也應該比較快才對。但是我有乙個疑問一直掛在心頭:能快多少?是不是這是乙個決定性的因素使得我們應該都選擇thin格式?於是,我設計了以下實驗。

伺服器、網路、儲存都效能足夠,不會引起效能瓶頸。

我以從頭乾淨安裝的方式裝好一台windows xp的vm,名字叫vm-thin,配置記憶體1gb,記憶體保留256mb,配置硬碟8gb,thin格式,關機時顯示占用空間2.02gb,開機時顯示占用空間2.77gb (因為還有0.75gb的swap,為啥0.75gb? 欲知原理請看拙文「

vmware記憶體分配初探」)。然後以clone的方式複製一台完全相同的vm,名字為vm-thick,在複製的時候轉換硬碟格式為thick。這個thick其實是zeroedthick。vm-thick關機時顯示的占用空間是8gb,開機是顯示占用空間8.75gb。

然後我把這2臺vm同時開啟的狀態下,通過storage vmotion,將其從fas3020上遷移到本地磁碟上,然後再遷移回去,分別記錄下時間。接著我將這2臺vm轉換成模板,再利用模板部署新的vm,記錄下時間。最後,我把新模板部署出來的2臺vm再一次從fas3020上遷移到本地磁碟。在這些storage vmotion的過程中,我都選擇「same format as source」 選項。

vm-thin

(2.02gb +0.75gb swap)

vm-thick

(8gb+0.75gb swap)

fas→esx local

storage vmotion

5'38"

2'45"

esx local → fas

storage vmotion

3'02"

1'56"

deploy一台新vm

2'22"

1'12"

fas→esx local

storage vmotion

5'45"

3'03"

實驗的結果令人驚訝:

thick格式的效能要遠遠勝過thin格式。和我之前的設想完全相反!

這個實驗得到以下結論:

(1) thick格式無論在從模板部署新虛機還是storage vmotion的時候都遠比thin格式快,平均大概快40%-50%

(2) 好的網路共享儲存的效能遠優於本地磁碟

這次實驗還有乙個有趣的發現,當storage vmotion的時候,在目的生成新的swap檔案大小是不考慮記憶體保留的,而是完全等於記憶體大小。所以svmotion前磁碟占用空間還是2.77gb和8.75gb,svmotion結束後就變成了3.02gb和9gb了,瀏覽datastore發現,差額就是swap大小的改變引起的。關機重啟後,重新生成swap,就又恢復成了0.75gb的大小。

由於thin格式在vm使用的時候比起thick格式也會有負面的效能影響。這時因為thin格式的磁碟是動態擴大的,乙個數gb大小的vmdk檔案在磁碟上不是一次生成的,因此不像thick的磁碟那樣可以占用連續的磁碟空間,因此在訪問thin格式的磁碟的時候,必然會因為磁頭在不連續的磁碟塊之間移動導致定址時間較長,從而影響到disk io效能。

綜上所述,無論是在部署還是應用時,

thin格式的效能都不如thick,強烈建議大家使用thick格式的虛擬磁碟。

尋尋覓覓,到最後才發現原來「預設」的就是最好的。

Thin平穩啟動的辦法

最近的乙個產品用thin部署,在啟動的時候,伺服器總是會短暫停幾秒種。這對乙個上線的產品來說,是不可以接受的。passenger重啟非常的簡單,也不會終端服務。thin 稍微複雜一點。在重啟thin的時候,指定埠號 如sudo thin restart c thin.yml o 3001分別啟動 對...

dmeventd在thin 裝置自動擴容的作用

註冊事件 register for event 在初始化的時候去註冊乙個事件。包括註冊事件程序id q序列號,初始化事件定義為dm event cmd hello。註冊的id和q都是關於程序的 是為了作為客戶端的dmevrntd程序在獲取到動態連線庫的呼叫之後,才事件有真正的事件註冊,即 int r...

ESXi6 在Thin 配置的LUN上釋放儲存空間

下面是具體操作的步驟。nimble 本身支援powershell,所以我可以通過指令碼或者圖形介面來進行對比。首先看看ps的指令碼 connect nsgroup group 10.1.1.23 credential abc admin ignoreservercertificate report ...