1、  XenServer最佳实践

  1)  系统BIOS的检查及设置

         Restore default BIOS setup       还原BIOS设置

Enable VT or AMD/V,            打开VT或者AMD/V

disable C-state           关闭C-state

Disable executive lock bit       关闭executiveloct

Enable remote console(if IBMserver) 如果是IBM服务器,则打开远程控制台

Disable Multi-thread if possible    关闭超线程

本地磁盘设置成RAID1RAID 1/0      

如果磁盘以前安装过 VMware 或其它 OS, 重新初始化RAID 10

If server total CPU core over 48,disable multi-core before installation, after installation, enable it.

         如果cpu核超过48,则安装前关闭超线程,在安装完成后,在打开超线程;


  2)  修改domain0文件系统

    Xenserver在以后的使用中,如果用户的业务会产生大量的日志,会逐渐把domain0的分区耗尽,最终会导致xenserver崩溃,这时就需要根据业务需要将domain0 的根分区做适当调整,可以调整为10G20G,默认domain0 的根分区为4Gxenserver安装会使用2G左右。

 

  3)  Intelicache功能说明

    在安装过程中,有一项intelicache的功能,此项功能是配合xendesktop使用的,默认是开启的,主要是用来减少共享存储I/O压力的。如果开启后,在安装完成后,本地存储为文件系统类型(ext3);如果未开启,则安装完成后,为LVM的裸设备;


  4)  NTP时钟同步

    在安装到配置时钟界面时,选择使用NTP服务器来同步xenserver的时间;如果不使用NTP服务器同步时间,在pool下的xenserver主机在时间相差很大的情况下做xenmodion时,很有可能会失败;


  5)  优化XenServer主机

    安装完XenServer后,不要立即就挂载共享存储,首先对SenServer做一些优化,如:调整doamin0 的内存为2940M,默认为752M,调整domain0 vcpu数,默认为4vcpu即可;

参照http://support.citrix.com/article/CTX124259, Dom0 的内存上限扩展到2940M或4096M

    关掉xenserverpifvifchecksumoffload,这个只需要运行配置脚本即可;

echo Setting checksumoff on VIFs

VIFLIST=`xe vif-list | grep "uuid ( RO)" | awk '{print $5}'`

for VIF in $VIFLIST

do

echo Setting ethtool-tx=off and ethtool-rx=offon $VIF

xe vif-param-set uuid=$VIFother-config:ethtool-tx="off"

xe vif-param-set uuid=$VIFother-config:ethtool-rx="off"

done

echo Setting checksum off on PIFs

PIFLIST=`xe pif-list | grep "uuid ( RO)" | awk '{print $5}'`

for PIF in $PIFLIST

do

echo Setting ethtool-tx=off and ethtool-rx=offon $PIF

xe pif-param-set uuid=$PIFother-config:ethtool-tx="off"

xe pif-param-set uuid=$PIFother-config:ethtool-rx="off"

done


  6)  打开XenServer  IRQbalance服务

     #Serviceirqbalance start

     并打上最新的补丁和driver驱动

              检查XenServer的网络模式为bridge6.0版本默认为bridge模式。


  7)  配置XenServer网卡

   创建xenserver池,根据Xenserver的三网分离原则设置网卡的配置,xenserver配置6块网卡

    NIC0NIC1绑定做管理网

    NIC2NIC3绑定做存储网

    NIC4NIC5绑定做业务网

   将管理网卡配置成Active/Backup模式

xepif-param-set uuid=<bond_pif_uuid> other-config:bond-mode=active-backup

    配置业务网卡

If NIC is 10G,disable NIC LRO 

