ESXi 5.5是直接安装在物理主机上的一个虚拟机系统,本质上是一个Linux系统。平时可以通过VMware Client端或者VMware vCenter进行管理,但对于一些特殊的VMware命令或设置更改,有时需要连接到VMware主机进行操作,这就需要ESXi主机的ssh是开通的。由于ESXi主机是创建虚拟机的基础,非常重要,所以默认安装了ESXi后,默认ssh服务是关闭着的,而且一旦开启,在vCenter里面也会出现ssh已开启的警告,以说明目前ESXi主机处于一个相对有安全风险的状态。

ESXi主机ssh开启

一、   在ESXi主机的控制台进行设置

进入系统设置界面,如下图所示,向下移动光标到Troubleshooting Options,按回车。

esxi ssh新建用户命令 esxi7 ssh_esxi ssh新建用户命令

然后进入如下图所示的界面,然后把光标向下移动到Enable Remote Tech Support(SSH)启用远程连接,如果右边显示Remote TSM (SSH) is Disabled则按一次回车,右侧就会显示Remote TSM (SSH) is Enable。

esxi ssh新建用户命令 esxi7 ssh_后端_02

最后按ESC键退出就可以通过SSH客户端来远程连接了。

二、   通过vSphere进行设置

在vSphere Client中选中ESXi服务器,点击右面的【配置】>【安全配置文件】>【属性】

esxi ssh新建用户命令 esxi7 ssh_sql_03

在【服务属性】画面中,选择【远程技术支持(SSH)】后点击【选项】。

esxi ssh新建用户命令 esxi7 ssh_后端_04

选择【自动启动】,并点击【启动】

esxi ssh新建用户命令 esxi7 ssh_后端_05

ESXi主机SNMP开启


1、开启ssh后,登录编辑ESXi主机上的/etc/vmware/snmp.xml的文件

格式如下:

<config> 
  <snmpSettings> 
    <communities>【community值】</communities> 
    <enable>【true/false】</enable> 
    <targets>【snmp trap接收服务器】 【共享的community值】</targets> 
  </snmpSettings> 
</config>


~ # cat /etc/vmware/snmp.xml 
<?xml version="1.0"?>
<config><snmpSettings><enable>true</enable><port>161</port><EnvEventSource>indications</EnvEventSource><loglevel>info</loglevel><communities>public</communities><targets>10.15.97.195@161 public</targets><engineid>00000063000000a100000000</engineid></snmpSettings></config>
~ #


esxi ssh新建用户命令 esxi7 ssh_数据库_06

true表示开启SNMP服务,public表示的是snmp的团体名,192.168.1.247@161 public表示该snmp使用161端口,其中表示的192.168.1.247esxi的管理IP地址。这个ip也可以不指定,保持默认。


2、登陆esxi开启snmp服务,如果没配置snmp.xml就启动可能会提示你调用对象 “serviceSystem-1209”的“HostServiceSystem.Start” 失败。

esxi ssh新建用户命令 esxi7 ssh_esxi ssh新建用户命令_07


以上修改完毕后,需要使用以下命令启动:

/sbin/services.sh  restart

执行该命令后,SSH、vsphere连接都可能会断开,然后就可以通过snmp获取信息了


通过命令设置:

esxcli system snmp set --communities public
esxcli system snmp set --enable true
esxcli network firewall ruleset set --ruleset-id snmp --allowed-all true ####允许所有主机访问snmp服务
esxcli network firewall ruleset set --ruleset-id snmp --enabled true
/etc/init.d/snmpd restart

####如果要只允许特定的IP地址访问snmp服务
esxcli network firewall ruleset set --ruleset-id snmp --allowed-all false
esxcli network firewall ruleset allowedip add --ruleset-id snmp --ip-address 10.0.101.0/24
esxcli network firewall ruleset set --ruleset-id snmp --enabled true
/etc/init.d/snmpd restart




Thin磁盘空间回收

最近3个月一台ESXI服务器里的mysql从库挂了两次,两次都是因为宿主机空间不足,导致从库的文件加载不了,最近一次查看了下磁盘使用情况,宿主机磁盘空间为0,一台server2008占用了133G左右,mysql从占用了将近380G,进入系统发现只用了100多G,在创建虚拟机时候选的都是精简模式:

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

