Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66604
  • 博文数量: 34
  • 博客积分: 5
  • 博客等级: 民兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-03 22:02
文章分类

全部博文(34)

文章存档

2013年(2)

2012年(3)

2011年(29)

分类:

2011-12-16 15:41:43

原文地址:xen 虚拟机安装创建 作者:chenwenming

开始安装xen虚拟机
检查环境:
  uname  -r
  brctl  show
  ls  /etc/init.d/xen*

安装:
 文本方式
Install Guest(虚拟机):
virt-install  --name=vm1 --ram=256 --file=/var/ftp/xen/vm1.img --nographics --location=ftp://192.168.1.254/RHEL5U5/  --file-size=5 --nonsparse --vcpus=4 --paravirt --bridge=xenbr0 --vnc --vncport=5910 --debug 
                虚拟机名称  内存大小      映像文件                   半虚拟化只支持三种网络安装 (全虚拟化支持cdrom/iso镜像) 映像文件最大大小是5G    CPU的个数  半虚拟化  桥接所使用的交换机设备   指定VNC的监听端口  详细输出模式    
 --nonsparse 不使用稀疏文件。     占总大小5G,如果实际空间没有达到5G,则只占用实际大小的硬盘空间。
==>
virt-install  --help
virt-install  --name=vm1 --ram=512 --file=/var/ftp/pg/vm1.img --location=ftp://192.168.0.253/RHEL5U5/  --file-size=5 --vcpus=4 --paravirt --bridge=xenbr1 --vnc --debug

 --location nfs:192.168.1.254:/disk1/rhel5u5
 --location http://主机的IP/实际的/完整目录
 --location ftp://主机的IP/实际的完整目录

[root@pgserver /]# virt-install --name vm2 --ram=256 --vcpus 4 --location=ftp://192.168.1.254/RHEL5U5 --file=/disk1/xen/vm2.img --file-size=5 --bridge=xenbr0 --vnc --vncport=5920 --debug
二, 04  1月 2011 15:18:52 DEBUG    Requesting libvirt URI default
二, 04  1月 2011 15:18:52 DEBUG    Received libvirt URI 'xen:///'
二, 04  1月 2011 15:18:52 DEBUG    Requesting virt method '默认'
二, 04  1月 2011 15:18:52 DEBUG    Received virt method 'xen'
二, 04  1月 2011 15:18:52 DEBUG    Hypervisor name is 'xen'
二, 04  1月 2011 15:18:52 DEBUG    DistroInstaller location is a network source.


 图形方式
   需要安装virt-manager软件包
  执行命令]# virt-manager   ----- 新建

在安装过程中,如果关掉了窗口,实际不影响实际安装,此时,直接virt-vncviewer   vm1  就可以再打开窗口。
 virt-vncviewer  --help    注意:只能一个远程方式查看,第二个远程用此命令是看不到输出界面的。
维护管理:(xm命令在EL5中还能用,但是EL6中没有了,改为virsh命令)
启动:
xm create vm1
停:

删除:
/tmp/vm1.img
/etc/xen/vm1


