XenServer 网络配置

从Xenserver 5开始用,到现在都是Xenserver 7.6了,速度真是快。

相应时代的变迁,我也需要从XEN 转移到KVM了,在此记录一下XenServer 的网络配置

Xenserver 默认的network stack 就是vswitch,可以使用如下命令查看network stack

xe host-list params=software-version

在output 中, 查看network_backend, 一般有两个结果, openvswitch 或者 bridge, 默认是openvswitch

bridge 是Linux network stack,如果我们想改回linux network stack, 可以使用如下命令:

xe-switch-network-backend bridge

PIF  represents a physical NIC

VIF represents a virtual NIC on a VM

network is a virtual Ethernet switch on a xenserver host

 

关于VP*N routing 的理解

昨天有一台小VPS的梯子怎么也上不去了,debug了一天才发现原来是routing 的问题。平时一直没有时间仔细看一下梯子的routing,今天仔细解析一下:

在pptpd.conf上,我们通常会加入如下两句命令:

localip 192.168.9.1
remoteip 192.168.9.11-30 //表示vp000n客户端获得ip的范围

如此可见,pptp是将远程服务器和pptp客户端建立一个内网,用类似于192.168.9.0/24的网段,再将远程服务器的IP和localip进行动态NAT,用远程的服务器的IP做为gateway来访问外网

假如说远程服务器的IP是207.210.83.140,我们就需要在IPtable上添加一个NAT的命令:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j SNAT –to-source 207.210.83.140

表示所有用eth0网卡的source ip位192.168.9.0/24的数据包,他的source IP将会被改为207.210.83.140

或者如果这台服务器专门用来扶墙,就可以简单一点,更省事一点

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

MASQUERADE 表示自动获取服务器的默认地址,就不需要–to-source命令了。

在服务器只有一个IP的情况下是可以的,但是如果你有多个IP,最好使用–to-source来区分不同的出口IP

 

 

Xenserver 快速安装debian

回首看看过去一年写过的博文,我真为我自己的语言水平感到汗颜。。我自己都读的不通顺。。。

回归正题,之所以有在Xenserver上安装debian的需求,完全是因为我有几台online.net的服务器,说起online.net, 真是对他又爱又恨。。。爱他是因为他的网络真心的稳定,价格便宜实惠而且网络又好。。。恨他是因为他家独有的float IP。。。让玩Xen 虚拟化的人吃劲了麻烦。。。尤其是在服务器的主IP 和 failover IP 不在一个/16的IP 段的时候,你就基本上不能使用net install 来安装centos 和 debian 了

但是没有想到今天无意间看到一篇关于在xenserver 上创建 SR 的文章, 通过本地的local SR,可以直接添加centos 和 debian 的minimum instal ISO file

过程如下:

步骤一: 直接ssh 登录你的xenserver 服务器,创建如下目录

mkdir -p /var/opt/xen/iso_import

步骤二: 创建 local SR ( storage repository)

xe sr-create name-label=LocalISO type=iso device-config:location=/var/opt/xen/iso_import device-config:legacy_mode=true content-type=iso

这个时候你就可以在xencenter 上看到这个local SR 了

步骤三: 将你的想用的iso 直接wget 到/var/opt/xen/iso_import 这个目录下面, 比如说centos mini iso, debian netinst iso 等等,在xencenter 上点击rescan 就可以啦

这样在你安装新的centos 和 debian 的时候,就可以直接选择这些iso 啦

 

 

file system on control domain full

这是玩 xenserver 的人经常会碰到的问题,一般来说标准的答案是清除 /tmp 下面的文件,以及/var/log中以.gz 结尾的文件,可以使用如下的命令:

 

