一:基础:

1安装

yum grouplist

 

yum  -y groupinstall "虚拟化" "虚拟化平台"  "虚拟化工具" "虚拟化客户端"

 

Virtualization 虚拟化

Virtualization Client  虚拟化客户端

Virtualization Tools  虚拟化工具

Virtualization Platform  虚拟化平台

 

2.启动 kvm 服务(守护进程libvirtd

/etc/init.d/libvirtd start

chkconfig libvirtd on

网络

1. 创建虚拟机

 

virt-manager —— 创建虚拟机、控制虚拟机

1pxe

2)手动(cdrom

 

2. KVM桥接网卡配置

# vim ifcfg-br0

DEVICE="br0"

TYPE="Bridge"

 

# vim  ifcfg-eth0

。。。

BRIDGE=br0

 

3.添加虚拟网络

 

4.给虚拟机添加设备

 

配置文件

1一台虚拟机对应2个配置文件

虚拟机配置信息的文件  /etc/libvirt/qemu/serverA.xml

虚拟机磁盘镜像文件  /var/lib/libvirt/p_w_picpaths/serverA.img

 

第一个配置文件  (四个位置确定唯一性)

<domain>

<name>serverA</name>                             虚拟机名字

<uuid>46dd6b6e-e68b-f6f1-5a9d-d13eb8d13ee0</uuid>   唯一uuid

<source file='/var/lib/libvirt/p_w_picpaths/serverA.img'/>        镜像位置

 <mac address='52:54:00:8e:4b:6c'/>                    mac地址

</domain>

 2虚拟系统管理器 --> 编辑 --> "Connection Details"

      单击"+"--> network1 --> 192.168.4.0/24

       不要启用KVM自带的DHCP

       !!!! 避免VMware Workstation的虚拟网卡的冲突

 

virsh命令

1查看KVM节点(服务器)信息

virsh  nodeinfo

2查看指定虚拟机的信息

virsh  dominfo  虚拟机名称

3、查看虚拟机列表

virsh  list

virsh  list  --all

4、查看virsh版本

virsh  version

5、启动名称为rhel6pxeGUEST主机

virsh  start  rhel6pxe

6、强制关闭GUEST主机

virsh  destroy  rhel6pxe

7将指定的虚拟机重启

virsh  reboot  虚拟机名称

8将指定的虚拟机正常关机

virsh  shutdown  虚拟机名称

9、导出GUEST主机的XML配置文件

virsh dumpxml  虚拟机名        查看

virsh  dumpxml  rhel6pxe  >  ~/rhel6pxe.xml

10、取消GUEST主机的定义

virsh  undefine  rhel6pxe

11、使用已经存在的xml文件和磁盘文件定义GUEST主机

virsh  define  ~/rhel6pxe.xml

12、设置GUEST主机在HOST主机启动时,也会自动启动

virsh  autostart  rhel6pxe

13将指定的虚拟机设置不随KVM自动开机

virsh  autostart  --disable  虚拟机名称

14查看虚拟机(进入虚拟机界面)

virt-viewer  虚拟机名

15、虚拟机的挂起

virsh suspend rhel5f     虚拟机挂起

virsh resume rhel5f       挂起恢复

 

Virsh   save   rhel47   文件        将虚拟机状态保存到文件的挂起(内存的状态)

(重启物理机也可以恢复到原来状态)

Virsh   restore  文件            将虚拟机恢复

16、链接远端qemu(KVM)

virsh -c qemu+ssh://root@ip/system

17、virsh链接虚拟机

virsh   console  domain

 

如果界面卡死   Escape  character is ~]

 

解决办法

修改客户端

1、修改 /etc/securetty 到最后添加 ttyS0

 

echo ttyS0 >> /etc/securetty

 

2、修改/etc/inittab 到最后添加 S0:12345:respawn:/sbin/agetty/ ttyS0 115200

 

echo "S0:12345:respawn:/sbin/agetty/ ttyS0 115200" >> /etc/inittab

3、修改/etc/grub.conf ,如下图所示在 kernel 这一行的末尾,添加console=ttyS0

6的内核哪一行为kernel XXXXX  

7linux16XXXXXXXX

重启客户端再次尝试

、使用LVM方式管理虚拟主机磁盘

1、创建LV

1#  fdisk  -cu  /dev/sdb  ->system-id改为8e