virsh --help 
[root@pgserver scripts]# virsh help 
命令:

    help            打印帮助
    attach-device   从一个XML文件附加装置
    attach-disk     附加磁盘设备
    attach-interface 获得网络界面
    autostart       自动开始一个域
    capabilities    性能
    connect         连接(重新连接)到 hypervisor
    console         连接到客户会话
    create          从一个 XML 文件创建一个域
    start           开始一个(以前定义的)非活跃的域
    destroy         删除一个域
    detach-device   从一个 XML 文件分离设备
    detach-disk     分离磁盘设备
    detach-interface 分离网络界面
    define          从一个 XML 文件定义(但不开始)一个域
    domid           把一个域名或 UUID 转换为域 id
    domuuid         把一个域名或 id 转换为域 UUID
    dominfo         域信息
    domname         将域 id 或 UUID 转换为域名
    domstate        域状态
    domblkstat      获得域设备块状态
    domifstat       获得域网络接口状态
    dumpxml         XML 中的域信息
    edit            编辑某个域的 XML 配置
    find-storage-pool-sources 发现潜在存储池源
    find-storage-pool-sources-as 找到潜在存储池源
    freecell        NUMA可用内存
    hostname        打印管理程序主机名
    list            列出域
    migrate         将域迁移到另一个主机中
    net-autostart   自动开始网络
    net-create      从一个 XML 文件创建一个网络
    net-define      从一个 XML 文件定义(但不开始)一个网络
    net-destroy     删除一个网络
    net-dumpxml     XML 中的网络信息
    net-edit        为网络编辑 XML 配置
    net-list        列出网络
    net-name        把一个网络UUID 转换为网络名
    net-start       开始一个(以前定义的)不活跃的网络
    net-undefine    取消定义一个非活跃的网络
    net-uuid        把一个网络名转换为网络UUID
    nodeinfo        节点信息
    nodedev-list    这台主机中中的枚举设备
    nodedev-dumpxml XML 中的节点设备详情
    nodedev-dettach 分离节点设备及其设备驱动程序
    nodedev-reattach 重新附加节点设备设备机器设备驱动程序
    nodedev-reset   重置节点设备
    nodedev-create  create a device defined by an XML file on the node
    nodedev-destroy destroy a device on the node
    pool-autostart  自动启动某个池
    pool-build      建立池
    pool-create     从一个 XML 文件中创建一个池
    pool-create-as  从一组变量中创建一个池
    pool-define     在一个 XML 文件中定义(但不启动)一个池
    pool-define-as  在一组变量中定义池
    pool-destroy    销毁池
    pool-delete     删除池
    pool-dumpxml    XML 中的池信息
    pool-edit       为存储池编辑 XML 配置
    pool-info       存储池信息
    pool-list       列出池
    pool-name       将池 UUID 转换为池名称
    pool-refresh    刷新池
    pool-start      启动一个(以前定义的)非活跃的池
    pool-undefine   取消定义一个不活跃的池
    pool-uuid       把一个池名称转换为池 UUID
    quit            退出这个非交互式终端
    reboot          重新启动一个域
    restore         从一个存在一个文件中的状态恢复一个域
    resume          重新恢复一个域
    save            把一个域的状态保存到一个文件
    schedinfo       显示/设置日程安排变量
    dump            把一个域的内核 dump 到一个文件中以方便分析
    shutdown        关闭一个域
    setmem          改变内存的分配
    setmaxmem       改变最大内存限制值
    setvcpus        改变虚拟 CPU 的号
    suspend         挂起一个域
    ttyconsole      tty 控制台
    undefine        取消定义一个非活跃的域
    uri             打印管理程序典型的URI
    vol-create      从一个 XML 文件创建一个卷
    vol-create-as   从一组变量中创建卷
    vol-delete      删除卷
    vol-dumpxml     XML 中的卷信息
    vol-info        存储卷信息
    vol-list        列出卷
    vol-path        将卷 UUID 转换为卷路径
    vol-name        将卷 UUID 转换为卷名称
    vol-key         将卷 UUID 转换为卷密钥
    vcpuinfo        域 vcpu 的信息
    vcpupin         控制域 vcpu affinity
    version         显示版本
    vncdisplay      vnc 显示


start           开始
 [root@pgserver scripts]# virsh start vm1
list             列出域
        [root@pgserver scripts]# virsh list
  Id 名称               状态
 ----------------------------------
   0 Domain-0             running
   2 pgsys1               闲置

reboot          正常重新启动一个域(虚拟机)
 [root@pgserver scripts]# virsh reboot vm1
shutdown     正常关闭一个域(虚拟机)
 [root@pgserver scripts]# virsh shutdown vm1
destroy         强制立即停止一个域(虚拟机)
 [root@pgserver scripts]# virsh destroy vm1

save            把一个域的状态保存到一个文件 (挂起)
restore         从一个存在一个文件中的状态恢复一个域 (恢复)
console  



显示虚拟机屏幕:
virt-viewer pgsys1


克隆虚拟机: (克隆完要改IP/NETWORK信息)
virt-clone -o vm1 -n vm5 -f /var/ftp/xen/vm5.img -d


先来克隆

virt-clone -o vm1 -n vm5 -f /var/ftp/xen/vm5.img -d
              克隆vm1命名为vm5,新生成的vm5的映像文件是/var/ftp/xen/vm5.img,-d显示过程

