Configuring additional gateways for vmkernel ports on an ESXi host
Purpose
This article provides a command to configure routes to additional gateways for vmkernel ports on an ESXi host.
Resolution
Unlike ESX, ESXi does not have a service console. The management network is on a vmkernel port and therefore uses the default vmkernel gateway.

You can only add one gateway for the vmkernal interface through vSphere Client. However, you can configure additional gateways from the command line.
继续阅读

因为我们托管的机房是双IP双线,今天在一个VMware ESXi的虚拟机内把一块网卡配成双IP。发现ping不通网关了。同样的方法在物理机上配置是没问题的。所以怀疑是VMWare ESXi配置的问题。

 

进入VMWare ESXi的配置-》网络。找到对应的虚拟交换机,点属性。

把下图中的vSwitch和VM PublicNetwork中的默认策略—》安全中的杂乱模式,MAC地址更改都改成接受。

 

做了如上更改后,就可以ping通网关了。

机房用的都是Dell R710服务器,自带BCM5709网卡。

默认RHEL5.x系统自带的驱动对BCM5709的网卡支持不好,网卡一遇到流量比较大就会hung up。

这个问题涉及到 ACPI 电源管理,当网卡在正常工作的时候,会被 ACPI 误以为他闲着,从而把它给hung up。

在RHEL 5.x或Centos 5.x上,解决办法有两种:

1.用内核自带的驱动,修改内核参数,关闭acpi:

