Centos 7下KVM 虚拟机搭建

KVM(Kernel-based Virtual Machine)是支持虚拟化扩展(Intel VT 或 AMD-V技术)x86硬件的Linux完全虚拟化解决方案。它包括了一个可加载的内核模块kvm.ko,提供了核心的虚拟化架构以及一个处理器特定模块(kvm-intel.ko或kvm-amd.ko)。
使用KVM,用户可以运行多个无需修改的Linux或Windows虚拟机。每个虚拟机有自己私有的虚拟硬件:网卡、磁盘、显卡等等。

系统化境
iptables off
selinux disabled

安装kvm虚拟化

查看cpu是否支持全虚拟化

1
grep -E '(vmx|svm)' /proc/cpuinfo

安装虚拟化组件

1
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils

启动并设置开机自启动虚拟化服务

1
2
systemctl start libvirtd
systemctl enable libvirtd

检查虚拟化模块是否加载

1
lsmod | grep kvm

安装图形界面

1
yum -y groupinstall "GNOME Desktop"

图形化管理工具

1
virt-manager

配置桥接网络

拷贝一个br0网络配置文件
cd /etc/sysconfig/network-scripts/
cp ifcfg-em1 ifcfg-br0
配置ifcfg-em1

1
2
3
4
5
TYPE=Ethernet
BOOTPROTO=static
DEVICE=em1
ONBOOT=yes
BRIDGE=br0

配置ifcfg-br0

1
2
3
4
5
6
7
8
TYPE=Bridge
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.6.122
NETMASK=255.255.255.0
GATEWAY=192.168.6.1
DNS1=223.5.5.5

重启网络

1
systemctl restart network

查看br0状态

1
2
ip addr show br0
brctl show

创建一个存储池

centos7操作系统安装的时候,自动分区时,大部分空间划分给/home分区了,默认的存储在/var/lib/libvirt/images目录下,在创建虚拟机之前我需要创建一个存储池;规划在/home/kvm/images 目录下
新建目录并设置权限

1
mkdir -p /home/kvm/images;chown root:root /home/kvm/images;chmod 755 /home/kvm/images;

创建存储池

1
2
3
4
5
6
7
8
9
10
11
12
13
#定义一个存储池绑定目录
virsh pool-define-as StoragePool --type dir --target /home/kvm/images;
#建立基于文件夹的存储池
virsh pool-build StoragePool;
#激活StoragePool
virsh pool-start StoragePool;
#存储池开机自动运行,使用virsh pool-autostart
virsh pool-autostart StoragePool;
#查看存储池的信息
virsh pool-info StoragePool
#查看创建的所有存储池
virsh pool-list

创建一个数据卷

1
virsh vol-create-as --pool StoragePool --name sql_server_2012.qcow2 100G --format qcow2

查看存储卷信息

1
2
virsh vol-info --pool StoragePool sql_server_2012.qcow2
virsh vol-info /home/kvm/images/sql_server_2012.qcow2

删除一个数据卷

1
virsh vol-delete --pool StoragePool sql_server_2012.qcow2

创建虚拟机

命令行创建虚拟机

1
virt-install --name sql_server_2012 --memory 4096 --vcpus sockets=1,cores=2,threads=2 --disk device=cdrom,path=/home/cn_windows_server_2012_r2_x64_dvd_2707961.iso --disk path=/home/kvm/images/sql_server_2012.qcow2 --network bridge=br0,model=e1000 --noautoconsole --accelerate --hvm --graphics vnc,listen=0.0.0.0,password=123456,port=20007 --cpu host-passthrough --autostart

图形界面创建安虚拟机

1
virt-manager

(过程略)

virtsh 常用指令

1)virsh list 列出当前虚拟机列表,不包括未启动的
2)virsh list –all 列出所有虚拟机,包括所有已经定义的虚拟机
3)virsh destroy vm-name 关闭虚拟机
4)virsh start vm-name 启动虚拟机
5)virsh edit vm-name 编辑虚拟机xml文件
6)virsh undefine vm-name 删除虚拟机
7)virsh shutdown vm-name 停止虚拟机
8)virsh reboot vm-name 重启虚拟机
9)virsh autostart vm-name 虚拟机随宿主机启动

virsh pool与vol命令帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Storage Pool (help keyword 'pool')
find-storage-pool-sources-as 找到潜在存储池源
find-storage-pool-sources 发现潜在存储池源
pool-autostart 自动启动某个池
pool-build 建立池
pool-create-as 从一组变量中创建一个池
pool-create 从一个 XML 文件中创建一个池
pool-define-as 在一组变量中定义池
pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file
pool-delete 删除池
pool-destroy 销毁(删除)池
pool-dumpxml XML 中的池信息
pool-edit 为存储池编辑 XML 配置
pool-info 存储池信息
pool-list 列出池
pool-name 将池 UUID 转换为池名称
pool-refresh 刷新池
pool-start 启动一个(以前定义的)非活跃的池
pool-undefine 取消定义一个不活跃的池
pool-uuid 把一个池名称转换为池 UUID
Storage Volume (help keyword 'volume')
vol-clone 克隆卷。
vol-create-as 从一组变量中创建卷
vol-create 从一个 XML 文件创建一个卷
vol-create-from 生成卷,使用另一个卷作为输入。
vol-delete 删除卷
vol-download 将卷内容下载到文件中
vol-dumpxml XML 中的卷信息
vol-info 存储卷信息
vol-key 为给定密钥或者路径返回卷密钥
vol-list 列出卷
vol-name 为给定密钥或者路径返回卷名
vol-path 为给定密钥或者路径返回卷路径
vol-pool 为给定密钥或者路径返回存储池
vol-resize 创新定义卷大小
vol-upload 将文件内容上传到卷中
vol-wipe 擦除卷

参考:
http://www.linuxtechi.com/install-kvm-hypervisor-on-centos-7-and-rhel-7/
http://wangying.sinaapp.com/archives/1893
http://wangying.sinaapp.com/archives/1914

独学无友,孤陋寡闻;学习记录,欢迎拍砖!