磁碟收縮不適用於 ESXi 來賓
大家好!我在 StackOverflow 網路上的第一篇文章 :)
我們正在執行一些 ESXi 5.0/vCenter 基礎架構來主要託管具有 ext3 分區的 Debian 6/amd64 來賓系統,並根據debian 錯誤 471784
open-vm-tools
從原始碼編譯。有一個問題在整個網際網路上都被提出,但在任何地方都沒有給出確鑿的答案。
當嘗試在獨立持久模式下縮小精簡配置磁碟時,沒有任何快照、父級、複製,我一直收到以下錯誤:
root@linux64:~# vmware-toolbox-cmd disk list Shrink disk is disabled for this virtual machine. Shrinking is disabled for linked clones, parents of linked clones, pre-allocated disks, snapshots, or due to other factors. See the User's manual for more information.
(順便問一下,“其他因素”是什麼,大量的白皮書和技術手冊中的哪一個是使用者手冊?:)
我知道我可以用零填充分區(事實上,我
shred -fuzn0
在刪除大文件時確實使用過)然後關閉有問題的來賓並使用各種方法,例如vmkfstools
在精簡配置模式下複製或 vMotioning 磁碟等,但所有其中的一個要麼導致客戶機被收縮而導致停機時間損失,要麼導致數據儲存和/或主機之間的數據無根據地移動。答案是:在 ESX/ESXi 下沒有收縮(從版本 5 開始)。
文件內容如下:
重要在以下情況下不允許使用收縮磁碟:
- 虛擬機託管在 ESX/ESXi 伺服器上。 只有在導出虛擬機時, ESX/ESXi Server才能縮小虛擬磁碟的大小。但是,ESX/ESXi 伺服器上的虛擬磁碟佔用的空間不會改變。
- 虛擬機具有Mac 客戶作業系統。
- 創建虛擬磁碟時,您已將所有磁碟空間預分配給虛擬磁碟。
- 虛擬機包含一個快照。
- 虛擬機是連結複製或連結複製的 父級。
- 虛擬磁碟是非持久模式下的獨立磁碟 。
- 文件系統是日誌文件系統,例如ext4、xfs 或 jfs文件系統。
難怪在 VMWare Workstation 中有縮小選項,但在連接到 ESXi 或 vCenter 實例的 vSphere 客戶端中沒有。
http://www.vmware.com/pdf/vmware-tools-cli.pdf 第 13 頁:
在以下情況下不允許縮盤:
虛擬機託管在 ESX/ESXi 伺服器上。只有在導出虛擬機時,ESX/ESXi Server 才能縮小虛擬磁碟的大小。但是,ESX/ESXi 伺服器上的虛擬磁碟佔用的空間不會改變。
實際上,有一種方法可以在 ESXi 上縮小虛擬機,儘管您需要為此關閉虛擬機。就是這樣:
- 將 VM 內的所有未使用空間歸零:
dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero
2. 對其他掛載點、交換分區等執行相同操作。 3. 關閉虛擬機。 4. SSH 到 ESXi,並發出以下命令:
vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk
這將需要一些時間… vmkfstools 在您的 VMDK 中“打孔”,例如取消分配所有用零填充的塊,從而有效地縮小您的 VMDK。