在创建mysql从虚机的时候,我指定的是500G的空间,但是由于使用了thin的方式,可能实际上只分配了200GB的空间(还有300GB的空间预留着,并没有从存储上真正分出去)。但后来随着mysql从文件越来越多,使用了400GB,那这时候我发现空间不够了,我删了100GB的空间,其实这100GB空间并没有完全空闲出来,还是真正划分给了mysql从虚机。这是因为这个delete操作是在guest OS中进行的,而hypervisor并不知道这个动作,所以也就不会reclaim space。所以,我们会发现虽然在创建虚机的时候使用thin的方式,但是到后来后端存储空间还是消耗的很快。对于ESXi可以使用vmkfstools这个工具将空间清理出来。

注意事项:
1、操作前请先关闭虚拟机
2、操作前需要打开ESXI ssh 服务,并需要登陆到ESXI ,进入虚拟机所在的datastore目录,每个目录为一个虚拟机 


~ # cd /vmfs/volumes/datastore1\ \(8\)/
/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c # ls
Mysql3  ser08   soft
/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c # cd Mysql3/


需要用到的文件是vmdk磁盘文件,vmdk有两种,一种是”虚拟机名.vmdk”,另一种是”虚拟机名-flat.vmdk”,vmdk文件很小,存放了虚拟磁盘的一些配置信息(如虚拟磁盘数据文件等),实际数据都存放在flat.vmdk文件中,转换时需要使用vmdk文件而不是flat.vmdk文件 



/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c/Mysql3 # vmkfstools -K(大写) Mysql3.vmdk  #vmkfstools --punchzero Mysql3.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576         
Hole Punching: 100% done. 
/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c/Mysql3 # du -sh *
64.0G   Mysql3-8c9d0a22.vswp
315.9G  Mysql3-flat.vmdk
1.0M    Mysql3.nvram
0       Mysql3.vmdk
0       Mysql3.vmsd
8.0K    Mysql3.vmx
0       Mysql3.vmx.lck
0       Mysql3.vmxf
8.0K    Mysql3.vmx~
1.0M    vmware-1.log
1.0M    vmware-2.log
1.0M    vmware.log
141.0M  vmx-Mysql3-2359101986-1.vswp
/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c/Mysql3 #



vmkfstools是一个创建和维护在VMware ESX Server上的虚拟磁盘,文件系统,逻辑卷和物理存储设备的程序.他支持创建在一磁盘分区上创建VMFS,和管理保存在VMFS上的文件(如虚拟磁盘). 


/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c/Mysql3 # vmkfstools --h
vmkfstools: option '--h' is ambiguous

OPTIONS FOR FILE SYSTEMS:

vmkfstools -C --createfs [vmfs3|vmfs5]
               -b --blocksize #[mMkK]
               -S --setfsname fsName
           -Z --spanfs span-partition
           -G --growfs grown-partition
   deviceName

           -P --queryfs -h --humanreadable
           -T --upgradevmfs
   vmfsPath
           -y --reclaimBlocks vmfsPath [--reclaimBlocksUnit #blocks]

OPTIONS FOR VIRTUAL DISKS:

vmkfstools -c --createvirtualdisk #[gGmMkK]
               -d --diskformat [zeroedthick
                               |thin
                               |eagerzeroedthick
                               ]
               -a --adaptertype [buslogic|lsilogic|ide
                                |lsisas|pvscsi]
               -W --objecttype [file|vsan]
               --policyFile <fileName>
           -w --writezeros
           -j --inflatedisk
           -k --eagerzero
           -K --punchzero
           -U --deletevirtualdisk
           -E --renamevirtualdisk srcDisk
           -i --clonevirtualdisk srcDisk
               -d --diskformat [zeroedthick
                               |thin
                               |eagerzeroedthick
                               |rdm:<device>|rdmp:<device>
                               |2gbsparse]
               -W --object [file|vsan]
               --policyFile <fileName>
               -N --avoidnativeclone
           -X --extendvirtualdisk #[gGmMkK]
               [-d --diskformat eagerzeroedthick]
           -M --migratevirtualdisk
           -r --createrdm /vmfs/devices/disks/...
           -q --queryrdm
           -z --createrdmpassthru /vmfs/devices/disks/...
           -v --verbose #
           -g --geometry
           -x --fix [check|repair]
           -e --chainConsistent
           -Q --objecttype name/value pair
           --uniqueblocks childDisk
   vmfsPath

OPTIONS FOR DEVICES: 

           -L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|readresv
                     ] /vmfs/devices/disks/...
           -B --breaklock /vmfs/devices/disks/...

vmkfstools -H --help

/vmfs/volumes/55b99e39-9c3650d8-20a4-3ca82a23c98c/Mysql3 #




虚拟磁盘类型转换(thick to thin ) 

没有机器用来做实验,这里应用ngood的BLOG文章VMware ESXI 虚拟磁盘工具 - vmkfstools 使用实例

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