#ethtool –Keth#  lro off

 

   注意:管理网尽可能的不要放在带有VLAN的网络,管理网做完绑定后,一定要做拔线测试。


  8)  开启XenServerMultipath

   wKioL1VJmgzCMPLZAAFUhw2RBfk933.jpg

   注意:如果连接的共享存储需要使用Multipath,必须先在xenserver下开启Multipath。

   

   1、开启存储多路径时,需要首先进入维护模式

   2、DMP存储,直接使用XenCenter控制台在服务器属性中启动多路径;

   3、MPP存储,命令行启用MPP功能(/opt/xensource/libexec/mpp-rdac--enable

    注:存储多路径的开启一定要在添加存储之前;


  9)  在管理网配置添加存储网络


  10)  POOL下挂载共享存储

   将共享存储挂载到xenserverpool

    #mpathutil status(查看是否有两条路径)

    #xe pbd-list会看到有两条路径

   注意:如果共享存储是ISCSI的,则做网卡绑定即可;

   如果共享存储是NFS的,则需要开启Multipath(一般NFS存储很少支持多路径)

   在做完Multipath后,一定要做拔线测试存储是否仍然在线。如果未开启多路径而创建了虚拟机,以后在开启时,先前创建的虚拟机不会有效,必须重新挂载PBD

   pbd-unplug

   pbd-unpluguuid=<uuid_of_pbd>

   pbd-plug uuid=<uuid_of_pbd>

   (或者5.6升级到6.0后也需要重新挂载PBD块)

 

  11)  XenServer上创建VM及模版

  •     Window VM

    安装Xentools,在创建模板前运行 sysprep newid 

    Setup VM vif offload

    在注册表中禁用 TCP 任务卸载,步骤如下:

(1)单击开始、单击运行,键入 regedit,然后单击确定。

(2)找到并单击以***册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

(3)单击编辑,指向新建,然后单击 DWORD 值。

(4)键入 DisableTaskOffload 作为输入的名称,然后按 ENTER 键。

(5)用鼠标右键单击 DisableTaskOffload,然后单击修改。

(6)数值数据框中键入值 1,然后单击确定。

(7)退出注册表编辑器。

(8)重新启动计算机。

注意:在修改注册列表之前,要对注册列表进行备份

       xe vif-param-set uuid=$VIFother-config:ethtool-tx="off“
       xe vif-param-set uuid=$VIF other-config:ethtool-rx="off"

  •   Linux Guest OS

安装Xentool

Remove MACaddress at Guest OS network configuration filelinuxMAC地址会冲突)

 

  12)  修改日志循环周期

   改每天为每小时

    # mv/etc/cron.daily/logrotate.conf /etc/cron.hourly/logrotate.conf

    # mv /etc/cron.daily/logrotate   /etc/cron.hourly

 

    压缩旧日志

  #compress

   设置保留历史日志数目

  #rotate20


  13)调整CPU的控制

    

CPU pinning

#xe vm-param-set uuid=<vmuuid>VCPUs-params:mask=1,2,3

(Limits VM to running on CPU number 1,2,3)

CPU Weight

#xe vm-param-set uuid=<vmuuid>VCPUs-params:weight=500

(512 will get twice as much as 256 (default ))

CPU Cap

#xe vm-param-set uuid=<vmuuid>VCPUs-params:cap=100

(Restricts percentage of CPU cores VM can use)

50 = half a CPU core, 100 = 1 CPU core, 400 = 4CPU cores

注意:vcpu与物理核心没有关系

有时指定多个vcpu分配给VM会提高程序的运行速度,但是并不是说VM所占的cpu资源增加了,   只是某些程序在多vcpu线程下运行效率会更高一些,而VM占用cpu资源的多少,是由vm所占cpu的权重决定


  14)备份

   备份 XenServer Pool metadata:

            #!/bin/bash

   #This is a backup of xenserver pool metadata script.

    metadata=`date +%Y_%m_%d`

    if [ ! -d /home/pool_md ]

    then

   mkdir -p /home/pool_md

    fi

    xe pool-dump-database file-name=/home/pool_md/pool_md_"$metadata"

    find /home/pool_md -mtime +3 -exec rm -rf {} \;

   备份 XenServer VM metadata :

          #!/bin/bash

   #This is a xenserver vm metadata in the backup script.

   vmmetadata=`date +%Y_%m_%d`

   if [ ! -d /home/vm_md ]

    then

      mkdir -p /home/vm_md

   fi

    sr_uuid1=`xe sr-list name-label=VM | awk '/uuid/{print $5}'`

    sr_uuid2=`xe sr-list name-label=VM1 | awk '/uuid/{print $5}'`

    xe-backup-metadata -c -u "${sr_uuid1}"  > /home/vm_md/log1_"$vmmetadata" 2>&1

    xe-backup-metadata -c -u "${sr_uuid2}"  > /home/vm_md/log2_"$vmmetadata" 2>&1

   find /home/vm_md -mtime +3 -exec rm -rf {} \;