在介绍 vmkfstools 如何使用之前,需要先了解下 vmware 虚拟磁盘的类型:

 

一 虚拟磁盘类型 

   
   
   
   
  1. 使用vSphere Client创建新的虚拟机在选择虚拟磁盘类型时,将会出现以下三个选项: 
  2.  
  3. 厚置备延迟置零 (zeroed thick) //默认选项
  4. 厚置备置零   (eager zeroed thick) 
  5. 精简置备     (thin) 
  6.  
  7. 厚置备延迟置零:以默认的厚格式创建虚拟磁盘。创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,
  8. 但是以后从虚拟机首次执行写操作时会按需要将其置零。 
  9.  
  10. 厚置备置零:创建支持群集功能(如 Fault Tolerance)的厚磁盘。在创建时为虚拟磁盘分配所需的空间。
  11. 与平面格式相反,在创建过程中会将物理设备上保留的数据置零。创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘长。 
  12.  
  13. 精简置备:使用精简置备格式。最初,精简置备的磁盘只使用该磁盘最初所需要的数据存储空间。如果以后精简磁盘需要更多空间,
  14. 则它可以增长到为其分配的最大容量。 

 

二 vmkfstools 操作实例

注意事项:
操作前请先关闭虚拟机
操作前需要打开ESXI ssh 服务,并需要登陆到ESXI
用户名:root
密码:使用vSphere Client登录ESX/ESXi的密码

   
   
   
   
  1. 1 虚拟磁盘类型转换,thick to thin 
  2.  
  3. vmkfstools 命令格式 
  4. # vmkfstools -i<source-disk-name.vmdk>-d {thin|thick}<destination-disk-name.vmdk> 
  5. 参数解释: 
  6. -i <source-disk-name.vmdk>参数:原vmdk磁盘名 
  7. -d {thin|thick}<destination-disk-name.vmdk> :目标磁盘的格式,thin或thick; <destination-disk-name.vmdk>为要生成的目标vmdk磁盘名; 
  8.  
  9. 1.1 进入虚拟机所在的datastore目录,每个目录为一个虚拟机 
  10. ~ # cd /vmfs/volumes/datastore1 
  11. /vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404 # ls 
  12. cobbler-5.85          converter-two-57.72   datanode2-57.78 
  13. converter-four-57.74  converter-win-xp      ovf-cos-5.7 
  14.  
  15. 1.2 此次转换的虚拟机为converter-two-57.72,进入该虚拟机目录 
  16. /vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404 # cd converter-two-57.72/ 
  17. /vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404/converter-two-57.72 # du -sh * 
  18. 20.0G   converter-two-flat.vmdk 
  19. 64.0k   converter-two.nvram 
  20. 64.0k   converter-two.vmdk 
  21. 0   converter-two.vmsd 
  22. 64.0k   converter-two.vmx 
  23. 64.0k   converter-two.vmxf 
  24. 64.0k   vmware-4.log 
  25. 1.0M    vmware-5.log 
  26. 1.0M    vmware-6.log 
  27. 1.0M    vmware-7.log 
  28. 1.0M    vmware-8.log 
  29. 64.0k   vmware-9.log 
  30. 64.0k   vmware.log 
  31.  
  32.  
  33. 1.3 需要注意:转换过程中需要用到的文件是vmdk磁盘文件,vmdk有两种,一种是”虚拟机名.vmdk”,另一种是”虚拟机名-flat.vmdk”,vmdk文件很小,
  34. 存放了虚拟磁盘的一些配置信息(如虚拟磁盘数据文件等),实际数据都存放在flat.vmdk文件中,转换时需要使用vmdk文件而不是flat.vmdk文件 
  35.  
  36. 1.4 开始转换 
  37. 1.4.1 使用vmkfstools将厚模式的vmdk文件克隆为精简的vmdk磁盘文件,转换磁盘完成后将生成两个新的vmdk和flat.vmdk文件 
  38. /vmfs/..../converter-two-57.72 # vmkfstools -i converter-two.vmdk  -d thin converter-two_new.vmdk   
  39. Destination disk format: VMFS thin-provisioned 
  40. Cloning disk 'converter-two.vmdk'... 
  41. Clone: 100% done. 
  42.  
  43. /vmfs/..../converter-two-57.72 # du -sh * 
  44. 20.0G   converter-two-flat.vmdk 
  45. 64.0k   converter-two.nvram 
  46. 64.0k   converter-two.vmdk 
  47. 0   converter-two.vmsd 
  48. 64.0k   converter-two.vmx 
  49. 64.0k   converter-two.vmxf 
  50. 7.9G    converter-two_new-flat.vmdk 
  51. 64.0k   converter-two_new.vmdk 
  52. 64.0k   vmware-4.log 
  53. 1.0M    vmware-5.log 
  54. 1.0M    vmware-6.log 
  55. 1.0M    vmware-7.log 
  56. 1.0M    vmware-8.log 
  57. 64.0k   vmware-9.log 
  58. 64.0k   vmware.log 
  59.  
  60. 1.4.2 将原来的厚模式磁盘文件vmdk和flat.vmdk文件备份 
  61. /vmfs/..../converter-two-57.72 # mv converter-two.vmdk converter-two_old.vmdk  
  62. /vmfs/..../converter-two-57.72 # mv converter-two-flat.vmdk converter-two-flat_old.vmdk  
  63.  
  64. 1.4.3 将新生成的vmdk和flat.vmdk磁盘文件分别重命名为原有磁盘名称 
  65. /vmfs/..../converter-two-57.72 # mv converter-two_new.vmdk converter-two.vmdk      
  66. /vmfs/..../converter-two-57.72 # mv converter-two_new-flat.vmdk converter-two-flat.vmdk 
  67.  
  68. 1.4.4 编辑 vmdk 文件,确保 # Extent description "converter-two-flat.vmdk" 为原有磁盘名称 
  69. /vmfs/..../converter-two-57.72 # cat converter-two.vmdk  
  70. # Disk DescriptorFile 
  71. version=1 
  72. encoding="UTF-8" 
  73. CID=9cad19cd 
  74. parentCID=ffffffff 
  75. isNativeSnapshot="no" 
  76. createType="vmfs" 
  77.  
  78. # Extent description 
  79. RW 41932416 VMFS "converter-two_new-flat.vmdk" 
  80.  
  81. # The Disk Data Base  
  82. #DDB 
  83.  
  84. ddb.deletable = "true" 
  85. ddb.toolsVersion = "0" 
  86. ddb.geometry.biosHeads = "255" 
  87. ddb.geometry.biosSectors = "63" 
  88. ddb.geometry.biosCylinders = "2610" 
  89. ddb.virtualHWVersion = "7" 
  90. ddb.longContentID = "364b422b2ceb3f6f0a4e88d09cad19cd" 
  91. ddb.uuid = "60 00 C2 94 89 93 59 2c-d9 22 d3 e4 e6 b3 a4 22" 
  92. ddb.geometry.cylinders = "2610" 
  93. ddb.geometry.heads = "255" 
  94. ddb.geometry.sectors = "63" 
  95. ddb.thinProvisioned = "1" 
  96. ddb.adapterType = "lsilogic" 
  97.  
  98. 1.4.5 启动虚拟机检查是否工作正常,对比精简置备与厚置备大小 
  99. /vmfs/..../converter-two-57.72 # du -sh *500.0M converter-two-326dc793.vswp 
  100. 7.9G    converter-two-flat.vmdk 
  101. 20.0G   converter-two-flat_old.vmdk 
  102. 64.0k   converter-two.nvram 
  103. 64.0k   converter-two.vmdk 
  104. 0   converter-two.vmsd 
  105. 64.0k   converter-two.vmx 
  106. 64.0k   converter-two.vmxf 
  107. 64.0k   converter-two_old.vmdk 
  108. 64.0k   vmware-10.log 
  109. 64.0k   vmware-11.log 
  110. 1.0M    vmware-6.log 
  111. 1.0M    vmware-7.log 
  112. 1.0M    vmware-8.log 
  113. 64.0k   vmware-9.log 
  114. 64.0k   vmware.log 
  115.  
  116. 1.5 其它方式 
  117. 精简置备转换至厚置备置零: 
  118. vmkfstools --inflatedisk /vmfs/volumes/DatastoreName/VMName/VMName.vmdk 
  119. 厚置备延迟置零转换至厚置备置零: 
  120. vmkfstools --eagerzero /vmfs/volumes/DatastoreName/VMName/VMName.vmdk 
  121.  
  122.  
  123. 2 更改虚拟磁盘(vmdk)大小 
  124. 要特別注意的是,如果此虚拟机已有快照,请先删除所有快照在执行以下操作,否则这个VMDK将出错,內部的资料丢失!!!! 
  125.  
  126. 2.1 vmkfstools 命令格式 
  127. vmkfstools -X [新的大小] [目的vmdk文件] 
  128. 2.2 当前虚拟机虚拟磁盘大小 
  129. [root@bz-cl2 ~]# fdisk -l /dev/sda 
  130.  
  131. Disk /dev/sda: 21.4 GB, 21469396992 bytes 
  132. 255 heads, 63 sectors/track, 2610 cylinders 
  133. Units = cylinders of 16065 * 512 = 8225280 bytes 
  134.  
  135. 2.3 关闭虚拟机,登陆ESXI 调整虚拟磁盘大小 
  136. /vmfs/..../converter-two-57.72 # vmkfstools -X 40g converter-two.vmdk
  137.  
  138. 2.4 开启虚拟机,验证虚拟磁盘大小 
  139. [root@bz-cl2 ~]# fdisk -l /dev/sda 
  140.  
  141. Disk /dev/sda: 42.9 GB, 42949672960 bytes 
  142. 255 heads, 63 sectors/track, 5221 cylinders 
  143. Units = cylinders of 16065 * 512 = 8225280 bytes 

 