2#  pvcreate  /dev/sdb1

3#  vgcreate  vg_kvm  /dev/sdb1

4#  lvcreate  -n  rhel6base  -L  10G  vg_kvm

2、创建GUEST主机时,磁盘选择创建的LV

spacer.gif 

3、设置模板虚拟机。把模板计算的个性化信息去除,如root密码、IP地址等。

1)启动rhel6base虚拟机后,执行以下命令

#  touch   /.unconfigured

4、生成lv快照

# lvcreate  -s  -n  rhel6node1  -L  2G  /dev/vg_kvm/rhel6base

5、导出原有虚拟机的配置文件

#  virsh  dumpxml  rhel6base  >  rhel6node1.xml

6、生成一个uuid

[root@localhost ~]# uuidgen

9cb350bb-2add-461f-9e05-afc9799b3d9b

7、修改rhel6node1.xml

spacer.gif 

spacer.gif 

8、利用新的xml文件和LV快照定义新的克隆虚拟机

#  virsh  define  rhel6node1.xml

 

9、当虚拟机用完,想要删除时,只要把虚拟机取消定义,并删除LV即可

#  virsh  undefined  rhel6node1

#  lvremove  /dev/vg_kvm/rhel6node1

 

、使用qcow2管理KVM虚拟机磁盘

1、创建qcow2磁盘文件

[root@localhost ~]# cd  /var/lib/libvirt/p_w_picpaths/

[root@localhost p_w_picpaths]# qemu-img  create  -f  qcow2  rhel6base.img  80G

磁盘格式转换

qemu-img  convert  -f vpc(virtual  Box类型)  -o raw  就磁盘  新磁盘名

2、查看虚拟磁盘文件信息

[root@localhost p_w_picpaths]# qemu-img  info  rhel6base.img

p_w_picpath: rhel6base.img

file format: qcow2

virtual size: 80G (85899345920 bytes)

disk size: 136K

cluster_size: 65536

3、安装虚拟机到该文件中,使用脚本命令

 

、使用qcow2增量镜像实现克隆虚拟机功能

1、根据基础镜像创建增量镜像文件

# qemu-img  create  -b  rhel6base.img  -f  qcow2  rhel6basenode1.img

[root@localhost p_w_picpaths]# qemu-img  info  rhel6basenode1.img

p_w_picpath: rhel6basenode1.img

file format: qcow2

virtual size: 80G (85899345920 bytes)

disk size: 136K

cluster_size: 65536

backing file: rhel6base.img

2、生成克隆虚拟机的XML文件

# virsh  dumpxml  rhel6base  >  rhel6basenode1.xml

#  vim  rhel6basenode1.xml  #参见(三)中的修改方法

3、定义新的虚拟机

#  virsh  define  rhel6basenode1.xml

 

 

 

LVM快照

1、 COW  -> copy  on  write 写时复制

2、应用。如,数据库的库文件存在lv(名称为lv_db)上,大小为10G,如果在数据库仍然在运行的条件下,要备份某一个时间点的数据(如1030),那么可以使用快照snapshot

#  lvcreate  -s  -n  lv_db-snap  -L  1G  /dev/vg_db/lv_db

#  mount  -o  ro  /dev/vg_db/lv_db-snap  /mnt

/mnt中把数据库备份走即可

3、快照只是临时应用,用完后移除即可

#  lvremove  /dev/vg_db/lv_db-snap

 

九、另一种克隆方法

virt-clone  -o  模板虚拟机  -n  新虚拟机名称  -f 克隆后的虚拟机磁盘路径

 

十:从命令行创建虚拟机(建模板机)

 

1. 为虚拟机准备磁盘(逻辑卷)

lvcreate  -L  20G  -n  lv_node1  vg_data

2. 创建新的虚拟机,并从命令行安装RHEL 6.5系统(PXE方式)

[root@kvmsvr ~]# virt-install \

--name node1  --vcpus=1  --ram=1024  \

--disk path=/dev/vg_data/lv_node1 \

--network  network=network1  --pxe

 

    !!!! 详细可参考 man  virt-install 手册页

    !!!! 对于非PXE安装,应改用 --location=安装源URL

 

3. 初始化模板虚拟机,关机备用(平时应闲置)

 touch  /.unconfigured

//下次开机后会要求重设键盘、时区、root口令、网络等信息

4brctl    命令

Brctl  --help