rm -rf /tmp/*

rm -rf /var/log/*.gz

 

但是对于经常给xenserver打补丁的人来说,以上的标准的处理方式也许就不行了,删除上面的文件后,你会发现硬盘占有率仍然在90%以上,那么这个时候该怎么办呢?

简单,进入/var/patch, 删除除 applied 目录以外的所有文件,正式这些补丁文件,占据了系统的大部分磁盘。

Xenserver 自动升级

现在我的每台机器都安装了xenserver,但是xenserver 的升级确实是个问题,手动升级确实很恶心。

于是这就有了Darren Gibbard的自动升级程序,拿perl 写的,异常的方便.

code:

wget –no-check-certificate -O patcher.py https://raw.github.com/dalgibbard/citrix_xenserver_patcher/master/patcher.py

chmod +x patcher.py

./patcher.py

一些常用的xenserver 的命令集合

这是在搜索xenserver 的 SR 的问题的时候无意中找到的,很有帮助,对于我这种懒人来说

xe help –all|more
Show a list of XenServer CLI commands

xsconsole
Runs up the XenServer text based console

xe-toolstack-restart
Restarts the XenServer management tools

ls –l
List files in a Directory

less /var/log/dmesg
Display Boot Messages from Linux

xe host-dmesg
Xen Hypervisor Boot messages

tail –f /var/log/xensource.log
Look at xapi messages as they happen

tail –f /var/log/xensource.log | grep xxx
Look at xapi messages only for vm uuid xxx

tail –f [log name] > [target filename]
Send output to a file for analysis later

cat /etc/xensource-inventory
Display XenSource Inventory info

xen-bugtool –yes
Build a status report when xapi is down

xe-backup-metadata -d –u [uuid of SR]
Back up Pool metadata for all VMs

tcpdump –i [inf] –vvv –w [filename]
Get a Packet trace from [inf]. E.g. Inf=eth0, xenbr0, vif2.0 etc.

top
List the top processes running in Dom0

xentop
List top Xen processes

mpstat 5
Processor stats in Dom0

vmstat 2
Virtual memory in Dom0

netstat –s
Networking statistics

iostat -d 2 6
Storage traffic stats

list_domains
Lists VMs that are running

fdisk –l
List the disk partitions

hdparm –t /dev/sda3
Device read times for sda3 (normally local SR)

pvs
Show local and remote LVHD SRs

ll /dev/disks/by-id
Look at disk partitions

lvs
List logical volumes (virtual disks)

vgs
List LVM volume groups

cd /var/run/sr-mount
Look at NFS SRs

df -h
Shows how much disk space you have left

dd if=/dev/sdb of=/dev/null iflag=direct bs=1M count=512
Read data performance from sdb.

dd if=/dev/zero of=/dev/sdb oflag=direct bs=1M count=4096
Write performance on sdb. * Don’t use on disks with VMs on them!

ifconfig
Show info on NICs, virtual switches and vNICs

brctl show
Show info on virtual switches

ethtool eth0
Info for NIC eth0

mii-tool
Info on NIC bonding

iscsiadm -m discovery –type sendtargets –port 192.168.250.14
Discover iSCSI targets available to this server

iscsiadm –m session
Open iscsi sessions

history
Lists the history of commands you’ve used

!136
Executes command #136 in the history

history -w history-list.txt
Writes the history info to a text file

 

Xenserver 的初始化

现在形成的习惯是,每个新的dedicated server 都会去安装xenserver,这样能够尽量充分利用这个服务器. 大部分时候都习惯自己去安装xenserver,顺便让xenserver自己初始化local storage repo. 可是如果xenserver 是由IDC 安装的话,那么80%的可能性是只会给你安装xenserver的程序,xenserver程序所在的硬盘的剩余空间,不会给你初始化成local storage repo,那么这个时候就需要我们自己来首先创建/dev/sda3, 然后把sda3初始化为local storage repo.

首先我们需要看下xenserver的基本架构. 假设我们xenserver安装在你sda上, 那么在sda上默认会有两个区, 分别是/dev/sda1, /dev/sda2. sda1变式xenserver程序所在的分区, sda2  和 sda1大小相等,都是5GB大小,是sda1 的备份镜像区.  假设这个sda 的大小为500GB, 那么刨除sda1和 sda2 以后,还有490GB 的空间,我们需要把这490GB 的空间创建为sda3,然后在sda3上创建local SR.

xenserver 从6.0 开始,默认使用GPT分区,也就是说单个分区可以达到2TB 以上. fdisk 命令是专门用于MBR分区的,对GPT分区不适用. 也就是说我们需要使用GPT分区的程序. 通过搜索,你会发现,大部分教程都是教你使用parted, 但是parted 程序较为复杂,而且xenserver 这个linux 发行版上默认没有安装parted. 那是因为xenserver 使用的是另外一个GPT分区的工具, gdisk.

 

gdisk 和 fdisk 的使用方式,命令参数一模一样,不同的是一个用于GPT分区,一个用于MBR 分区.

话不多说,通过gdisk 很快就创建/dev/sda3, 这里要注意的是, sda3需要创建成的文件格式是linux

LVM. 这里还需要说一句的是,既然fdisk 无用识别GPT,也因为无法使用fdisk 来查看磁盘分区。解决的办法有两个,一个是cat /proc/partitions;  另外一个就是sgdisk命令,类似于fdisk, 来查看分区情况。

创建好/dev/sda3以后,剩下的就简单多了,可以直接参见我写的这篇文章

http://www.webmasterschina.com/2014/10/19/116/

 

Xenserver 上安装 centos 和 debian

以前很傻呼呼的,都是直接用的minimal cd 安装的,现在知道了原来还可以用URL 的方式安装

对于centos来说,可以使用这些URL:

http://mirrors.sonic.net/centos/6/os/x86_64/

http://less.cogeco.net/centos/6/os/x86_64/

http://centos.mirror.constant.com/6/os/x86_64/

http://centos.mirror.root.lu/centos/6/os/x86_64/

http://mirror.nl.leaseweb.net/centos/6/os/x86_64/

http://repos.lax.quadranet.com/centos/6/os/x86_64/

亚洲的可选:

http://centos.mirror.cdnetworks.com/6/os/x86_64/

安装完以后安装 xentools:

mount /dev/cdrom /media
cd /media/Linux/

./install.sh

 

在 xenserver上安装debian,可以使用一下URL:

ftp://ftp.us.debian.org/debian

安装xen tools:

mount /dev/cdrom /media
cd /media/Linux/

./install.sh