kvm
https://blog.csdn.net/chengyinwu/article/details/103281476  有待整理
kvm集群管理 ovirt 、 proxmox
一、简单介绍
KVM(Kernel-based Virtual Machine)是内核级虚拟化技术
1、kvm和qemu
kvm硬件虚拟化(CPU和内存) ,qemu软件虚拟化 。二者相辅相成,QEMU通过KVM达到了硬件虚拟化的速度,而KVM则通过QEMU来模拟设备。对于KVM来说,其匹配的用户空间工具并不仅仅只有QEMU,还有其他的,比如RedHat开发的libvirt、virsh、virt-manager等,QEMU并不是KVM的唯一选择
2、kvm和docker
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案,但它本质上是进程隔离(namespace)和资源限制(cgroups),严格来说不算是虚拟化技术。
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
二、KVM 安装配置
1、环境准备
关闭Selinux & 防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 设置Yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache 查看是否支持虚拟化 cat /proc/cpuinfo | grep -E 'vmx|svm' 查看KVM 驱动是否加载 lsmod | grep kvm 如果没有加载kvm驱动,利用命令加载驱动 modprobe -a kvm modprobe -a kvm_intel
2、安装kvm及相关组件
安装所需工具包qemu-kvm librvirt virt-manager
在安装之前我们最好更新一下软件包 yum update -y 安装qemu-kvm yum install -y qemu-kvm 安装libvirt yum install -y libvirt [root@abcdocker.com ~]# systemctl restart libvirtd [root@abcdocker.com ~]# systemctl enable libvirtd #libvirt 用来管理kvm 安装virt-manager工具 yum install -y virt-manager 解决字符集问题(CRT会出现) yum install dejavu-lgc-sans-fonts 或者一条通配符 # yum install *qemu* *virt* librbd1-devel -y
3、查看版本(编译安装的较新)
# /usr/libexec/qemu-kvm -version
QEMU emulator version 2.12.0 (qemu-kvm-ev-2.12.0-33.1.el7)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
# qemu-img --help | grep version
qemu-img version 2.12.0 (qemu-kvm-ev-2.12.0-33.1.el7)
    '-V', '--version'    output version information and exit
       conversion. If the number of bytes is 0, the source will not be scanned for