[root@pgserver xen]# virt-clone  -o pgsys1 -n pgsys2 -f /disk1/xen/pgsys2.img -d --nonsparse

 virt-install --nographics -n qingvm05 -r 8129 -f /a8root/xen/qing/centos5-3.img -l 


xen ks安装方法:
1.生成一个img文件
dd if=/dev/zero of=cwm_vm2.img bs=1024k count=8000
2.编辑ks文件

[root@gw2 install]# cat ks_64_vm_org.cfg
# Kickstart file automatically generated by anaconda.

install
url --url
lang en_US.UTF-8
network --device eth0 --bootproto static --ip 192.168.200.74 --netmask 255.255.254.0 --gateway 192.168.200.2 --nameserver 202.106.0.20 --hostname vm_org
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc America/New_York
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
# Partiton
clearpart --linux --drives=xvda
part /boot --size 101 --ondisk=xvda
part swap --size 1000 --ondisk=xvda
part pv.01 --size 5001 --grow --ondisk=xvda
volgroup rootvg pv.01
logvol / --vgname=rootvg --size=1001 --grow --name=rootvol

rootpw --iscrypted $1$MqJdtS0W$tjx0YhdUkNVwaZm1grhTU.
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Shanghai
# Install OS instead of upgrade
install
services --disabled=acpid,apmd,bluetooth,cpuspeed,cups,fristboot,gpm,haldaemon,hidd,mdmonitor,mcstrans,ip6tables,netfs,messagebus,nfslock,pcscd,portmap,xfs,readahead_early,restorecond,rpcgssd,rpcidmapd,sendmail
%packages
@development-tools
ntp
lynx
elinks
mc
vim-minimal
iproute
iptraf
gcc
gcc-c++
lrzsz
sysstat
openssl-devel
# INSTALL SNMP
net-snmp
net-snmp-utils
net-snmp-perl
net-snmp-libs
#squid
#kernel-PAE
#kernel-PAE-devel
#sys_config_zhou
compat-libstdc++-33

%pre
#!/bin/sh
echo " Welcome to my kickstart"
%post
(echo -en "# ntp sync time\n01 * * * * root /usr/sbin/ntpdate clock.redhat.com > /dev/null; hwclock --systohc" >> /etc/crontab ) 1>/root/post-sc.log 2>&1

#==== CHANGE YUM.CONF =====
rpm -Uhv
rpm -Uvh
rpm -Uvh
mkdir -p /a8root/soft/yumcache
perl -p -i -e 's/cachedir\=\/var\/cache\/yum/cachedir=\/a8root\/soft\/yumcache/g' /etc/yum.conf
perl -p -i -e 's/keepcache\=0/keepcache=1/g' /etc/yum.conf


# install tools
yum --disablerepo=* --enablerepo=rpmforge -y install nload
rpm -Uvh


#==== CHANGE ULIMIT ====
echo -en "* soft nofile 32767\n" >> /etc/security/limits.conf
echo -en "* hard nofile 65535\n" >> /etc/security/limits.conf



#==== UPDATE SSHD ====
yum -y update "openssh*"
perl -p -i -e 's/^#Port(\s+)22/Port 2222/g' /etc/ssh/sshd_config
perl -p -i -e 's/--dport 22 -j ACCEPT$/--dport 2222 -j ACCEPT/g' /etc/sysconfig/iptables

3. virt-install --nographics -n cwm_vm3 -r 512 -f /a8root/xen/cwm_vm3.img -l -x "ks= ip=192.168.200.55 netmask=255.255.254.0 gateway=192.168.200.2 "








为虚拟机添加硬盘
扩容有两种方案:一、给虚拟机再加一个img文件;二、给centos.5-3.x86.img扩容
方案一比较简单,我就不细说了。下面说下第二种方案。
1、停止正在运行的虚拟机。
2、为centos.5-3.x86.img增容。
# dd if=/dev/zero bs=1024k count=1024 >> centos.5-3.x86.img
注意红色的部分,是双箭头“>>”,而不是单箭头“>”,否则的话,你将会得到一个1G大小的空文件
3、强制检查
#e2fsck -f centos.5-3.x86.img
4、改变虚拟机文件系统的大小
# resize2fs centos.5-3.x86.img
5、重新启动虚拟机,就可以看到根分区多了1G
dd if=/dev/zero of=vm01.img bs=1 count=1 seek=20G conv=notrunc
e2fsck -f vm01.img -y
resize2fs -p vm01.img
 
