KVM构建及管理
虚拟化概述
Virtualization(虚拟化)
x个物理资源 ----> y个逻辑资源
实现程度:完全虚拟化
部分虚拟化
硬件辅助(CPU)虚拟化
KVM
打开virt-manager客户端工具
[root@room1pc32 桌面]# virt-manager
手动新建一台虚拟机:
虚拟机名字:example
1.查看KVM节点(服务器)信息
virsh nodeinfo
[root@room1pc32 桌面]# virsh nodeinfo
CPU 型号: x86_64
CPU: 4
CPU 频率: 3299 MHz
CPU socket: 1
每个 socket 的内核数: 2
每个内核的线程数: 2
NUMA 单元: 1
内存大小: 8048744 KiB
2.列出虚拟机
virsh list [--all]
[root@room1pc32 桌面]# virsh list
Id 名称 状态
----------------------------------------------------
7 example running
[root@room1pc32 桌面]# virsh list --all
Id 名称 状态
----------------------------------------------------
7 example running
- classroom 关闭
- desktop 关闭
- server 关闭
- win2008 关闭
3.列出虚拟网络
virsh net-list [--all]
4.查看指定虚拟机的信息
virsh dominfo 虚拟机名称
[root@room1pc32 桌面]# virsh dominfo win2008
Id: -
名称: win2008
UUID: 3f55c551-dddc-ec8d-b082-34d17367a403
OS 类型: hvm
状态: 关闭
CPU: 2
最大内存: 2097152 KiB
使用的内存: 0 KiB
持久: 是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0
5.运行|重启|关闭指定的虚拟机器
virsh start|reboot|shutdown 虚拟机名
[root@room1pc32 桌面]# virsh start win2008
域 win2008 已开始
[root@room1pc32 桌面]# virsh shutdown win2008
域 win2008 被关闭
6.强行关闭指定的虚拟机
virsh destroy 虚拟机名称
[root@room1pc32 桌面]# virsh destroy win2008
域 win2008 被删除
7.将指定的虚拟机设置为开机自动运行
virsh autostart [--disable] 虚拟机名称
[root@room1pc32 桌面]# virsh autostart win2008
域 win2008标记为自动开始
[root@room1pc32 桌面]# virsh autostart --disable win2008
域 win2008取消标记为自动开始
在Linux 中KVM 虚拟机组成
xml配置文件(虚拟机描述文件):定义虚拟机的名称,UUID,CPU,内存,虚拟磁盘,网卡等各种参数设置
/etc/libvirt/qemu/*.xml
磁盘镜像文件:保存虚拟机的操作系统及文档数据,镜像路径取决于xml配置文件中的定义
/var/lib/libvirt/images/
用一个大的文件充当
[root@room1pc32 桌面]# du -sh /var/lib/libvirt/images/ #统计文件目录大小
51G /var/lib/libvirt/images/
细节: 模版虚拟机example,删除Channel的设备
通过example虚拟机,生成新的虚拟机
1.关闭example虚拟机
[root@room1pc32 桌面]# virsh destroy example
域 example 被删除
2.通过example虚拟机,磁盘文件复制一份
[root@room1pc32 桌面]# cd /var/lib/libvirt/images/
[root@room1pc32 images]# qemu-img info example.qcow2
image: example.qcow2
file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 3.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
[root@room1pc32 images]# cp example.qcow2 test01.qcow2
3.通过example虚拟机,复制虚拟机描述文件
[root@room1pc32 images]# cd /etc/libvirt/qemu/
[root@room1pc32 qemu]# cp example.xml test01.xml
修改 虚拟机名称 UUID 虚拟机
...
<name>test01</name> #9行
<uuid>910dd9c6-567d-475b-812a-18f6bacfa104</uuid> #10行
<source file='/var/lib/libvirt/images/test01.qcow2'/> #41行
<mac address='12:54:00:11:2e:8b'/> #75行
....
[root@room1pc32 qemu]# uuidgen #随即生成UUID
910dd9c6-567d-475b-812a-18f6bacfa104
4.导入新虚拟机信息
[root@room1pc32 qemu]# virsh define /etc/libvirt/qemu/test01.xml
定义域 test01(从 /etc/libvirt/qemu/test01.xml)
5.验证
[root@room1pc32 qemu]# virsh list --all
导出xml配置文件
查看:virsh dumpxml 虚拟机名
备份:virsh dumpxml 虚拟机名 > 虚拟机名.xml
对虚拟机的配置进行调整
编辑:virsh edit 虚拟机名
导入虚拟机
virsh define XML描述文件
删除虚拟机
virsh undefine 虚拟机名
快速重建虚拟机
COW写时复制 copy on wirte
– 直接映射原始盘的数据内容
– 当原始盘的旧数据有修改时,在修改之前自动将旧数据存入前端盘
– 对前端盘的修改不回写到原始盘
快速创建qcow前端盘
虚拟机的磁盘镜像文件格式 QCOW2
qemu-img 通过 -b 选项复用指定原始盘
-qemu-img create -f qcow2 -b 原始盘 前端盘
1.关闭虚拟机
[root@room1pc32 /]# virsh destroy example
2.生成前端盘
[root@room1pc32 /]# qemu-img create -f qcow2 -b /var/lib/libvirt/images/example.qcow2 /var/lib/libvirt/images/test02.qcow2
Formatting '/var/lib/libvirt/images/test02.qcow2', fmt=qcow2 size=9663676416 backing_file='/var/lib/libvirt/images/example.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
3.生成新的虚拟机
[root@room1pc32 /]# virsh edit example
编辑了域 test02 XML 配置。
4.导入新虚拟机信息
[root@room1pc32 /]# cd /etc/libvirt/qemu
[root@room1pc32 qemu]# virsh define test02.xml
定义域 test02(从 test02.xml)
5.验证
[root@room1pc32 qemu]# virsh list --all
通过COW写时复制原理 我写了一个实现快速生成虚拟机脚本
http://blog.51cto.com/13558754/2057094
离线访问虚拟机
使用guestmount 工具(必须关闭SELinux)
– 支持离线挂载 raw、qcow2 格式虚拟机磁盘
– 可以在虚拟机关机的情况下,直接修改磁盘中的文档
– 方便对虚拟机定制、修复、脚本维护
用法:
guestmount -a 虚拟机磁盘路径 -i /挂载点
[root@svr7 ~]# yum provides "*guestmount*" #查看安装guestmount包
已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
1:libguestfs-tools-c-1.28.1-1.55.el7.x86_64 : System administration tools for
: virtual machines
源 :dvd
匹配来源:
文件名 :/usr/bin/guestmount
文件名 :/usr/share/man/man1/guestmount.1.gz
[root@room1pc32 ~]# yum -y install libguestfs-tools
[root@room1pc32 桌面]# mkdir /opt/mnt
[root@room1pc32 桌面]# guestmount -a /var/lib/libvirt/images/rh7_node1.img -i /opt/mnt/
[root@room1pc32 桌面]# ls /opt/mnt
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
本文转自 Xuenqlve 51CTO博客,原文链接:http://blog.51cto.com/13558754/2057088,如需转载请自行联系原作者