4、相关工具
libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。 Virsh:基于 libvirt 的 命令行工具 (CLI) Virt-Manager:基于 libvirt 的 GUI 工具 virt-v2v:虚机格式迁移工具 virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等 sVirt:安全工具
5、rocky8安装kvm
# dnf groupinstall 'Virtualization Host' # dnf -y install virt-install virt-manager virt-viewer virt-v2v
三、KVM 网络
1、KVM 客户机网络连接有两种方式:
(1)用户模式(NAT):这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外网访问虚拟机网络 (2)桥接模式(Bridge):这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的主机可以直接访问到虚拟机内部
2、配置桥接网络
IP地址 说明 备注 10.4.82.220 本机IP 10.4.82.200 网关地址 10.4.82.116 虚拟机IP
1.编辑宿主机网卡
[root@YZSJHL82-220 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 DEVICE=em1 ONBOOT=yes HWADDR=B4:99:BA:B1:24:57 TYPE=Ethernet BOOTPROTO=static BRIDGE=br0 ## 注释网络配置,添加BRIDGE=br0
2.添加bro虚拟网卡
# vim /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 BOOTPROTO=none ONBOOT=yes TYPE=Bridge IPADDR=10.4.82.220 NETMASK=255.255.255.0 GATEWAY=10.4.82.200 ##添加网络配置,TPYE设置为Bridge
3. 重启网卡
# systemctl restart network
如果重启网卡有报错,内容如下
Linux : Bridge support not available: brctl not found
请安装br网卡依赖包
yum install bridge-utils -y
4.查看IP地址
此时ens33物理网卡应该没有IP,IP应该都在br0网卡上
5、配置虚拟机ip
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 HWADDR=52:54:00:ED:7A:16 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes PEERDNS=yes NAME=eth0 UUID=1c1d3828-0adb-4d1a-ada5-80eda0646952 ONBOOT=yes IPADDR=10.4.82.113 NETMASK=255.255.255.0 GATEWAY=10.4.82.200 #和宿主机的网关一样 DNS1=114.114.114.114
四、制作快照
命令行方式(磁盘格式为qcow2才支持快照)
虚拟机创建快照:
# virsh snapshot-create-as vm8 vm8.snap1(vm8为虚拟机)
# virsh snapshot-create centos7.0  (不如上面的方便)
已生成域快照 1583311966
# virsh snapshot-list centos7.0   查看当前快照
 名称               生成时间              状态
------------------------------------------------------------
 centos7.sanp1        2020-03-03 16:13:43 +0800 shutoff
 centos7.snap2        2020-03-03 16:26:07 +0800 shutoff
# qemu-img info /var/lib/libvirt/images/centos7.0.qcow2  (查看虚拟机信息)
image: /var/lib/libvirt/images/centos7.0.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 11G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         centos7.sanp1             0 2020-03-03 16:13:44   00:00:00.000
2         centos7.snap2             0 2020-03-03 16:26:07   00:00:00.000
3         1583311966             364M 2020-03-04 16:52:46   00:39:42.734
Format specific information:
    compat: 1.1
    lazy refcounts: true
关闭虚拟机,恢复到第一个快照
# virsh shutdown vm8
# virsh snapshot-revert vm8 vm8.snap1
# virsh snapshot-delete test01 1560191837     #删除快照
五、kvm常用指令和文件夹
# virt-manage 调用图形管理界面 查看kvm支持的os版本: # man virt-install # osinfo-query os | grep centos # virsh -h #查看命令帮助 # ls /etc/libvirt/qemu #查看KVM的配置文件存放目录 networks test01.xml (test01.xml是虚拟机系统实例的配置文件) # virsh list --all #查看虚拟机状态 Id 名称 状态 ---------------------------------------------------- 2 test01 running # virsh shutdown test01 #关闭虚拟机 # virsh start test01 #开启虚拟机 # virsh destroy test01 #强制关机 # virsh create /etc/libvirt/qemu/test01.xml #通过配置文件启动虚拟机 # virsh suspend test01 #挂起虚拟机 # virsh resume test01 #从挂起状态恢复运行虚拟机 # virsh autostart test01 #设置虚拟机伴随宿主机自动启动 #虚拟机的删除与添加: [root@localhost ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml #导出虚拟机配置 #删除虚拟机: [root@localhost ~]# virsh shutdown test01 [root@localhost ~]# virsh undefine test01 [root@localhost ~]# virsh list --all #查看虚拟机是否被删除 Id 名称 状态 ---------------------------------------------------- #通过备份的配置文件重新定义虚拟机: [root@localhost ~]# cd /etc/libvirt/qemu/ [root@localhost qemu]# mv test02.xml test01.xml [root@localhost qemu]# virsh define test01.xml #修改虚拟机配置(内存大小等)信息: # vim /etc/libvirt/qemu/test01.xml # virt-df -h test01 #在宿主机上查看虚拟机磁盘信息 克隆虚拟机: # virt-clone -o test01 -n test02 -f /kvm/store/test02.qcow2 #将test01克隆为test02 [root@localhost qemu]# virsh list --all #查看现有虚拟机 Id 名称 状态 ---------------------------------------------------- - test01 关闭 - test02 关闭 转化格式 qemu-img convert -c -O qcow2 test.raw test.qcow2 改变镜像文件大小(raw和qcow2都可以支持resize) qemu-img resize test.raw +1GB
六、 使用iso制作qcow2镜像
https://www.cnblogs.com/elvi/p/8001298.htm  制作windos镜像
首选创建虚拟磁盘
#qemu-img create -f qcow2 CentOS-6.3-x86_64.qcow2 10G
其次从iso启动镜像
#virt-install --name centos-7.4 --ram 1024 --cdrom=CentOS-7.4-x86_64-bin-DVD1.iso --disk CentOS-7.4-x86_64.qcow2,format=qcow2 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel6 --check all=off
报错
开始安装...... ERROR Cannot access storage file '/root/CentOS-7.4-x86_64.qcow2' (as uid:107, gid:107): 权限不够 域安装失败,您可以运行下列命令重启您的域: 'virsh start virsh --connect qemu:///system start centos-7.4'
解决:
sed -i 's/#vnc_listen = "0.0.0.0"/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf sed -i 's/#group = "root"/group = "root"/g' /etc/libvirt/qemu.conf sed -i 's/#user = "root"/user = "root"/g' /etc/libvirt/qemu.conf service libvirtd restart
#virt-install --name Windows2008_x64 --ram 2048 --cdrom=win2008_x64fre_server_eval_zh-cn-GRMSXEVAL_CN_DVD.iso --disk Windows2008_x64.qcow2,format=qcow2 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=windows --os-variant=win2k8 --check all=off
查看vnc端口
 #virsh vncdisplay centos-6.3
使用vnc去连接安装系统
最后关闭系统后就可以使用QCOW2的镜像了
七、创建kvm虚拟机的三种方式
1 使用 virt-install 命令
virt-install \ --name=guest1-rhel5-64 \ --file=/var/lib/libvirt/images/guest1-rhel5-64.dsk \ --file-size=8 \ --nonsparse --graphics spice \ --vcpus=2 --ram=2048 \ --location=http://example1.com/installation_tree/RHEL5.6-Serverx86_64/os \ --network bridge=br0 \ --os-type=linux \ --os-variant=rhel5.4
2 使用 virt-manager 工具
不做介绍
3 使用 qemu-img 和 qemu-kvm 命令行方式安装
(1)创建一个空的qcow2格式的镜像文件
qemu-img create -f qcow2 windows-master.qcow2 10G
(2)启动一个虚机,将系统安装盘挂到 cdrom,安装操作系统
qemu-kvm -hda windows-master.qcow2 -m 512 -boot d -cdrom /home/user/isos/en_winxp_pro_with_sp2.iso
(3)现在你就拥有了一个带操作系统的镜像文件。你可以以它为模板创建新的镜像文件。使用模板的好处是,它会被设置为只读所以可以免于破坏。
qemu-img create -b windows-master.qcow2 -f qcow2 windows-clone.qcow2
(4)新的镜像文件上启动虚机了
https://www.sohu.com/a/312683006_120115703  问题解决方法
ln -s /usr/libexec/qemu-kvm /usr/sbin/ (可执行文件软连接)
qemu-kvm -hda windows-clone.qcow2 -m 400
1、使用dd创建虚拟机硬盘
dd if=/dev/zero of=centos.img bs=2k seek=4096k count=1
<domain type="kvm">
    <name>centos</name>  <!--虚拟机名称-->
    <memory unit="MiB">1024</memory>   <!--最大内存,单位k-->
    <currentMemory unit="MiB">1024</currentMemory>  <!--可用内存,单位k-->
    <vcpu>2</vcpu>   <!--//虚拟cpu个数-->
    <os>
        <type arch="x86_64" machine="pc">hvm</type>
        <boot dev="hd" /> <!-- 硬盘启动 -->
        <boot dev="cdrom" />     <!--//光盘启动-->
    </os>
    <features>
        <acpi />
        <apic />
        <pae />
    </features>
    <clock offset="localtime" />
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>destroy</on_crash>
    <devices>
        <emulator>/usr/libexec/qemu-kvm</emulator>
        <disk type="file" device="disk">
            <driver name="qemu" type="qcow2" />
            <source file="/var/lib/libvirt/images/test.qcow2" />        <!--目的镜像路径-->
            <target dev="hda" bus="ide" />
        </disk>
        <disk type="file" device="cdrom">
            <source file="/var/lib/libvirt/images/ubuntu.iso" />        <!--光盘镜像路径 -->
            <target dev="hdb" bus="ide" />
        </disk>
        <interface type="bridge">       <!--虚拟机网络连接方式-->
            <source bridge="br0" />      <!--当前主机网桥的名称-->
        </interface>
        <input type="mouse" bus="ps2" />
        <!--vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询-->
        <graphics type="vnc" port="-1" autoport="yes" listen="0.0.0.0" keymap="en-us" />
    </devices>
</domain>
3、创建虚拟机
virsh define centos.xml   ###将配置导入到虚拟机virsh start centos    #### 启动虚拟机
 

 
                
             
         浙公网安备 33010602011771号
浙公网安备 33010602011771号