另一种方法:
You need to do something like
# Create new empty disk-image
dd if=/dev/zero of=disk-image count=10240
# set up a loop-device for it
losetup /dev/loop2 disk-image
# initialize that loop-device for LVM
pvcreate /dev/loop2
# Create a VG on it
vgcreate Test /dev/loop2
Now you can create Logical Volumes on that VG, e.g.:
# Create a logical volume
lvcreate 4M MyLV Test
# Create a filesystem on it
mke2fs /dev/Test/MyLV
# mount the filesystem
mkdir MyLV
mount /dev/Test/MyLV MyLV
And if you want to remove everything
umount MyLV
rmdir MyLV
lvremove /dev/Test/MyLV
vgremove Test
losetup -d /dev/loop2
rm disk-image
Xen环境下为DomU在线添加磁盘空间设备 Xen环境内,可以为运行中的DomU,动态添加磁盘设备。

以下为系统为RHEL5.2的系统在线添加磁盘的方法:
在Dom0端建立新的逻辑卷:
# lvcreate vg0 -n xen_rh01 -L 15G
Logical volume "xen_rh01" created
为名称为“rh501”的虚拟机添加设备文件为xvdb:
# xm block-attach rh501 phy:/dev/vg0/xen_rh01 /dev/xvdb w
DomU的终端出现下列信息:
xvdb: unknown partition table
用下列命令可以动态删除设备文件:

确认设备的ID:
# xm block-list rh501
Vdev  BE handle state evt-ch ring-ref BE-path
51712  0    0     4      9      8     /local/domain/0/backend/vbd/3/51712
51728  0    0     4      12     330   /local/domain/0/backend/vbd/3/51728
* 上述命令行执行结果的最后一行的最后的五位数为新添加的磁盘设备
删除设备:
# xm block-detach rh501 51728
(Usage: xm block-detach   [-f|--force])
根据需要可以用 -f (强制执行)选项
 
 
 

1.增加内存



只要修改虚拟机的配置文件就可以了

[root@vmxen vm]# cat /etc/xen/vm4
name = "vm4"
uuid = "705ae6ad-3ab2-5447-8e00-eeee939e4a2c"
maxmem = 256
memory = 256
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/vm/vm4.img,xvda,w","tap:aio:/vm/vm4hd2.img,xvdb,w" ]
vif = [ "mac=00:16:36:48:25:65,bridge=xenbr0,script=vif-bridge" ]


注意:修改虚拟机内存前需要把剩下的所有内存回收,分配给domain-0 ,否则会出现内存与实际内存不符的情况。
命令:
xm list
xm mem-set Domain-0 6144(实际剩余内存)

 vi /etc/xen/hostname
 maxmem = 2048
 memory = 2048

 

2.增加硬盘

首先增加一个img文件作为虚拟机的新硬盘,     dd if=/dev/zero of=/vm/vm4hd2.img bs=1M count=2048

然后修改虚拟机配置文件 ,增加xvdb的新磁盘。

disk = [ "tap:aio:/vm/vm4.img,xvda,w","tap:aio:/vm/vm4hd2.img,xvdb,w" ]

这样,重启vm后输入fdisk -lh就可以看到第二块硬盘了。

注意:比较好的方法是建虚拟机时就建两块硬盘,xvda用来装系统,xvdb用来存放数据,这样在硬盘空间不足时可以再增加一块硬盘或者扩充xvdb的容量,对系统的影响比较小。

比如:xm1 的xvda为8G装系统,xvdb 32G存放数据。

3.新建虚拟机

只要拷贝xen vm的img镜像文件和配置文件,并修改配置文件中的镜像路径和虚拟机名称就可以了。

注意要修改虚拟机的mac地址,要不然会出现冲突。

4.让虚拟机随宿主机一起启动。

只要在/etc/xen/auto建立一个xen vm配置文件的链接就可以了。

比如: ln -s /etc/xen/vm1 /etc/xen/auto/vm1.

 

阅读(1722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~