vi /boot/grub/grub.conf
title CentOS (2.6.18-164.6.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.6.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet acpi=off noapic
initrd /initrd-2.6.18-164.6.1.el5.img

 

参数acpi=off noapic是要加上的,这个解决办法经测试网卡的流量最高跑到300多M没事。

2.从Dell网站下载最新的驱动升级,过程就不写了。

 

这个问题在linux系统上好解决,但是今天却收到几封机房发的报警邮件,说我装着vmware esxi 4.1的Dell R710服务器丢包严重,高的时候有50%,我连上去看了一下,确实有丢包。查了下esxi的日志,也没看到什么错误,这样就怀疑也是BCM5709的网卡驱动的问题了。

 

然后就去www.vmware.com查,发现最新的是vmware esxi 4.1 update 1了,仔细查看Release Notes(https://www.vmware.com/support/vsphere4/doc/vsp_esxi41_u1_rel_notes.html),里面找到了BCM5709网卡的驱动更新:

ESXi hosts might not boot or cause some devices not to be accessible when using more than 6 bnx2 ports
An error message similar to the following is displayed in /var/log/messages of ESXi: CPU10:4118 – intr vector: 290:out of interrupt vectors. Before applying this fix, bnx2 devices in MSI-X mode and jumbo frame configuration support only 6 ports. The issue is resolved in this release. In this release, the bnx2 driver allocates only 1 RX queue in MSI-X mode, supports 16 ports, and saves memory resources.                  

看到网卡驱动有更新就准备先升级到vmware 4.1 update 1,找了台机器安装vmware-vsphere-cli,开始升级:

1.到vmware下载升级包:update-from-esxi4.1-4.1_update01.zip

2.关闭运行的所有虚拟机

3.把esxi 4.1设置为维护模式

4.在刚安装vmware-vsphere-cli的机器上用vmware-vsphere-cli升级:

vihostupdate –server x.x.x.x –username root –password  passwd -i -b update-from-esxi4.1-4.1_update01.zip  -B ESXi410-Update01
运行后显示:
Please wait patch installation is in progress …
The update completed successfully, but the system needs to be rebooted for the changes to be effecti
ve.

5.reboot esxi

 

重启后ssh连到esxi的控制台:

~ # ethtool -i vmnic0
driver: bnx2
version: 2.0.7d-3vmw
firmware-version: 5.0.13 bc 5.0.11 NCSI 2.0.5
bus-info: 0000:01:00.0

而在升级之前看到的是:

~ # ethtool -i vmnic0
driver: bnx2
version: 2.0.7d-2vmw
firmware-version: 5.0.13 bc 5.0.11 NCSI 2.0.5
bus-info: 0000:01:00.0

不给力呀,主版本号居然是一样的,担心还是有问题,继续找驱动,发现vmware还真有:http://downloads.vmware.com/d/info/datacenter_downloads/vmware_vsphere_hypervisor_esxi/4_0#drivers_tools

VMware ESX/ESXi 4.1 Driver CD for Broadcom NetXtreme II Ethernet Network Controllers

VMware对 Broadcom NetXtreme II Ethernet Network Controllers专门做了一个ISO,看来这个网卡的驱动问题多多。在下面这个地址下载这个ISO:

http://downloads.vmware.com/d/details/esx41_broadcom_netextremeii_dt/ZCV0YnRlaHRidHdw

下载后解压出来,找到BCM-bnx2-2.0.15g.8.v41.1-offline_bundle-325733.zip,升级:

vihostupdate –server x.x.x.x –username root –password  passwd -i -b BCM-bnx2-2.0.15g.8.v41.1-offline_bundle-325733.zip

安装完后reboot esxi,

再看驱动版本:

~ # ethtool -i vmnic0
driver: bnx2
version: 2.0.15g.8.v41.1
firmware-version: 5.0.13 bc 5.0.11 NCSI 2.0.5
bus-info: 0000:01:00.0

这下感觉好多了,哈哈。

然后退出维护模式,启动虚拟机。

不知道效果怎么样,能不能解决问题,只能再观察了。

昨天把一台VMware ESXi 4.0升级到4.1了,搞得比较折腾,在这里说下升级的详细过程。

先说下升级的步骤,来自官方手册:

可以使用 vihostupdate 实用程序从 ESXi 4.0 升级到 ESXi 4.1。

前提条件

必须先有权访问可在其上运行 VMware vSphere 命令行界面 (vSphere CLI) 的计算机,才能从命令行升级 ESXi主机。可以在 Microsoft Windows 或 Linux 系统上安装 vSphere CLI,或者将 VMware vSphere  Management Assistant (vMA) 虚拟设备导入到 ESXi 主机中。有关导入或安装 vSphere CLI 的信息,请参见《VMware vSphere 命令行界面安装和参考指南》。

如果目标主机与 vCenter Server 相连,则其必须具有 3GB 的 RAM。

对于 ESXi 主机,必须先配置暂存分区并重新引导主机,才能继续进行升级。可以在 vSphere Client 的配置选项卡中的软件高级设置下为主机配置暂存分区。

步骤
1 从 VMware 网站将以下升级 ZIP 捆绑包下载到 vSphere CLI 计算机可访问的位置。
upgrade-from-ESXi4.0-to-4.1.0-0.0.内部版本号-release.zip
升级 ZIP 捆绑包中包含 esxupdate 公告和升级公告。
2 关闭主机上正在运行的所有虚拟机,并将主机置于维护模式。
3 通过在 vSphere CLI 计算机上运行以下命令安装 esxupdate 公告。
vihostupdate –server 主机名或 IP 地址 -i -b ESXi 升级 ZIP 捆绑包的位置 -B ESXi410-GA-esxupdate
4 通过在 vSphere CLI 计算机上运行以下命令安装升级公告。
vihostupdate –server 主机名或 IP 地址 -i -b ESXi 升级 ZIP 捆绑包的位置 -B ESXi410-GA
5 通过运行以下命令验证公告是否已安装在 ESXi 主机上。
vihostupdate –server 主机名或 IP 地址 –query
6 重新引导主机

我升级ESXi另外用到了两台机器,一台是安装有VMware vSphere Clinet的windows 机器,一台是安装vSphere CLI的linux机器,其实vSphere CLI也有windows版本的,在一台机器上升级是一样的,只是我手上反正有linux的机器,而linux上的shell比windows好用得多,所以我就在linux上用vSphere CLI升级了。

升级之前我在windows机器上用VMware vSphere Clinet先关闭了所有虚拟机,并把Esxi设置成维护模式。

然后在linux机器上运行:

1.先备份Esxi配置
#vicfg-cfgbackup –server 192.168.1.11 –username root –password xxxxx -s vmware.bak

2.安装 esxupdate 公告
#vihostupdate –server 192.168.1.11 –username root –password xxxxx  -i -b /home/hui/vmwareesxi/upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zip -B ESXi410-GA-esxupdate

Please wait patch installation is in progress …
Host updated successfully.

3.安装升级公告
#vihostupdate –server 192.168.1.11 –username root –password xxxxx -i -b /home/hui/vmwareesxi/upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zip -B ESXi410-GA

Please wait patch installation is in progress …
The update completed successfully, but the system needs to be rebooted for the changes to be effective.

3.查询下看看
#vihostupdate –server 192.168.1.11  –username root –password xxxxx –query
———Bulletin ID——— —–Installed—– —————-Summary—————–
ESXi410-GA-esxupdate          2010-11-01T08:11:49 ESXi pre-upgrade Bulletin              
ESXi410-GA                    2010-11-01T08:14:27 ESXi upgrade Bulletin  

4.用windows机器上的VMware vSphere Clinet重启ESXi,重启可发现升级成功,已经是ESXi 4.1了。

新的 ESXi 4.1 在控制台菜单里多了一项:Troubleshooting Options,进去后可以 Enable Remote Tech Support (SSH),是的,你没看错,现在可以直接在这里启用ssh服务,不需要像4.0时那样去折腾了,很方便。

但是我后重启的时候碰到一个问题,之前没有的,可能是我的服务器有一两年没重启,BMC上的ipmi坏了。在ESXi启动到Loading module ipmi_si_drv …的时候停住不动了,过了大约半小时才过去。过去后其它方面如虚拟机之类的正常。

这个问题挺烦,虽然我很少重启,但是不解决这个问题心里很不舒服,于是在网上查了查,看到三个解决方法:

1.

http://ithelp.ithome.com.tw/question/10051917

#vi /etc/vmware/init/init.d/72.ipmi 

在 Exec 那行前面插入一行:

return ${SUCCESS} # disable IPMI 

因為原本 esxcfg-init -I 的作用, 就是 Load ipmi driver…

但经过我的测试,没用。因为重启后,你会发现,/etc/vmware/init/init.d/72.ipmi 这个文件又变成你改之前的了。

2.

http://communities.vmware.com/message/1025433

更改 Esxi 配置:Misc.CimEnabled

这个配置在Esxi的配置-》高级配置-》Misc

但是很可惜,我在这里面没有找到Misc.CimEnabled,可能4.1已经没有这个配置了。

3.

http://communities.vmware.com/message/1044621#1044621

esxcfg-module -d ipmi_si_drv

用这个命令关闭ipmi_si_drv模块,重启后发现真的解决问题了。哈哈。。。

很是折腾,因为重启一次要半个小时,呵呵,搞了一下午。

VMware ESX Server 上特有的命令很多,以下分享一下常见的命令行的使用方法。
1:看你的esx版本。
vmware -v
2:列出esx里知道的服务
esxcfg-firewall -s
3:查看具体服务的情况
esxcfg-firewall -q sshclinet
4:重新启动vmware服务
service mgmt-vmware restart
5: 修改root的密码
passwd root
6:列出你当前的虚拟交换机
esxcfg-vswitch -l
7:查看控制台的设置
esxcfg-vswif -l
8:列出系统的网卡
esxcfg-nics -l
9:添加一个虚拟交换机,名字叫(internal)连接到两块物理网卡,(重新启动服务,vi就能看见了)
esxcfg-vswitch -a vSwitch1
esxcfg-vswitch -A internal vSwitch1
esxcfg-vswitch -L vmnic1 vSwitch1
esxcfg-vswitch -L vmnic2 vSwitch1
10:删除交换机,(注意,别把控制台的交换机也删了)
esxcfg-vswitch -D vSwitch1
11:删除交换机上的网卡
esxcfg-vswitch -u vmnic1 vswitch2
12:删除portgroup
esxcfg-vswitch -D internel vswitch1
13:创建 vmkernel switch ,如果你希望使用vmotion,iscsi的这些功能,你必须创建( 通常是不需要添加网关的)
esxcfg-vswitch -l
esxcfg-vswitch -a vswitch2
esxcfg-vswitch -A "vm kernel" vswitch2
esxcfg-vswitch -L vmnic3 vswitch2
esxcfg-vmknic -a "vm kernel" -i 172.16.1.141 -n 255.255.252.0
esxcfg-route 172.16.0.254
14:打开防火墙ssh端口
esxcfg-firewall -e sshclient
esxcfg-firewall -d sshclient
15: 创建控制台
esxcfg-vswitch -a vSwitch0
esxcfg-vswitch -A "service console" vSwitch0
esxcfg-vswitch -L vmnic0 vSwitch0
esxcfg-vswif -a vswif0 -p "service console" -i 172.16.1.140 -n 255.255.252.0
16: 添加nas设备(a 添加标签,-o,是nas服务器的名字或ip,-s 是nas输入的共享名字)
esxcfg-nas -a isos -o nas.vmwar.cn -s isos
17:列出nas连接
esxcfg-nas -l
18: 强迫esx去连接nas服务器(用esxcfg-nas -l 来看看结果)
esxcfg-nas -r
esxcfg-nas -l
19:连接iscsi 设备(e:enable q:查询 d:disable s:强迫搜索)
esxcfg-swiscsi -e
20:设置targetip
vmkiscsi-tool -D -a 172.16.1.133 vmhba40
21:列出和target的连接
vmkiscsi-tool -l -T vmhba40
22:列出当前的磁盘
ls -l /vmfs/devices/disks

***************************管理安装在ESX上安装的虚拟机*******************************

在ESX中,主要是通过vmware-cmd这个命令来管理虚拟机的,包括虚拟机的开关、状态查询和添加删除虚拟设备。

1,列出所有虚拟机(这里列出的是所有虚拟机各自对应的配置文件,ESX技术通过修改这些配置文件来完成对虚拟机的管理的):
    # vmware-cmd -l
    /vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx

2,查询某个虚拟机状态(是否加电):
    # vmware-cmd /vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx getstate
    getstate() = on

3,启动/停止/重启/暂停某台虚拟机:
    # vmware-cmd /vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx start/stop/reset/suspend trysoft
    这里,trysoft是电源管理模式,意思是先尝试安全操作,如果失败则进行强制操作,除了这个选项,还用soft和hard这两种模式。
    start/stop/reset/suspend只能选择其一.

4,查询设备属性:
    # vmware-cmd //vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx getconfig ide0:0.deviceType
    getconfig(ide0:0.deviceType) = cdrom-raw
    这里,我们获得的是ide0:0设备的类型,由输出可知,该设备是CDROM,而且是虚拟一个物理光驱。

5,将4中的光驱改为可以读取ISO文件的虚拟光驱:
    # vmware-cmd //vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx setconfig ide0:0.deviceType cdrom-image

6,为虚拟光纤指定ISO文件
    # vmware-cmd //vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx setconfig ide0:0.fileName /export/images/Linux4-U3.iso

7,断开设备连接
    # vmware-cmd //vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx disconnectdevice ide0:0

8,连接设备:
    # vmware-cmd //vmfs/volumes/4655dd66-758d208c-1b24-001aa0187722/sol_vm1/sol_vm1.vmx connectdevice ide0:0

    这里列出的管理命令仅仅是ESX众多设备管理中的一部分,然而通过实践,用户可以利用命令行完成所以需要通过VM client可以实现的工作,而且用户可以更加理解ESX的实现原理,更好的维护自己的ESX操作系统。