KVM使用小记
环境:CentOS6.5 x64
参考文档:
http://blog.chinaunix.net/uid-30022178-id-5749329.html
virsh list
#列出目前处于running状态下的虚拟机
virsh list --all #列出所有defined的虚拟机
virsh define /etc/libvirt/qemu/vmode.xml
#定义(新增)一台虚拟机
virsh undefine vmode
#移除一台叫做vmode的虚拟机
A.通过virsh来安装虚拟机
1.安装
virt-install -n vhost1 -r 768 -vcpus=2 --disk path=/dev/vg0/vhost1 -l http://192.168.0.1/ftp/centos6_1 -x
ks=http://192.168.0.1/ks/centos6-minimal.cfg -w bridge=br0 --vnc --accelerate
-n: virtual name
-r: memory size
-vcpus=: virtual cpus
-l: install source
-x: extra information (ks path)
--disk path=: install location
-w: network mode
--vnc: vnc view
--accelerate: speed up
注:命令行安装内存>=768MB没有任何问题,一旦<=512MB,装出来的机器在grub加载后直接kernel panic,这个问题不知道大家有没有碰到过,之前还以为是kickstart profile的问题,后来反复利用刚装出来的能正常进系统的anncond-ks.cfg来测试,终于发现在参数都相同的情况下,内存<=512MB会导致kernel panic,后期还有待进一步测试。
原因:selinux可能不允许内存<=512MB的rhel6_x64系统启动,可以在grub菜单的kernel行加上selinux=0关闭selinux,以解决kernel panic问题,顺利进入系统。
附上centos6-minimal.cfg这个ks
# Kickstart file automatically generated by anaconda.
#version=DEVEL
# Install OS instead of upgrade
install
# Use network installation
url --url=http://192.168.0.1/ftp/centos6_1
# Use text mode install
text
# System language
lang en_US.UTF-8
# System keyboard
keyboard us
# Network information
network --onboot yes --device eth0 --bootproto dhcp --noipv6
# Root password
#rootpw --plaintext centos
rootpw --iscrypted
$6$5xb7Z/30bviKF7xP$UyAYRFqGkeQrlkqxQQzPjzFfQj/3SjomcouuNB2Mk.2CPIsml2K/KC5MKSp9yBiGNhzj0KaY95WqfR/DpNK3K.
# Firewall configuration
#firewall --disabled
firewall --service=ssh
# System authorization information
authconfig --enableshadow --passalgo=sha512
# SELinux configuration
selinux --enforcing
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --utc Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr --driveorder=vda --append="crashkernel=auto text quiet console=tty0 console=ttyS0"
# 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
# Clear the Master Boot Record
zerombr
# Partition clearing information
#clearpart --none
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200
part pv.253002 --grow --size=200
volgroup vg0 --pesize=4096 pv.253002
logvol /home --fstype=ext4 --name=home --vgname=vg0 --size=200
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=1388
logvol swap --name=swap --vgname=vg0 --size=256
repo --name="CentOS"
--baseurl=http://192.168.0.1/ftp/centos6_1 --cost=100
%packages
@core
@server-policy
%end
%post
cd /etc/yum.repos.d/
rm -rf *
wget http://192.168.0.1/yum/CentOS-Media.repo
%end
2.通过console管理虚拟机
需要进入到虚拟机中编辑/boot/grub/grub.conf,添加启动内核参数
在kernel行的末尾加上console=tty0 console=ttyS0,然后重启。
提示:可以在ks文件中添加内核参数,使安装出来的机器就包含该参数
重启完成后,可以通过命令在字符界面下管理虚拟机,如:virsh console vhost1
B.通过lvm snap功能快速创建虚拟机
##################################################
jlive: 物理机
vmode: 虚拟机,作为模板之用 (vmode 虚拟机的名称)
1.将源虚拟机的个性化信息去除
[root@vmode ~]# sys-unconfig
2.虚拟机将自动关机,关机后在物理机上对源虚拟机所在的LV做快照
[root@jlive ~]# lvcreate -s -n vhost1 -L 2G /dev/vg0/vmode
3.复制源虚拟机的配置文件
[root@jlive ~]# cat /etc/libvirt/qemu/vmode.xml > /etc/libvirt/qemu/vhost1.xml
4.使用uuidgen生成虚拟机的唯一UUID
[root@jlive ~]# uuidgen >>/etc/libvirt/qemu/vhost1.xml
5.修改新虚拟机的配置文件(修改虚拟机的名称、uuid、disk、network部分)
[root@jlive ~]# vim /etc/libvirt/qemu/vhost1.xml
6.重启相关服务
[root@jlive ~]# /etc/init.d/libvirtd restart
Stopping libvirtd daemon:
[ OK ]
Starting libvirtd daemon:
[ OK ]
或者
virsh define /etc/libvirt/qemu/vhost1.xml
#定义(新增)一台虚拟机
7.启动虚拟机
[root@jlive ~]#virsh start vhost1
C.通过kvm模板来创建虚拟机
1.创建虚拟机模板
virt-install
--name ct6-mode
--ram=768
--vcpus=2
--disk path=/var/lib/libvirt/images/ct6-mode,size=10,format=qcow2
--location="http://192.168.8.254/ftp/centos6_1"
--extra-args="ks=http://192.168.8.254/ks/centos6-minimal.cfg noipv6"
--noreboot
--os-type=linux
--os-variant=rhel6
--network bridge=br0,mac=52:54:00:00:00:00
--vnc
--accelerate
参数和上面的virt-install大致相当,但最大区别在于--disk这个参数,在lvm快照中是将路径指向某个没有任何格式的逻辑卷,这里则是采用qcow2格式的文件size=10,表示10G动态增长
2.克隆镜像,要做多少个虚拟机就克隆多少个,克隆出来的文件非常小只有几MB
qemu-img create -f qcow2 -o backing_file=/var/lib/libvirt/images/ct6-mode /var/lib/libvirt/images/vhost1.vol &>/dev/null
qemu-img create -f qcow2 -o backing_file=/var/lib/libvirt/images/ct6-mode /var/lib/libvirt/images/vhost2.vol &>/dev/null
3.创建虚拟机
virt-install
--name vhost1
--ram=384
--vcpus=2
--disk path=/var/lib/libvirt/images/vhost1.vol
--noreboot
--os-type=linux
--os-variant=rhel6
--network bridge=br0,mac=52:54:00:01:00:01
--network bridge=br0,mac=52:54:00:02:00:01
--network bridge=br0,mac=52:54:00:03:00:01
--network bridge=br0,mac=52:54:00:04:00:01
--import &>/dev/null
virt-install
--name vhost2
--ram=384
--vcpus=2
--disk path=/var/lib/libvirt/images/vhost2.vol
--noreboot
--os-type=linux
--os-variant=rhel6
--network bridge=br0,mac=52:54:00:01:00:02
--network bridge=br0,mac=52:54:00:02:00:02
--network bridge=br0,mac=52:54:00:03:00:02
--network bridge=br0,mac=52:54:00:04:00:02
--import &>/dev/null
要修改虚拟机的名字,存放的位置,当然也可以自定义其它组件如网卡,硬盘等,--import参数很重要
这样,通过virsh list --all时就会看到有2个虚拟机(vhost1,vhost2)己经生成好,生成速度非常快。
D.通过virsh命令创建快照和还原
1.创建快照
virsh # list --all
Id
Name
State
----------------------------------------------------
-
rhel7-s1
shut off
-
rhel7-s2
shut off
-
ubuntu14.04
shut off
-
vhost1
shut off
-
vhost2
shut off
-
virsh list
virsh list --all
virsh define /etc/libvirt/qemu/vmode.xml
virsh undefine vmode
A.通过virsh来安装虚拟机
1.安装
virt-install -n vhost1 -r 768 -vcpus=2 --disk path=/dev/vg0/vhost1 -l http://192.168.0.1/ftp/centos6_1 -x
ks=http://192.168.0.1/ks/centos6-minimal.cfg -w bridge=br0 --vnc --accelerate
-n: virtual name
-r: memory size
-vcpus=: virtual cpus
-l: install source
-x: extra information (ks path)
--disk path=: install location
-w: network mode
--vnc: vnc view
--accelerate: speed up
注:命令行安装内存>=768MB没有任何问题,一旦<=512MB,装出来的机器在grub加载后直接kernel panic,这个问题不知道大家有没有碰到过,之前还以为是kickstart profile的问题,后来反复利用刚装出来的能正常进系统的anncond-ks.cfg来测试,终于发现在参数都相同的情况下,内存<=512MB会导致kernel panic,后期还有待进一步测试。
原因:selinux可能不允许内存<=512MB的rhel6_x64系统启动,可以在grub菜单的kernel行加上selinux=0关闭selinux,以解决kernel panic问题,顺利进入系统。
附上centos6-minimal.cfg这个ks
# Kickstart file automatically generated by anaconda.
#version=DEVEL
# Install OS instead of upgrade
install
# Use network installation
url --url=http://192.168.0.1/ftp/centos6_1
# Use text mode install
text
# System language
lang en_US.UTF-8
# System keyboard
keyboard us
# Network information
network --onboot yes --device eth0 --bootproto dhcp --noipv6
# Root password
#rootpw
rootpw
# Firewall configuration
#firewall --disabled
firewall --service=ssh
# System authorization information
authconfig --enableshadow --passalgo=sha512
# SELinux configuration
selinux --enforcing
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --utc Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr --driveorder=vda --append="crashkernel=auto text quiet console=tty0 console=ttyS0"
# 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
# Clear the Master Boot Record
zerombr
# Partition clearing information
#clearpart --none
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200
part pv.253002 --grow --size=200
volgroup vg0 --pesize=4096 pv.253002
logvol /home --fstype=ext4 --name=home --vgname=vg0 --size=200
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=1388
logvol swap --name=swap --vgname=vg0 --size=256
repo --name="CentOS"
%packages
@core
@server-policy
%end
%post
cd /etc/yum.repos.d/
rm -rf *
wget http://192.168.0.1/yum/CentOS-Media.repo
%end
2.通过console管理虚拟机
需要进入到虚拟机中编辑/boot/grub/grub.conf,添加启动内核参数
在kernel行的末尾加上console=tty0 console=ttyS0,然后重启。
提示:可以在ks文件中添加内核参数,使安装出来的机器就包含该参数
重启完成后,可以通过命令在字符界面下管理虚拟机,如:virsh console vhost1
B.通过lvm snap功能快速创建虚拟机
##################################################
jlive: 物理机
vmode: 虚拟机,作为模板之用 (vmode 虚拟机的名称)
1.将源虚拟机的个性化信息去除
[root@vmode ~]# sys-unconfig
2.虚拟机将自动关机,关机后在物理机上对源虚拟机所在的LV做快照
[root@jlive ~]# lvcreate -s -n vhost1 -L 2G /dev/vg0/vmode
3.复制源虚拟机的配置文件
[root@jlive ~]# cat /etc/libvirt/qemu/vmode.xml > /etc/libvirt/qemu/vhost1.xml
4.使用uuidgen生成虚拟机的唯一UUID
[root@jlive ~]# uuidgen >>/etc/libvirt/qemu/vhost1.xml
5.修改新虚拟机的配置文件(修改虚拟机的名称、uuid、disk、network部分)
[root@jlive ~]# vim /etc/libvirt/qemu/vhost1.xml
6.重启相关服务
[root@jlive ~]# /etc/init.d/libvirtd restart
Stopping libvirtd daemon:
Starting libvirtd daemon:
或者
virsh define /etc/libvirt/qemu/vhost1.xml
7.启动虚拟机
[root@jlive ~]#virsh start vhost1
C.通过kvm模板来创建虚拟机
1.创建虚拟机模板
virt-install
--name ct6-mode
--ram=768
--vcpus=2
--disk path=/var/lib/libvirt/images/ct6-mode,size=10,format=qcow2
--location="http://192.168.8.254/ftp/centos6_1"
--extra-args="ks=http://192.168.8.254/ks/centos6-minimal.cfg noipv6"
--noreboot
--os-type=linux
--os-variant=rhel6
--network bridge=br0,mac=52:54:00:00:00:00
--vnc
--accelerate
参数和上面的virt-install大致相当,但最大区别在于--disk这个参数,在lvm快照中是将路径指向某个没有任何格式的逻辑卷,这里则是采用qcow2格式的文件size=10,表示10G动态增长
2.克隆镜像,要做多少个虚拟机就克隆多少个,克隆出来的文件非常小只有几MB
qemu-img create -f qcow2 -o backing_file=/var/lib/libvirt/images/ct6-mode /var/lib/libvirt/images/vhost1.vol &>/dev/null
qemu-img create -f qcow2 -o backing_file=/var/lib/libvirt/images/ct6-mode /var/lib/libvirt/images/vhost2.vol &>/dev/null
3.创建虚拟机
virt-install
--name vhost1
--ram=384
--vcpus=2
--disk path=/var/lib/libvirt/images/vhost1.vol
--noreboot
--os-type=linux
--os-variant=rhel6
--network bridge=br0,mac=52:54:00:01:00:01
--network bridge=br0,mac=52:54:00:02:00:01
--network bridge=br0,mac=52:54:00:03:00:01
--network bridge=br0,mac=52:54:00:04:00:01
--import &>/dev/null
virt-install
--name vhost2
--ram=384
--vcpus=2
--disk path=/var/lib/libvirt/images/vhost2.vol
--noreboot
--os-type=linux
--os-variant=rhel6
--network bridge=br0,mac=52:54:00:01:00:02
--network bridge=br0,mac=52:54:00:02:00:02
--network bridge=br0,mac=52:54:00:03:00:02
--network bridge=br0,mac=52:54:00:04:00:02
--import &>/dev/null
要修改虚拟机的名字,存放的位置,当然也可以自定义其它组件如网卡,硬盘等,--import参数很重要
这样,通过virsh list --all时就会看到有2个虚拟机(vhost1,vhost2)己经生成好,生成速度非常快。
D.通过virsh命令创建快照和还原
1.创建快照
virsh # list --all
----------------------------------------------------