三 vmkfstools 命令参数

   
   
   
   
  1. /bin # vmkfstools  
  2. No valid command specified 
  3.  
  4.  
  5. OPTIONS FOR FILE SYSTEMS:  
  6.  
  7. vmkfstools -C --createfs vmfs3 
  8.                -b --blocksize #[mMkK] 
  9.                -S --setfsname fsName 
  10.            -Z --spanfs span-partition 
  11.            -G --growfs grown-partition 
  12.    deviceName 
  13.  
  14.            -P --queryfs -h --humanreadable 
  15.            -T --upgradevmfs 
  16.    vmfsPath 
  17.  
  18. OPTIONS FOR VIRTUAL DISKS:  
  19.  
  20. vmkfstools -c --createvirtualdisk #[gGmMkK] 
  21.                -d --diskformat [zeroedthick| 
  22.                                 thin| 
  23.                                 eagerzeroedthick] 
  24.                -a --adaptertype [buslogic|lsilogic|ide] 
  25.            -w --writezeros 
  26.            -j --inflatedisk 
  27.            -k --eagerzero 
  28.            -K --punchzero 
  29.            -U --deletevirtualdisk 
  30.            -E --renamevirtualdisk srcDisk 
  31.            -i --clonevirtualdisk srcDisk 
  32.                -d --diskformat [zeroedthick| 
  33.                                 thin| 
  34.                                 eagerzeroedthick| 
  35.                                 rdm:<device>|rdmp:<device>
  36.                                 2gbsparse] 
  37.            -X --extendvirtualdisk #[gGmMkK
  38.                [-d --diskformat eagerzeroedthick] 
  39.            -r --createrdm /vmfs/devices/disks/... 
  40.            -q --queryrdm 
  41.            -z --createrdmpassthru /vmfs/devices/disks/... 
  42.            -v --verbose # 
  43.            -g --geometry 
  44.            -x --fix [check|repair] 
  45.    vmfsPath 
  46.  
  47. OPTIONS FOR DEVICES:  
  48.  
  49.            -L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|readresv] /vmfs/devices/disks/... 
  50.            -B --breaklock /vmfs/devices/disks/... 

参考
http://vaemon.com/article/910.html
http://hi.baidu.com/googleu/blog/item/53763832002b8ae61a4cffc1.html

 

结束

如有问题欢迎到此讨论 37275208