天天看点

VMware ESXI 虚拟磁盘工具 - vmkfstools 使用实例

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

一 虚拟磁盘类型 

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

二 vmkfstools 操作实例

注意事项:

操作前请先关闭虚拟机

操作前需要打开ESXI ssh 服务,并需要登陆到ESXI

用户名:root

密码:使用vSphere Client登录ESX/ESXi的密码

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

三 vmkfstools 命令参数

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

参考

http://vaemon.com/article/910.html

http://hi.baidu.com/googleu/blog/item/53763832002b8ae61a4cffc1.html

继续阅读