Centos7.Xen虚拟化及DomU的实现

0001-安装xen

下载安装xen源

yum-yinstallcentos-release-xen11

添加xen的源

sed-i-e"s/enabled=1/enabled=0/g"/etc/yum.repos.d/CentOS-Xen.repo11

更新centos内核

yum--enablerepo=centos-virt-xen-yupdatekernel11

安装xen

yum--enablerepo=centos-virt-xen-yinstallxen11

编辑Domain0的配置文件,如同下面code,我配置Domain0的内存是4Gb,如果你安装xen的虚拟机或实体机的内存也为4Gb的话,当安装完xen后重启进入不了系统,注意:虚拟机或实体机的内存一定要大于Domain0设置的内存。

vi/etc/default/grub11
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=4096M,max:4096Mcpuinfocom1=115200,8n1.....11

我使用Libvirt装的虚拟机,安装Libvirt

yum--enablerepo=centos-virt-xen-yinstalllibvirtlibvirt-daemon-xenvirt-install11

运行grub-bootxen.sh脚本,将xen添加到开机启动项中

/bin/grub-bootxen.sh11

重启进入xen系统

reboot11

查看xen的信息,检查是否安装成功

xlinfo11

0010-配置网桥

添加网桥“br0”,添加成功会提示successfully added。

nmclicaddtypebridgeautoconnectyescon-namebr0ifnamebr011
Connection'br0'(0f4b7bc8-8c7a-461a-bff1-d516b941a6ec)successfullyadded.11

为“br0”创建ip地址

nmclicmodifybr0ipv4.addressES10.0.0.30/24ipv4.methodmanual11

为“br0”创建网关

nmclicmodifybr0ipv4.gateway10.0.0.111

为“br0”创建DNS

nmclicmodifybr0ipv4.dns10.0.0.111

删除原有网卡,添加新的网卡与br0连通

nmclicdeleteeno16777736
nmclicaddtypebridge-slaveautoconnectyescon-nameeno16777736ifnameeno16777736masterbr01212

重启NetworkManager服务

systemctlstopNetworkManager;systemctlstartNetworkManager11

查看ip信息

ipaddr11

0011-创建虚拟机

启动Libvirt服务

systemctlstartlibvirtd
systemctlenablelibvirtd1212

安装系统安装镜像,我是用虚拟机安装的xen,我直接把安装镜像解压传到了虚拟机里面,在centos系统的home目录下有一个已经解压好的安装镜像文件“/home/centos”,实体机的话可以挂载安装,找到挂载目录就行。

创建虚拟机镜像目录

mkdir-p/var/xen/images11

开始安装虚拟机,需要注意的是size大小,不要弄太大,要小于机身存储减去Domain0的存储后的存储,否则会报错,提示存储空间不够。

virt-install--connectxen:///--paravirt--namecentos7--ram4096--diskpath=/var/xen/images/centos7.img,size=10--vcpus2--os-typelinux--os-variantrhel7--networkbridge=br0--graphicsnone--location'/home/centos/'--extra-args'textconsole=com1utf8console=hvc0'11

0100-安装成功

之后出现一大堆安装信息,当安装的时候没联网的话,会提示类似超时的信息,只需等待一会即可,安装成功之后,就会进入虚拟机的交互界面,输入exit即可退出xen安装的虚拟机,进入本机系统。


xm工具:xm help

xm list 查看所有域

states 状态显示 r表示运行 s表示关闭 c表示崩溃了 d表示正在关闭中 b表示阻塞 p表示暂停

创建虚拟机

xm create /dev/null ramdisk=initrd.img \

kernel=/boot/vmlinuz-2.6.12.6-xenU \

name=ramdisk vif='' vcpus=1 \

memory=64 root=/dev/ram0



# mkdir -pv /xen/vm1 先创建目录

# dd if=/dev/zero of=/xen/vm1/test.img oflag=direct bs=1M seek=2048 count=1 创建一个稀疏的磁盘镜像,不暂用磁盘空间,实际大小只有1M,显示为2.1G

# mkfs.ext4 /xen/vm1/test.img 分区格式化。

# mount -o loop /xen/vm1/test.img/mnt 挂载

# vim /bincp.sh


#!/bin/bash
#
DEST=/mnt
libcp() {
LIBPATH=${1%/*}
[ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."
}

bincp() {
CMdpath=${1%/*}
[ ! -d $DEST$CMdpath ] && mkdir -p $DEST$CMdpath
[ ! -e $DEST${1} ] && cp $1 $DEST$CMdpath

for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do
libcp $LIB
done
}

read -p "Your command: " CMD
until [ $CMD == 'q' ]; do
! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue
COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
bincp $COMMAND
echo "copy $COMMAND finished."
read -p "Continue: " CMD
done

-------------------------------------

# bash bincp.sh 移植程序


Your command: init
Your command: bash

Your command: ls

Your command: cat

[root@localhost ~]# tree /mnt
/mnt
├── lib64
│ ├── ld-linux-x86-64.so.2
│ ├── libc.so.6
│ ├── libdbus-1.so.3
│ ├── libgcc_s.so.1
│ ├── libnih-dbus.so.1
│ ├── libnih.so.1
│ ├── libpthread.so.0
│ └── librt.so.1
└── sbin
└── init

# chroot /mnt

#cd /mnt
# mkdir proc sys dev etc/{init,rc.d} var/{log,run} tmp

# cp /etc/init/rcS.conf /mnt/etc/init 提供配置文件

--------------------------------

# vi /mnt/etc/init/rcS.conf


# rcS - runlevel compatibility
#
# This task runs the old sysv-rc startup scripts.
#
# Do not edit this file directly. If you want to change the behavIoUr,
# please create a file rcS.override and put your changes there.

start on startup

stop on runlevel

task

# Note: there can be no prevIoUs runlevel here,if we have one it's bad
# information (we enter rc1 not rcS for maintenance). Run /etc/rc.d/rc
# without information so that it defaults to prevIoUs=N runlevel=S.
console output
exec /etc/rc.d/rc.sysinit 只保留这一项

--------------------------------------

# vi /mnt/etc/rc.d/rc.sysinit


#!/bin/bash
##
echo -e "\twelcome to MiniLinux(www.mylinux.com)"
exec /bin/bash


---------------

# umount /mnt


# chmod +x /mnt/etc/rc.d/rc.sysinit

#cd /etc/xen

# vim test

ramdisk="/boot/initramfs-2.6.32-358.el6.x86_64.img"

kernel="/boot/vmlinuz-2.6.32-358.el6.86_64"

name="test"

vcpus=1

memory=128

disk=['file:/xen/vm1/test.img,xvda,w',]

root="/dev/xvda ro"

extra="selinux=0 init=/sbin/init"

-------------------------

# xm create -c test 创建虚拟机,-c表示直接连接到虚拟机

# xm console test 使用xm连上虚拟机



xm destroy test 杀死虚拟机Crtl+] 退出虚拟机

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native