Centos7.Xen虛擬化及DomU的實現

0001-安裝xen

下載安裝xen源

 yum -y install centos-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 -y update kernel11

安裝xen

yum --enablerepo=centos-virt-xen -y install xen11

編輯Domain0的配置文件,如同下面code,我配置Domain0的內存是4Gb,如果你安裝xen的虛擬機或實體機的內存也爲4Gb的話,當安裝完xen後重啓進入不了系統,注意:虛擬機或實體機的內存一定要大於Domain0設置的內存。

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

我使用Libvirt裝的虛擬機,安裝Libvirt

yum --enablerepo=centos-virt-xen -y install libvirt libvirt-daemon-xen virt-install11

運行grub-bootxen.sh腳本,將xen添加到開機啓動項中

/bin/grub-bootxen.sh11

重啓進入xen系統

reboot11

查看xen的信息,檢查是否安裝成功

xl info11

0010-配置網橋

添加網橋“br0”,添加成功會提示successfully added。

nmcli c add type bridge autoconnect yes con-name br0 ifname br011
Connection 'br0' (0f4b7bc8-8c7a-461a-bff1-d516b941a6ec) successfully added.11

爲“br0”創建ip地址

nmcli c modify br0 ipv4.addresses 10.0.0.30/24 ipv4.method manual11

爲“br0”創建網關

nmcli c modify br0 ipv4.gateway 10.0.0.111

爲“br0”創建DNS

nmcli c modify br0 ipv4.dns 10.0.0.111

刪除原有網卡,添加新的網卡與br0連通

nmcli c delete eno16777736
nmcli c add type bridge-slave autoconnect yes con-name eno16777736 ifname eno16777736 master br01212

重啓NetworkManager服務

systemctl stop NetworkManager; systemctl start NetworkManager11

查看ip信息

ip addr11

0011-創建虛擬機

啓動Libvirt服務

systemctl start libvirtd
systemctl enable libvirtd1212

安裝系統安裝鏡像,我是用虛擬機安裝的xen,我直接把安裝鏡像解壓傳到了虛擬機裏面,在centos系統的home目錄下有一個已經解壓好的安裝鏡像文件,“/home/centos”,實體機的話可以掛載安裝,找到掛載目錄就行。

創建虛擬機鏡像目錄

mkdir -p /var/xen/p_w_picpaths11

開始安裝虛擬機,需要注意的是size大小,不要弄太大,要小於機身存儲減去Domain0的存儲後的存儲,否則會報錯,提示存儲空間不夠。

virt-install --connect xen:/// --paravirt --name centos7 --ram 4096 --disk path=/var/xen/p_w_picpaths/centos7.img,size=10 --vcpus 2 --os-type linux --os-variant rhel7 --network bridge=br0 --graphics none --location '/home/centos/' --extra-args 'text console=com1 utf8 console=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+] 退出虛擬機      




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章