XenServer 通过ionice 限制VM 虚拟机硬盘IO
发布时间:June 8, 2013 // 分类:虚拟化 // 1 Comment
之前有文章介绍Xen 下通过ionice 限制VM 虚拟机硬盘IO 优先级,XenServer 获取虚拟机进程和Xen 不同,可通过以下方法查找虚拟机IO 进程,并使用ionice 限制。
首先获取VM 虚拟机的UUID : 1 x e vm-list name-label=
然后再获取VM 的DOM ID : 1 l ist_domains |awk '/
通过DOM ID 获取VM 相对应的进程ID : 1 2 3 ps aux|grep xb.*
root 10995 0.0 0.0 0 0 ? S 10:08 0:01 [xb.00003.xvda] root 10996 0.0 0.0 0 0 ? S 10:08 0:00 [xb.00003.xvdd] 使用ionice 调整相应进程的IO 优先级策略即可。
XenServer 修改Linux/Windows 系统模板内存等资源限制 发布时间:January 5, 2013 // 分类:虚拟化 // No Comments
XenServer 虚拟机系统模板对内存等资源有做限制,在新建虚拟机时分配的资源不能小于模板最小限额。 XenServer 下查看CentOS 6 32位模板内存最小限制:
1 2 xe template-list name-label=CentOS\ 6\ \(32-bit\) params=memory-static-min --minimal 536870912
可见内存最小限制为512M ,如果安装Centos6虚拟机内存不能小于512M ,修改Centos 模板内存最小限制为128M : 1 2 3 4 xe template-list name-label=CentOS\ 6\ \(32-bit\) params=uuid --minimal #查看Centos 模板uuid
xe template-param-set uuid=
#修改内存最小限制为128M
XenServer 通过网络安装Debian Squeeze/CentOS 虚拟机 发布时间:December 3, 2012 // 分类:虚拟化 // No Comments
XenServer 可以通过在本地新建ISO 存储或NFS 存储挂载ISO 镜像安装系统,对于Linux 可支持通过网络http 或ftp 安装,以下记录下XenServer 通过网络安装Debian 和CentOS 系统。
新建虚拟机:
1 2 xe vm-install template=Debian\ Squeeze\ 6.0\ \(32-bit\) new-name-label=debian6 sr-name-label=Local\ storage
#返回vm uuid
设置安装源:
1 x e vm-param-set uuid=
2 3 other-config:install -repository=https://www.doczj.com/doc/c94984258.html,/debian/
#debian5:https://www.doczj.com/doc/c94984258.html,/debian-archive/
#centos 使用类似链接:https://www.doczj.com/doc/c94984258.html,/centos/6.3/os/i386/
新建虚拟网卡: 1 2 3 xe vif-create vm-uuid=
xe network-list bridge=xenbr0 --minimal
启动虚拟机:
1 x e vm-start name-label=debian6
XenServer 获取所有VM 虚拟机IP 及对应MAC 地址
发布时间:November 20, 2012 // 分类:虚拟化,Shell // 1 Comment
XenServer 5.6下编写,用于获取所有VM 虚拟机IP 和对应MAC 地址,Shell 脚本如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/bin/bash
#http://www.haiyun.me
if [[ ! -e mac-ip.txt ]];
then
touch mac-ip.txt
else
> mac-ip.txt
fi
for vps in `xe vm-list |awk '/name/ {print $4}'`
do
case $vps in
*"Control"* ) continue ;;
esac
writeline=`xe vif-list vm-name-label=$vps params=MAC|awk '/MAC/ {print $5}'` writeline+=" "
writeline+=`xe vm-list name-label=$vps params=networks|awk '/network/ {print $5}'`
echo $writeline >> mac-ip.txt
done
XenServer 获取VM 虚拟机名称与MAC 地址参考:
http://www.haiyun.me/archives/xenserver-vmname-mac.html 。
XenServer 获取所有VM 虚拟机名称及对应MAC 地址
发布时间:November 19, 2012 // 分类:虚拟化,Shell // No Comments
XenServer 5.6测试通过,用于查找所有VM 及其对应MAC 地址写入output.csv 文件,直接下载shell 脚本。 1 #!/bin/bash
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #http://www.haiyun.me
if [ $(whoami ) != 'root' ];
then
echo "Must be root to run $0"
exit 1;
fi
if [[ ! -e output.csv ]];
then
touch output.csv
else
> output.csv
fi
for vmuuid in `xe vm-list | awk -F ':' '/^uuid/ {print $2}'` ;
do
namelabel=`xe vm-param-get uuid=$vmuuid param-name=name-label`
case $namelabel in
*"Control domain"* ) continue ;;
esac
i=`xe vif-list vm-name-label="$namelabel" | grep device | wc -l`
writeline="\"$namelabel\""
writeline+=","
for ((j=0;j<$i;j++))
do
mac=`xe vif-list vm-name-label="$namelabel" params=MAC device=$j | awk -F ': ' '/^MAC/ {print $2}'`
if [ -z "$mac" ]
then
i=`expr $i + 1`
continue
else
writeline+=$mac
fi
if [ $j -lt `expr $i - 1` ]
then
writeline+=","
fi
done
echo "$writeline" >> output.csv
done
echo "VMs and their respective MAC addresses have been written to output.csv in the current directory."
exit 0
使用sFlowTrend 监控XenServer 服务器
发布时间:October 22, 2012 // 分类:虚拟化 // No Comments
服务器端安装Host sFlow Agent 代理客户端,用作发送sFlow 数据到sFlowTrend 分析端,支持多种Windows /Linux /Uinx 系统。
Host sFlow 下载地址:https://www.doczj.com/doc/c94984258.html,/
sFlowTrend 下载地址:https://www.doczj.com/doc/c94984258.html,/products/sFlowTrend.php
XenServer 6可直接安装Host sFlow ,XenServer5要先配置为Open vSwitch 模式支持sFlow 。 1 2 wget
https://www.doczj.com/doc/c94984258.html,/project/host-sflow/REL-1_22/hsflowd_XenServer_56FP 2-1.22.2-1.i386.rpm
rpm -ivh hsflowd_XenServer_56FP2-1.22.2-1.i386.rpm
配置Host sFlow : 1 2 3 4 5 6 7 8 9 10 11 cat /etc/hsflowd.conf
#http://www.haiyun.me
sflow {
DNSSD = off
polling = 20
sampling = 512
collector {
ip = 192.168.1.155
udpport = 6343
}
}
启动Host sFlow Agent :
1 /etc/init.d/hsflowd start
然后在sFlowTrend配置代理端,不久即可看到监控的数据:
分析XenServer 虚拟交换机sFlow 数据: 1 2 ovs-vsctl -- --id =@sflow create sflow agent=xenbr0 targe=\"192.168.1.155:6343\" header=128 sampling=512 polling=30 \
-- set bridge eth0 sflow=@sflow
XenServer5.6网络配置为虚拟交换机Open vSwitch 模式并开启NetFlow 输出
发布时间:October 22, 2012 // 分类:虚拟化 // No Comments
新安装的XenServer 6默认为Open vSwitch ,XenServer5.6默认为网桥模式,查看当前网络模式: 1 2 cat /etc/xensource/network.conf
openvswitch
更改网络为虚拟交换机Open vSwitch 模式: 1 2 #http://www.haiyun.me
xe-switch-network-backend openvswitch
切换回网桥bridge 模式:
1 x e-switch-network-backend bridge
配置虚拟交换机输出NetFlow 数据到分析端,可参考:Linux 下Nfsen 和Nfdump 配置Netflow 分析端。 1 2 ovs-vsctl -- --id =@netflow create netflow targe=\"192.168.1.5:9995\" active_timeout=30 \
-- set bridge xenbr0 netflow=@netflow
输出sFlow 数据: 1 2 ovs-vsctl -- --id =@sflow create sflow agent=eth1 targe=\"192.168.1.5:9995\" header=128 sampling=512 polling=30 \
-- set bridge xenbr0 sflow=@sflow
查看是否有NetFlow 数据输出: 1 2 3 4 5 6 tcpdump -nn port 9995
tcpdump: WARNING: eth0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
18:12:16.535132 IP 192.168.1.15.55104 > 192.168.1.3.9995: UDP, length 600
18:12:17.544569 IP 192.168.1.15.55104 > 192.168.1.3.9995: UDP, length 216
更改Netflow 或sFlow 参数:
1 o vs-vsctl set NetFlow xenbr0 targe=\"192.168.1.3:9995\"
查看Netflow 或sFlow 列表:
1 o vs-vsctl list netflow/sflow
删除Netflow/sFlow :
1 o vs-vsctl remove bridge xenbr0 netflow/sflow
据说Open vSwitch 模式在XenServer 下并不稳定,只为输出NetFlow 可使用Fprobe 。
XenServer 虚拟机VM 挂起不能关机、重启解决
发布时间:August 13, 2012 // 分类:虚拟化 // No Comments
XenServer 下虚拟机遇到死机或其它意外情况时通过XenCenter 操作重启或关机时会遇到虚拟机挂起的状况,表现为XenCenter 中虚拟机名字显示黄色状态,右键菜单只有属性可选,VM 不能再进行其它操作,为此总结了一些解决方法。
首先尽量避免此类情况的发生,当虚拟机处于死机状态时尽量使用硬关机、硬重启:
1 x e vm-reboot force=true name-label=Centos5.7
当进行正常关机、重启时挂起可取消之前的任务操作,再进行硬操作:
1 2 3 4 xe task-list
#查看当前任务列表和uuid
xe task-cancel uuid=
#取消当前任务
如果以上不能解决可尝试以下:
销毁VM 对应的domain id ,VM 会重启。
1 2 3 4 xe vm-list params=uuid name-label=
#或
xe vm-list name-label=
#获取指定VM 的uuid
5 6 7 8 list_domains |grep
#获取VM 对应的domain id
/opt/xensource/debug/destroy_domain -domid
#销毁VM 对应的domain id
使VM 崩溃: 1 2 3 4 5 6 7 8 xe vm-list params=actions-after-crash name-label=
#查看VM 崩溃后的操作,默认为重启 xe vm-list params=uuid name-label=
#获取指定VM 的uuid
list_domains |grep
#获取VM 对应的domain id
/usr/lib/xen/bin/crash_guest
#触发VM 崩溃
如果VM 处于脱机状态,而VM 在数据库中被标记为运行,可重置VM 电源状态为关机:
1 x e vm-reset-powerstate force=true vm=
其它可尝试重启xe 工具,不要遇到xapi 不能启动就好。。。
1 x e-toolstack-restart
XenServer 增加硬盘为SR 卷或扩充到VG
发布时间:July 2, 2012 // 分类:虚拟化 // No Comments
1.以SR 方式增加硬盘:
查看新增加的硬盘分区: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #http://www.haiyun.me
fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 523 4194304 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 523 1045 4194304 83 Linux
/dev/sda3 1045 5221 33549043 8e Linux LVM
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
新建为SR :
1 x e sr-create type =lvm content-type =user device-config:device=/dev/sdb name-label=sr2
2 5a953701-83ab-b22b-3903-c3932d3a710d
2.新加硬盘以LVM 方式扩容到VG :
新建PV : 1 p vcreate /dev/sdb
查看VG 名称: 1 v gscan
扩充PV 到VG : 1 v gextend VG_XenStorage-5a953701-83ab-b22b-3903-c3932d3a710d /dev/sdb
XenServer 限制虚拟机带宽、网络连接速度
发布时间:June 27, 2012 // 分类:虚拟化 // 2 Comments
XenServer 可以在虚拟网络接口VIF 上做带宽限制,设置如下:
为特定VIF 设置QOS 算法类型为ratelimit (速率限制) 1 x e vif-param-set uuid=
设置VIF 带宽参数: 1 2 xe vif-param-set uuid=
限制VM 网络速率5120K ,相当于带宽40M.
XenServer 虚拟机CPU 优先级设置
发布时间:June 27, 2012 // 分类:虚拟化 // No Comments
首先获取XenServer 虚拟机UUID :
1 x e vm-list name-label=www.haiyun.me params=uuid --minimal
1.设置VM 虚拟机的权重,权重较高的VM 优先占用CPU 。
1 2 xe vm-param-set uuid=
#将优先级调整为1024,可选范围1-65535,数值越大优先级超高,默认值为 256。
2.设置VM 的CPU 最大使用率:
1 2 xe vm-param-set uuid=
#限制CPU 上限200%,默认为0.
3.也可设置XenServer 虚拟机使用特定CPU :
1 2 xe vm-param-set uuid=
#指定VM 使用物理CPU6,7,8
调整XenServer 虚拟机CPU 个数:https://www.haiyun.me/archives/xenserver-vm-cpu.html
XenServer 修改虚拟机时间
发布时间:June 27, 2012 // 分类:虚拟化 // No Comments
Xenserver 下虚拟机默认同步主服务器时钟,使用date 自定义时间无效。
解决方法: 1 s ysctl xen.independent_wallclock=1
也可将此参数添加到sysctl 配置文件: 1 2 vim /etc/sysctl.conf
xen.independent_wallclock=1 生效:
1 s ysctl -p
XenServer 添加/扩充虚拟机VM 硬盘
发布时间:June 27, 2012 // 分类:虚拟化 // No Comments
1.添加虚拟机硬盘,首先查看所新建硬盘所在sr-uuid :
1 x e sr-list
新建VDI : 1 2 xe vdi-create sr-uuid=
新建VBD : 1 2 xe vbd-create vdi-uuid=
应用VBD :
1 x e vbd-plug uuid=
VDI 与VBD 的关系:http://www.haiyun.me/archives/xenserver-sr-vdi.html
2.扩充虚拟机硬盘,首先关闭要扩充硬盘的虚拟机.
1 x e vm-shutdown vm=
查看要增加容量的vdi-uuid : 1 x e vm-disk-list vm=
扩充容量:
1 x e vdi-resize uuid=
扩充完成,然后重新启动虚拟机,进入系统将硬盘扩充到虚拟机。
XenServer 命令调整虚拟机CPU 个数
发布时间:June 27, 2012 // 分类:虚拟化 // No Comments
XenServer 客户端管理工具XenCenter 很强大,一般常用操作都可做到,感觉有时还是SSH 操作更方便一点。
获取VM 虚拟机uuid : 1 x e vm-list name-label=
查看当前VM CPU 个数
xe vm-param-list uuid=|grep VCPUs
VCPUs-max ( RW): 2 #最大CPU 个数
VCPUs-at-startup ( RW): 2 #虚拟机启动时CPU 个数 1 2 3 4 修改虚拟机CPU 个数,此操作需先关闭VM 。
```bash
xe vm-shutdown force=fale name-label=
xe vm-param-set VCPUs-max=2 VCPUs-at-startup=2 uuid=
Xenserver 查看VPS/VM 对应虚拟网卡编号vif
发布时间:June 26, 2012 // 分类:虚拟化 // No Comments
先获取XenServer 虚拟机uuid : 1 2 3 4 #http://www.haiyun.me
xe vm-list |grep -A 1
#或
xe vm-list name-label=
1 x e vm-param-list uuid=
另一种方法:
1 x e vm-list params=dom-id ,resident-on name-label=
Xenserver 挂载ISO 存储
发布时间:April 22, 2012 // 分类:虚拟化 // No Comments
XenServer 可挂载ISO 光盘安装系统或做为Livecd 、PE 使用,挂载ISO 存储有三种方法,各有优劣。
1.新建目录并挂载为ISO 存储,此方法最为简单,不过Xenserver 系统剩余空间有限。 1 2 3 mkdir /iso #新建目录
xe sr-create name-label=boot-iso type =iso device-config:location=/iso/Win_pe_iso/ device-config:legacy_mode=true content-type =iso #新建ISO 存储
xe-mount -iso-sr /iso/ #挂载存储
2.新建LV 卷,可自定义大小,稍复杂。 1 2 3 4 5 6 7 vgdisplay #先查看剩余空间,新建LV 不要大于
lvcreate -L 20GB -n iso VG_XenStorage-3aad96c1-a78c-022d-1e9b-a3292ce54067 #新建lv 卷iso
mkfs.ext3 /dev/VG_XenStorage-3aad96c1-a78c-022d-1e9b-a3292ce54067/iso #格式化为ext3格式
mkdir /iso
xe sr-create name-label=myiso type =iso device-config:location=/iso
device-config:legacy_mode=true content-type =iso #创建ISO 存储
vgchange -a y #激活所有卷组
mount /dev//dev/VG_XenStorage-3aad96c1-a78c-022d-1e9b-a3292ce54067/iso /iso #挂载
3.使用Linux 系统NFS 或Windows 系统网络共享挂载ISO ,要在别的服务器上安装NFS 服务器或开启网络共享,最为复杂,不过一劳永逸,多台XenServer 可以共用网络挂载的ISO 存储,推荐此方式。 1 x e-mount -iso-sr http://www.haiyun.me:/path
XenServer 存储概述
发布时间:April 22, 2012 // 分类:虚拟化 // No Comments
存储库 (SR)
XenServer 定义了一个名为存储库 (SR) 的容器来描述存储虚拟磁盘映像 (VDI) 的特定存储目标。SR 具有对本地连接的 IDE 、SATA 、SCSI 和 SAS 驱动器和远程连接的 iSCSI 、NFS 、SAS 和光纤通道的内置支持,因而非常灵活。
物理块设备 (PBD)
物理块设备代表物理服务器和连接的 SR 之间的接口。
虚拟磁盘映像 (VDI)
虚拟磁盘映像是显示给 VM 的存储抽象,VDI 是 XenServer 中的虚拟化存储的基本单元。
虚拟块设备 (VBD)
虚拟块设备是连接器对象(与上述的 PBD 类似),可用于在 VDI 和 VM 之间进行映射。VBD 还可用于微调给定 VDI 的 QoS (服务质量)、统计数据和可引导性等相关参数。
它们之间的联系可以可以用下图说明:
XenServer 下查找占用硬盘IO 较高的虚拟机
发布时间:April 12, 2012 // 分类:虚拟化 // No Comments
首先用iostat 查看各个磁盘读写情况,虚拟机磁盘是以dm-id 为名显示的。 1 i ostat 2 2 #取样两次,每次相隔2秒
查找tps 大于20的vm ,并按大小排序 1 2 iostat 2 2|grep ^dm-|awk -F "[ ]+|[-]" '{if($3>20){print $2"\t"$3}}'|sort -rnk 2 #第一列为磁盘ID ,第二列为当前tps
根据磁盘ID 查找相应的虚拟机 1 2 3 4 5 6 7 8 9 #!/bin/bash
#Created by http://www.haiyun.me
#根据iostat 结果ID 找出相应VM
#执行sh file.sh 编号
case $1 in
*)
id =`ls -l /dev/mapper/|awk '{if ($6=="'$*'"){print $NF}}'|awk -F-- '{print $NF}'`;xe vdi-list|grep -A 1 $id
;;
esac
XenServer由mac地址获取虚拟机名称
发布时间:April 12, 2012 // 分类:虚拟化 // No Comments
1.通过vif列表直接获取
1 x e vm-vif-list|grep -B
2 "mac"
2.通过vm uuid获取
1 v mid=`xe vif-list MAC=be:c1:46:fd:4e:b7|grep vm-uuid|awk'{print $4}'`;xe vm-list|grep $vmid -A 1
.