kvm简介
- kvm是以色列初创公司Qumaranet开发,2008年9月被RedHat收购;
- kvm是Linux内核的一个模块,它把Linux内核变成一个hypervisor;
- kvm是完全开源的,RedHat基于kvm的虚拟化解决方案叫做RHEV (收费);
- kvm在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得kvm能使用Linux内核的已有功能;
- 只有一个kvm内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样;
- QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所有的硬件,但性能不强;
- kvm基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM;
- 磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的;
- KVM和QEMU-KVM通信是通过/dev/kvm实现的;
- libvirt是用来管理KVM虚拟机的API,其命令为virsh
Centos7上安装KVM
- 前提是CPU支持虚拟化;
- 安装虚拟化组件 $ yum install -y virt-* libvirt bridge-utils qemu-img
配置网卡
网络连接类型:nat模式、桥接模式
选用桥接模式,需要先配置一块虚拟(桥接)网卡:
代码语言:javascript复制$ cd /etc/sysconfig/network-scripts/
$ cp ifcfg-ens32 ifcfg-br0
$ vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.16.180.131 # 注意此处使用原ens32的ip地址
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=172.16.180.2
DNS1=119.29.29.29
DNS2=114.114.114.114
$ vim ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=none
NAME=ens32
DEVICE=ens32
ONBOOT=yes
BRIDGE=br0 # 指定桥接网卡
启动kvm服务
- 检查kvm模块是否加载 $ lsmod |grep kvm kvm_intel 183621 0 kvm 586948 1 kvm_intel irqbypass 13503 1 kvm
- 启动libvirtd服务 $ systemctl start libvirtd
- 查看桥接网卡信息 $ brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29a20bcb no ens32 virbr0 8000.52540036fd27 yes virbr0-nic
创建虚拟机&&安装centos7
代码语言:javascript复制$ virt-install --name vm01 --memory 512,maxmemory=1024 --vcpus 1,maxvcpus=2 --os-type linux --os-variant rhel7 --location /tmp/CentOS-7-x86_64-Minimal-1810.iso --disk /kvm_data/vm01.img,size=10 --network bridge=br0 --graphics none --console pty,target_type=serial --extra-args "console=tty0 console=ttyS0"
参数解析:
--name:要创建的虚拟主机名称
--memory:虚拟内存大小,maxmemory表示最大内存,单位M
--vcpus:虚拟CPU个数,最大为2核
--os-variant:系统类型
--location:系统镜像位置
--disk:指定存储的各种选项
--network:配置客户机网络接口
--graphics:配置客户机显示设
--console:配置文本控制台连接主机与客户机
开始安装后,根据提示信息配置语音、时区、安装位置、root密码等,具体如下:
代码语言:javascript复制================================================================================
================================================================================
Installation
1) [x] Language settings 2) [!] Time settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]: 1
================================================================================
================================================================================
安装完成后有如下提示:
代码语言:javascript复制Performing post-installation setup tasks
.
Configuring installed system
.
Writing network configuration
.
Creating users
.
Configuring addons
.
Generating initramfs
.
Running post-installation scripts
.
Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA
Installation complete. Press return to quit
- 按 "回车" 会启动创建好的虚拟机
- 按 "^]" 会退出安装过程
管理虚拟机
- 查看虚拟机 $ virsh list --all Id 名称 状态 ---------------------------------------------------- 2 vm01 running # --all:查看所有虚拟机,包括为启动的,不加该参数只显示已经启动的虚拟机
- 启动某虚拟机 $ virsh start vm01 说明: 一个虚拟机只能登陆一个virsh用户
- 访问某虚拟机 $ virsh console vm01
- 设置网络:和物理服务器安装系统是配置方式一致,配置完网络后可以通过终端登陆!
- 退出虚拟机 $ exit 如果是在安装完系统后直接通过"回车"进入的虚拟机,在执行 exit 退出终端后,还需要执行 "^]" 退出系统登陆界面。
- 其他管理命令: # 关闭虚拟机 $ virsh shutdown vm01 # 启动虚拟机 $ virsh start vm01 # 强制停止虚拟机,类似于stop $ virsh destroy vm01 # 彻底销毁虚拟机,会强制删除虚拟机配置文件,再执行'virsh list --all'就看不到该虚拟机了 $ virsh undefine vm01 # 查看虚拟机配置文件 $ ls /etc/libvirt/qemu/ # 设置虚拟机随宿主机开机启动 $ virsh autostart vm01 # 取消开机自启 $ virsh autostart --disable vm01 # 挂起 $ virsh suspend vm01 # 恢复 $ virsh resume vm01 # 更多管理命令,可查看 $ virsh --help
(adsbygoogle = window.adsbygoogle || []).push({});