一、基本环境准备
1、检测CPU是否支持虚拟化
1 |
egrep 'vmx|svm' /proc/cpuinfo |
2、安装软件
1 2 3 4 |
apt-get install qemu-kvm bridge-utils libvirt-bin virtinst virt-manager # virt-manager图形化管理工具,可以通过ssh连接远程libvirtd,我在自己的laptop上装了 # libvirt-bin里面包含了文本模式管理工具virsh,这个比较重要了 # virtinst这个用于安装系统 |
3、网络配置
1)桥接网络
注释掉原网卡配置,加入下面的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
vim /etc/network/interfaces # 编辑配置文件 auto br0 iface br0 inet (static|dhcp) address 192.168.11.2 netmask 255.255.255.0 gateway 192.168.11.1 bridge_ports eth0 # 桥接到eth0网卡 bridge_stp off # 关闭STP协议 bridge_fd 0 # 转发延迟设置为0 service networking restart # 重启网络服务 ifconfig -a # 查看接口信息 |
2)NAT网络
kvm安装好之后默认配置了nat网络,名称为default
virt-manager配置虚拟机网络的时候可见“default”网络选项不可选,因为还没有start这个nat网络
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
virsh # 进入virsh命令交互模式 net-list --all # 列出所有网络类型,default网络的状态默认是inactive net-dumpxml default # 显示default网络的配置细节 net-edit default # 启动编辑器编辑配置文件,按需修改 net-start default # 启动该网络 net-autostart default # 设置为自启动 Notice:可以在配置文件的<dhcp>标签对里面添加mac-ip绑定条目: <host mac='aa:bb:cc:dd:ee:ff' name='vm0' ip='192.168.11.100' /> |
二、 建立存储池
存储池(Storage pools)是放置虚拟机的存储位置,可以是本地的,也可以是网络存储,具体的虚拟机实例放置在卷(Volume)上。
1、建立用于存放存储池的目录
1 2 |
mkdir /home/my mkdir /home/my/images |
########################################################
注:如果开启SELinux,需要额外配置:
配置SELinux文件上下文
1 |
semanage fcontext -a -t virt_image_t /home/my/images |
这个主要是打开SELinux设定,不然虚拟机无法访问存储文件
如果没有semanage,那么安装policycoreutils-python
1 |
yum install policycoreutils-python |
################################################
2、 配置一个存储池
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 以下步骤需进入virsh交互式工具运行,否则请在命令前面增加virsh 命令 pool-define-as my --type dir --target /home/my/images # 定义一个基于目录的存储池 pool-list --all # 列出所有存储池 pool-build my # 构建存储池 pool-start my # 启动存储池 pool-autostart my # 设置为自启动 |
3、 验证存储池
1 |
pool-info my |
显示信息如下:
1 2 3 4 5 6 7 8 |
Name: my UUID: f8e9b1a9-7e30-6925-8d1c-14e2fc0e4f42 State: running Persistent: yes Autostart: yes Capacity: 1.73 TB Allocation: 127.57 GB Available: 1.60 TB |
三、创建存储卷及安装系统
创建了存储池后,就可以创建卷(volume),这里的卷其实就是给虚拟机用的虚拟硬盘。
1、创建卷
1 2 3 4 5 6 7 8 9 10 11 12 |
vol-create-as my kvm.img 120G --format qcow2 # 在存储池my中,创建一个大小120G、格式qcow2的卷kvm.img # --prealloc-metadata, 该参数可以为qcow2格式的卷预分配相应大小的空间,仅限qcow2格式 vol-list my # 列出存储池my中的卷 vol-info kvm.img my # 显示kvm.img的详细信息 vol-delete kvm.img my # 从存储池my中删除kvm.img |
2、创建虚拟机(未亲试)
root shell下使用virt-install来创建(也可以使用virt-manager图形工具)
1 2 3 4 5 6 7 8 9 10 11 12 |
virt-install --name=test # guest主机名称 --virt-type=kvm # 虚拟机类型 --hvm --ram=256 # 分配给guest主机256M内存 --vcpus=1 # 虚拟CPU数量 --network bridge=br0,model=virtio # 桥接方式,和设置虚拟网卡型号 --graphics vnc,port=5900 # 配置VNC显示及其端口 --disk path=/home/vhost/test.qcow2,bus=virtio # 分配磁盘文件和磁盘型号 --os-type=linux # 安装的guest系统类型 --cdrom=/path/to/system_install.iso # 装载光盘文件 --debug # 开启调试信息 |
五、KVM存储池其他管理操作
存储池和存储卷的管理
1、创建 KVM主机存储池
1).基于目录的存储池
1 2 3 4 5 6 7 |
virsh pool-define-as vmware_pool --type dir --target /virhost/vmware # 定义存储池vmware_pool # 或者 virsh pool-create-as --name vmware_pool --type dir --target /virhost/vmware # 创建存储池vmware_pool,类型为文件目录, /virhost/vmware,与pool-define-as结果一样 |
2).基于文件系统(分区)的存储池
1 2 3 4 5 6 |
virsh pool-define-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware # 或者 virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware # 这里示例的是lvm分区 |
2、销毁存储域,取消存储池
1 2 |
virsh pool-destroy vmware_pool # 销毁存储池 |
1 2 |
virsh pool-undefine vmware_pool # 取消存储池的定义 |