-------------kvm 是什么?
KVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。 2006 年 10 月,
由以色列的Qumranet 组织开发的一种新的“虚拟机”实现方案。 2007 年 2 月发布的 Linux 2.6.20 内核第一次包含了 KVM 。
增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。
KVM 在标准的 Linux 内核中增加了虚拟技术,从而我们可以通过优化的内核来使用虚拟技术。在 KVM 模型中,
每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)。
一个典型的 KVM 安装包括以下部件:
一个管理虚拟硬件的设备驱动,这个驱动通过一个字符设备 /dev/kvm 导出它的功能。通过 /dev/kvm每一个客户机拥有其自身的地址空间,
这个地址空间与内核的地址空间相分离或与任何一个正运行着的客户机相分离。
一个模拟硬件的用户空间部件,它是一个稍微改动过的 QEMU 进程。从客户机操作系统执行 I/O 会拥有QEMU 。
QEMU 是一个平台虚拟化方案,它允许整个 PC 环境(包括磁盘、显示卡(图形卡)、网络设备)的虚拟化。
任何客户机操作系统所发出的 I/O 请求都被拦截,并被路由到用户模式用以被 QEMU 过程模拟仿真。
CentOS上安装KVM功能模块步骤
1.KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。
基于 Intel 处理器的系统,运行grep vmx /proc/cpuinfo查找 CPU flags 是否包括 vmx 关键词
基于 AMD 处理器的系统,运行grep svm /proc/cpuinfo查找 CPU flags 是否包括 svm 关键词
检查BIOS,确保BIOS里开启VT选项:
注 : 一些厂商禁止了机器 BIOS 中的 VT 选项 , 这种方式下 VT 不能被重新打开。**
注意:/proc/cpuinfo 仅从 Linux 2.6.15(Intel) 和 Linux 2.6.16(AMD) 开始显示虚拟化方面的信息。
请使用 uname -r 命令查询您的内核版本。如有疑问,请联系硬件厂商。
-----------------centos 7 安装kvm
----要安装centos 7 的
一、基础平台
1.一台装有VMware的Windows系统 (可联网)
2.CentOS7.1 64bit 镜像
二、安装一台CentOS 7.1系统的VMware虚拟机"CentOS KVM01"
要求:内存4G、硬盘100G、CPU 8核(勾选Virtualization engine中:
Virtualize Intel VT-x/EPT or AMD-V/RVI,否则不支持虚拟化配置),
系统安装选择“GNOME Desktop”(生产建议使用最小化安装,这里是为了方便kvm虚拟机的安装),
关闭firewalld、selinux服务。
三、虚拟化环境准备
1.查看是否支持虚拟化
grep -E 'vmx|svm' /proc/cpuinfo
出现如下既为支持虚拟化:
2.安装KVM相关包
yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python
3.设置libvirtd服务自启
systemctl enable libvirtd && systemctl start libvirtd
验证:
查看以下模块是否被加载
[root@kvm01 ~]# lsmod | grep kvm
kvm_intel 148081 0
kvm 461126 1 kvm_intel
查看虚拟机环境
[root@kvm01 ~]# virsh -c qemu:///system list
Id 名称 状态
----------------------------------------------------
4.配置软连接
ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
5.创建以下目录
mkdir /vm-images #存放kvm虚拟机目录
mkdir -p /data/iso #存放iso镜像目录
四、配置虚拟网桥
编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,增加如下一行:
BRIDGE=br0
新建/etc/sysconfig/network-scripts/ifcfg-br0文件如下
TYPE="Bridge"
BOOTPROTO=static
DEVICE="br0"
ONBOOT="yes"
DNS1=10.0.0.2
IPADDR=10.0.0.5
PREFIX=24
GATEWAY=10.0.0.2
DELAY="0"
配置/etc/sysctl.conf,增加如下一行
net.ipv4.ip_forward = 1
使/etc/sysctl.conf配置生效
sysctl -p /etc/sysctl.conf
重启网卡服务,使网卡配置生效
systemctl restart NetworkManager.service
验证:
查看网桥
[root@kvm01 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
virbr0 8000.525400940eda yes virbr0-nic
-----
---------------kvm常用命令
一、查看虚拟机列表及状态
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
- vm1 shut off
二、启动虚拟机系统
[root@kvm01 ~]# virsh start vm1
Domain vm1 started
三、停止虚拟机系统
[root@kvm01 ~]# virsh shutdown vm1
停止虚拟机要求虚拟机开启acpid服务
四、重启虚拟机系统
[root@kvm01 ~]# virsh reboot vm1
五、强制关机虚拟机系统
[root@kvm01 ~]# virsh destroy vm1
六、设置虚拟机随宿主机开机自启
[root@kvm01 ~]# virsh autostart vm1
七、取消虚拟机随宿主机开机自启
[root@kvm01 ~]# virsh autostart --disable vm1
八、挂起及恢复虚拟机
挂起:
[root@kvm01 ~]# virsh suspend vm1
恢复:
[root@kvm01 ~]# virsh resume vm1
九、编辑虚拟机XML配置文件
[root@kvm01 ~]# virsh edit vm1
注:vm1配置文件要求已经define
十、定义虚拟机XML配置文件
修改了虚拟机XML配置文件以后要求声明XML配置文件
[root@kvm01 ~]# virsh define /etc/libvirt/qemu/vm1.xml
或声明XML配置文件,并启动虚拟机
[root@kvm01 ~]# virsh create /etc/libvirt/qemu/vm1.xml
十一、取消声明的虚拟机XML配置文件
[root@kvm01 ~]# virsh undefine vm1
十二、创建虚拟机
参见:CentOS7.1 KVM虚拟化之linux虚拟机安装(2)
十三、删除虚拟机
1.关闭虚拟机系统
[root@kvm01 ~]# virsh shutdown vm1
若不生效则强制关机
[root@kvm01 ~]# virsh destroy vm1
2.取消开机自启
[root@kvm01 ~]# virsh autostart --disable vm1
3.取消虚拟机XML配置文件定义
[root@kvm01 ~]# virsh undefine vm1
4.删除虚拟机磁盘文件
rm -rf /vm-images/vm1.img
十四、备份(导出)虚拟机XML配置文件
virsh dumpxml vm1 > /etc/libvirt/qemu/vm1_dump.xml
十五、控制台管理虚拟机
[root@kvm01 ~]# virsh console vm1
十六、显示虚拟机信息
virsh dominfo vm1
十七、查看磁盘信息
[root@kvm01 ~]# qemu-img info /vm-images/vm1.img
image: /vm-images/vm1.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.7G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true