2017三五互联做网站怎么样,wordpress创建单页,定制型网站一般价格,网络建设解决方案专业公司什么是虚拟化: 虚拟化#xff08;Virtualization#xff09;技术最早出现在 20 世纪 60 年代的 IBM 大型机系统#xff0c;在70年代的 System 370 系列中逐渐流行起来#xff0c;这些机器通过一种叫虚拟机监控器#xff08;Virtual Machine Monitor#xff0c;VMM#x…什么是虚拟化: 虚拟化Virtualization技术最早出现在 20 世纪 60 年代的 IBM 大型机系统在70年代的 System 370 系列中逐渐流行起来这些机器通过一种叫虚拟机监控器Virtual Machine MonitorVMM的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机Virtual Machine实例。随着近年多核系统、集群、网格甚至云计算的广泛部署虚拟化技术在商业应用上的优势日益体现不仅降低了 IT 成本而且还增强了系统安全性和可靠性。 常用的虚拟化产品有哪些 1.Kvmredhat企业级 2.Vmware: Vmware-workstation(windows和linux)桌面级 Vmware-fusion(mac) Vmware-esxi(企业级别)本身就是一个操作系统。 3.hyper-v(微软 4.Ovmoracle公司--Windows linux virtulbox 5.Xenrhel6之前所有版本默认用的虚拟化产品 虚拟化技术的分类: 平台虚拟化Platform Virtualization针对计算机和操作系统的虚拟化//针对计算机操作系统。 资源虚拟化Resource Virtualization针对特定的系统资源的虚拟化比如内存、存储、网络资源等。 应用程序虚拟化Application Virtualization包括仿真、模拟、解释技术等。把硬件的东西变成了一个应用 我们通常所说的虚拟化主要是指平台虚拟化技术通过使用控制程序Control Program也被称为 Virtual Machine Monitor(虚拟监控器VMM) 或Hypervisor隐藏特定计算平台的实际物理特性为用户提供抽象的、统一的、模拟的计算环境称为虚拟机。
平台虚拟化类型
操作系统虚拟化
常见的操作系统叫openvz他的特点是所有虚拟机共享你宿主机的内核。
全虚拟化Full Virtualization): 全虚拟化是指虚拟机模拟了完整的底层硬件包括处理器、物理内存、时钟、外设等使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。 现在的kvm与vmware都支持全虚拟化 全虚拟化的运行速度要快于硬件模拟但是性能方面不如裸机因为Hypervisor需要占用一些资源 半虚拟化Para Virtualization: 半虚拟化也叫超虚拟化是另一种类似于全虚拟化的技术它使用Hypervisor分享存取底层的硬件但是它的guest操作系统集成了虚拟化方面的代码。因为操作系统自身能够与虚拟进程进行很好的协作。 半虚拟化需要guest操作系统做一些修改使guest操作系统意识到自己是处于虚拟化环境的但是半虚拟化提供了与原操作系统相近的性能。 硬件辅助虚拟化
硬件辅助虚拟化是指借助硬件主要是主机处理器的支持来实现高效的全虚拟化。
企业级虚拟化与桌面级虚拟化的区别 桌面级虚拟化 App ---在安装APP通过App实现各种功能 guestos ---客户机也叫客户操作系统 vmware-workstationhypervisor虚拟机管理程序图形管理工具 os 硬件 企业级虚拟化 App图形管理工具 guestos oshypervisor在操作系统级别加上了虚拟机管理程序 硬件 KVM虚拟化技术简介
KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核2.6.20的一部分的 hypervisor它是由 Avi Kivity 开发和维护的现在归 Red Hat 所有。
KVM 是作为内核模块实现的
KVM安装
kvm虚拟化平台软件一般装在操作系统为Centos上面
大家不想把电脑装为Centos的操作系统可以用VMware workstations装一台配置较高的虚拟机cpu、内存、磁盘给的尽可能最大然后需要在开启之前做如下操作 然后打开虚拟机安装kvm即可
查看cpu是否支持虚拟化
# cat /proc/cpuinfo | grep -E vmx|svm 关闭防火墙和selinux --注如果虚拟机ping不通就把防火墙开起来一般企业如果使用kvm虚拟机平台都会把物理服务器装成Centos的操作系统然后装上kvm创建使用虚拟机1.需求内核(rhel6以上):
[rootkvm-server ~]# uname -r
3.10.0-1062.el7.x86_64
2.如果之前安装kvm了清理环境卸载kvm
[rootkvm-server ~]# yum remove rpm -qa | egrep qemu|virt|kvm -y
[rootkvm-server ~]# rm -rf /var/lib/libvirt /etc/libvirt/
3.升级系统(在安装虚拟机出错的情况下一般是操作系统的版本问题)
[rootkvm-server ~]# yum upgrade
4.安装软件
[rootkvm-server ~]# yum install -y librbd1-devel qemu-kvm libvirt virt-manager virt-installqemu-kvm 主包
libvirtapi接口
virt-manager图形化界面在所谓的kvm技术中应用到的其实有2个东西qemukvm
kvm负责cpu虚拟化内存虚拟化实现了cpu和内存的虚拟化但kvm不能模拟其他设备
qemu是模拟IO设备网卡磁盘kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西所以一般都称之为qemu-kvm。
libvirt则是调用kvm虚拟化技术的接口用于管理的用libvirt管理方便直接用qemu-kvm的接口太繁琐。5.启动服务:
centos7:
[rootkvm-server ~]# systemctl start libvirtd
6.查看kvm模块加载:
[rootkvm-server ~]# lsmod | grep kvm
kvm_intel 188644 0
kvm 621480 1 kvm_intel
irqbypass 13503 1 kvm
如果看到有这两行说明支持kvm模块
KVM gustos图形方式部署安装虚拟机---需要掌握
[rootkvm-server ~]# virt-manager下面就是点点点安装完成一台虚拟机之后网络模式默认是NAT的。
完全文本方式安装虚拟机
[rootkvm-server ~]# yum install -y vsftpd #安装ftp并配置最后将镜像上传到ftp中
[rootkvm-server ~]# systemctl start vsftpd
[rootkvm-server ~]# mkdir /var/ftp/centos7u4
[rootkvm-server IOS]# mount CentOS-7-x86_64-DVD-1708.iso /var/ftp/centos7u4/
[rootkvm-server ~]# virt-install --connect qemu:///system -n vm10 -r 2050 --disk path/var/lib/libvirt/images/vm10.img,size5 --os-typelinux --os-variantcentos7.0 --vcpus1 --locationftp://10.0.111.182/centos7u4 -x consolettyS0 --nographics用这种方式安装的操作系统有一个毛病纯文本安装的输入时大小写莫名的变换远程ssh没问题。kvm 限制内存不低于2G注意:
virt-install
bash: virt-install: 未找到命令...
# yum install libguestfs-tools -y
# yum install virt-install.noarch -y参数解释
-n name
-r 以M为单位指定分配给虚拟机的内存大小
--disk 指定作为客户机存储的媒介 size以G为单位的存储
--os-type 系统类型
--os-variant 系统类型版本
--vcpus 指定核数不能超过物理cpu
--location 客户虚拟机安装源下载必须为镜像挂载在ftp目录下
-x consolettyS0 执行终端0
--nographics 无图形文本模式
注意命令敲下去不要误操作退出安装
需要等一会了大约20分钟左右 按空格退出
下面的操作根据提示点点就可以了
模板镜像配置文件 方式安装虚拟机---需要掌握
1.虚拟机配置文件
[rootkvm-server ~]# ls /etc/libvirt/qemu
networks vm2.xml
2.储存虚拟机的介质
[rootkvm-server ~]# ls /var/lib/libvirt/images/
vm2.imgdefine方式创建好不会启动
create方式创建好会启动
实战
1.拷贝模板镜像和配置文件
[rootkvm-server ~]# cp /etc/libvirt/qemu/vm2.xml /etc/libvirt/qemu/vm3.xml
[rootkvm-server ~]# cp /var/lib/libvirt/images/vm2.img /var/lib/libvirt/images/vm3.img
2.修改配置文件
生成新的UUID
[rootkvm-server ~]# uuidgen
2e3fa6db-ff7f-41c3-bc8f-0428e81ebb57
[rootkvm-server ~]# vim /etc/libvirt/qemu/vm3.xml
domain typekvmnamevm3/name #名字不能一样需要修改uuid2e3fa6db-ff7f-41c3-bc8f-0428e81ebb57/uuid #uuid不能一样需要修改memory unitKiB1024000/memory #内存可选currentMemory unitKiB1024000/currentMemory #当前内存与上面定义一样vcpu placementstatic2/vcpu #cpu可选ostype archx86_64 machinepc-i440fx-rhel7.0.0hvm/typeboot devhd//osfeaturesacpi/apic//featurescpu modecustom matchexact checkpartialmodel fallbackallowSandyBridge-IBRS/modelfeature policyrequire namemd-clear/feature policyrequire namespec-ctrl/feature policyrequire namessbd//cpuclock offsetutctimer namertc tickpolicycatchup/timer namepit tickpolicydelay/timer namehpet presentno//clockon_poweroffdestroy/on_poweroffon_rebootrestart/on_rebooton_crashdestroy/on_crashpmsuspend-to-mem enabledno/suspend-to-disk enabledno//pmdevicesemulator/usr/libexec/qemu-kvm/emulatordisk typefile devicediskdriver nameqemu typeqcow2/source file/var/lib/libvirt/images/vm3.img/ #磁盘镜像需要修改target devvda busvirtio/address typepci domain0x0000 bus0x00 slot0x07 function0x0//diskcontroller typeusb index0 modelich9-ehci1address typepci domain0x0000 bus0x00 slot0x05 function0x7//controllercontroller typeusb index0 modelich9-uhci1master startport0/address typepci domain0x0000 bus0x00 slot0x05 function0x0 multifunctionon//controllercontroller typeusb index0 modelich9-uhci2master startport2/address typepci domain0x0000 bus0x00 slot0x05 function0x1//controllercontroller typeusb index0 modelich9-uhci3master startport4/address typepci domain0x0000 bus0x00 slot0x05 function0x2//controllercontroller typepci index0 modelpci-root/controller typevirtio-serial index0address typepci domain0x0000 bus0x00 slot0x06 function0x0//controllerinterface typenetworkmac address52:54:00:82:d6:3c/ #mac地址不能一样需要修改只能修改后三段。source networkdefault/model typevirtio/address typepci domain0x0000 bus0x00 slot0x03 function0x0//interfaceserial typeptytarget typeisa-serial port0model nameisa-serial//target/serialconsole typeptytarget typeserial port0//consolechannel typeunixtarget typevirtio nameorg.qemu.guest_agent.0/address typevirtio-serial controller0 bus0 port1//channelchannel typespicevmctarget typevirtio namecom.redhat.spice.0/address typevirtio-serial controller0 bus0 port2//channelinput typetablet bususbaddress typeusb bus0 port1//inputinput typemouse busps2/input typekeyboard busps2/graphics typespice autoportyeslisten typeaddress/image compressionoff//graphicssound modelich6address typepci domain0x0000 bus0x00 slot0x04 function0x0//soundvideomodel typeqxl ram65536 vram65536 vgamem16384 heads1 primaryyes/address typepci domain0x0000 bus0x00 slot0x02 function0x0//videoredirdev bususb typespicevmcaddress typeusb bus0 port2//redirdevredirdev bususb typespicevmcaddress typeusb bus0 port3//redirdevmemballoon modelvirtioaddress typepci domain0x0000 bus0x00 slot0x08 function0x0//memballoonrng modelvirtiobackend modelrandom/dev/urandom/backendaddress typepci domain0x0000 bus0x00 slot0x09 function0x0//rng/devices
/domain
必须修改nameuuid,mac地址其余可选用vim修改完之后需要define一下配置文件
[rootkvm-server ~]# virsh define /etc/libvirt/qemu/vm3.xml
重启一下
[rootkvm-server ~]# systemctl restart libvirtd
宿主机开启路由转发
[rootkvm-server ~]# vim /etc/sysctl.conf
[rootkvm-server ~]# sysctl -p
net.ipv4.ip_forward 1查看虚拟机列表
[rootkvm-server ~]# virsh list --allId 名称 状态
----------------------------------------------------- vm2 关闭- vm3 关闭
或者如下 KVM虚拟机管理
虚拟机的基本管理命令
查看
启动
关闭
重启
重置 [rootkvm-server ~]# virsh list #列出在运行状态中的虚拟机Id 名称 状态
----------------------------------------------------2 vm3 running
[rootkvm-server ~]# virsh list --all #列出所有虚拟机Id 名称 状态
----------------------------------------------------2 vm3 running- vm2 关闭
查看kvm虚拟机配置文件
语法virsh dumpxml name #虚拟机名字
[rootkvm-server ~]# virsh dumpxml vm3将vm3虚拟机的配置文件保存至vm4.xml
[rootkvm-server ~]# virsh dumpxml vm3 /etc/libvirt/qemu/vm4.xml启动
[rootkvm-server ~]# virsh start vm2
域 vm2 已开始暂停虚拟机挂起
[rootkvm-server ~]# virsh suspend vm_name
域 vm2 被挂起恢复虚拟机
[rootkvm-server ~]# virsh resume vm_name
域 vm2 被重新恢复关闭
方法1
[rootkvm-server ~]# virsh shutdown vm3
域 vm3 被关闭方法2
[rootkvm-server ~]# virsh destroy vm3重启
[rootkvm-server ~]# virsh reboot vm3
域 vm3 正在被重新启动强制重启:
[rootkvm-server ~]# virsh reset vm3 #断电重启。速度快
Domain vm3 was reset删除虚拟机:
[rootkvm-server ~]# virsh undefine vm2
Domain vm2 has been undefined注意:虚拟机在开启的情况下undefine是无法删除的只是删除定义将配置文件删除了不能删除磁盘文件。需要手动rm
虚拟机开机自动启动:
#如果虚拟机开机自启里面的服务应该设置的有开机自启不然没有意义
[rootkvm-server ~]# virsh autostart vm3
域 vm3标记为自动开始[rootkvm-server ~]# ls /etc/libvirt/qemu/autostart/ //此目录默认不存在在有开机启动的虚拟机时自动创建
vm3.xml关闭开机启动
[rootkvm-server ~]# virsh autostart --disable vm3
域 vm3取消标记为自动开始
[rootkvm-server ~]# ls /etc/libvirt/qemu/autostart/如何查看已启动的虚拟机ip地址
假如vm3虚拟机已启动
[rootkvm-server ~]# virsh domifaddr vm3名称 MAC 地址 Protocol Address
-------------------------------------------------------------------------------vnet0 52:54:00:82:d6:3c ipv4 192.168.122.85/24
虚拟机添加设备
1.图形方式: 首先关闭要添加硬件的虚拟机 双击虚拟机在打开的对话框点击上方的View点击Details点击Add Hardware可以选择要添加的虚拟硬件 按需求点点就可以了。
2.修改配置文件方式:
我们给虚拟机vm3添加磁盘为例
首先需要创建出要添加的磁盘
[rootkvm-server ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm4-1.qcow2 5G注创建空的磁盘文件这里我们创建一个5G的磁盘不过创建出来通过ll -h查看大小看不出它是5G添加上之后才能看到[rootkvm-server ~]# cd /etc/libvirt/qemu/
[rootkvm-server qemu]# vim vm3.xml 加好之后启动虚拟机
[rootkvm-server qemu]# virsh define /etc/libvirt/qemu/vm3.xml
[rootkvm-server qemu]# systemctl restart libvirtd
[rootkvm-server qemu]# virsh list --allId 名称 状态
----------------------------------------------------6 centos7.0 running- vm3 关闭
[rootkvm-server qemu]# virsh start vm3 可以看到我们新添加的磁盘vdb 然后可以正常分区制作文件系统进行挂载
创建磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/vm11-1.img 5G
添加磁盘
virsh attach-disk vm11 /var/lib/libvirt/images/vm11-1.img vdc --driver qemu --subdriver qcow2 --config查看磁盘信息
[rootkvm-sever libvirt]# virsh domblklist vm11
Target Source
------------------------------------------------
vda /var/lib/libvirt/images/vm11.img
vdb /var/lib/libvirt/images/vm11-1.img 提示不论使用哪种方式都需要先关闭虚拟机
虚拟机克隆
1.图形界面
Applications 左上角----- System Tools ------Virtual Machine Manager 关闭要克隆的虚拟机右键点击虚拟机选择Clone 2.字符终端命令克隆
[rootkvm-server ~]# virt-clone -o vm2 --auto-clone
正在分配 vm2-clone.qcow2 | 5.0 GB 00:00
成功克隆 vm2-clone。
-o origin-原始[rootkvm-server ~]# virt-clone -o vm2 -n vm5 --auto-clone
正在分配 vm5.qcow2 | 5.0 GB 00:00
成功克隆 vm5。
-n :指定新客户机的名字[rootkvm-server ~]# virt-clone -o vm2 -n vm6 -f /var/lib/libvirt/images/vm6.img
正在分配 vm6.img | 5.0 GB 00:00
成功克隆 vm6。
-f --file NEW_DISKFILE为新客户机使用新的磁盘镜像文件这条命令在克隆的同时可以指定镜像文件的位置和名称。[rootkvm-server ~]# virsh list --allId 名称 状态
----------------------------------------------------- vm2 关闭- vm2-clone 关闭- vm3 关闭- vm5 关闭- vm6 关闭kvm高级命令
建立虚拟机磁盘镜像文件
磁盘镜像文件格式:
qed ----不用了raw 原始格式性能最好 直接占用你一开始给多少 系统就占多少 不支持快照qcow 先去网上了解一下cow(写时拷贝copy on write) 性能远不能和raw相比所以很快夭折了所以出现了qcow2性能低下 早就被抛弃qcow2 性能上还是不如raw但是raw不支持快照qcow2支持快照。现在默认安装好的用的是raw格式做快照要把他转换成qcow2格式什么叫写时拷贝
raw立刻分配空间不管你有没有用到那么多空间
qcow2只是承诺给你分配空间但是只有当你需要用空间的时候才会给你空间。最多只给你承诺空间的大小避免空间浪费工作当中用哪个看你用不用快照。本身做快照也是需要存储空间的。
当然也不一定。数据绝对不会存储到本地。[rootkvm-server images]# pwd
/var/lib/libvirt/images建立qcow2格式磁盘文件:
[rootkvm-server images]# qemu-img create -f qcow2 test.img 5G
Formatting test.img, fmtqcow2 size5368709120 encryptionoff cluster_size65536 lazy_refcountsoff qemu-kvm qemu是早先的一个模拟器kvm是基于qemu发展出来的。建立raw格式磁盘文件:
[rootkvm-server images]# qemu-img create -f raw test.raw 5G
Formatting test.raw, fmtraw size5368709120 查看已经创建的虚拟磁盘文件:
[rootkvm-server images]# qemu-img info test.img
[rootkvm-server images]# qemu-img info test.raw
挂载磁盘将vm2虚拟机先关闭
查看vm2的磁盘镜像分区信息:
[rootkvm-server images]# virt-df -h -d vm2
文件系统 大小 已用空间 可用空间 使用百分比%
vm2:/dev/sda1 1014M 92M 922M 10%
vm2:/dev/centos/root 3.5G 863M 2.6G 25%1.创建一个挂载目录
[rootkvm-server images]# mkdir /test
2.挂载虚拟机的跟分区到test目录
[rootkvm-server images]# guestmount -d vm2 -m /dev/centos/root --rw /test/
[rootkvm-server images]# cd /test/
[rootkvm-server test]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[rootkvm-server test]# cat etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin取消挂载
[rootkvm-server ~]# guestunmount /test
KVM网络配置
两种网络 nat与isolate NAT default方式支持主机与虚拟机互访虚拟机访问外界网络但不支持外界访问虚拟机。 isolate 隔离host-host-only仅主机模式。外网不能访问虚拟机虚拟机也不能访问外网 一种接口 --- bridge桥接
nat网络
桥接网络
隔离网络
可以通过查看mac地址是否一致来确定是不是一根线上的两个接口
[rootkvm-server ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400831963 yes virbr0-nicvnet0vnet1注意这里vnet网卡是每台启动的虚拟机正在使用的网卡设备每台虚拟机使用的不同
从交换机上把vnet网卡删除
[rootkvm-server ~]# brctl delif virbr0 vnet0来到vm2的虚拟机ping不通百度 添加vnet网卡添加到交换机上
[rootkvm-server ~]# brctl addif virbr0 vnet0来到vm2的虚拟机恢复正常 配置文件方式配置桥接在宿主机上
先将kvm虚拟机关闭
配置文件方式配置桥接在宿主机上
[rootkvm-server ~]# ip a #先找出宿主机用的哪个网卡设备我的是enp0s25
[rootkvm-server ~]# cd /etc/sysconfig/network-scripts/
1.定义网卡配置文件
[rootkvm-server network-scripts]# vim ifcfg-br0 #没有此文件新建
[rootkvm-server network-scripts]# cat ifcfg-br0
TYPEBridge
NAMEbr0
DEVICEbr0
ONBOOTyes
BOOTPROTOstatic
IPADDR10.0.111.182 #宿主的ip
GATEWAY10.0.111.1 #宿主的网关
NETMASK255.255.255.0
DNS1114.144.144.144
DNS28.8.8.8然后看清楚宿主机正在使用的网卡修改配置文件
[rootkvm-server network-scripts]# cp ifcfg-enp0s25 ifcfg-enp0s25.back
[rootkvm-server network-scripts]# vim ifcfg-enp0s25
NAMEenp0s25 #定义网卡设备名称
DEVICEenp0s25 #宿主机正在使用的网卡设备
ONBOOTyes
BRIDGEbr0 #和ifcfg-br0文件里面的设备对应新添加2.重启libvirtd服务
[rootkvm-server network-scripts]# systemctl restart libvirtd
3.重启network服务
[rootkvm-server network-scripts]# systemctl restart network
# 虚拟机使用桥接 文本模式
vim 编辑虚拟机配置文件interface typebridgemac address52:54:00:2e:c1:7a/source bridgebr0/model typevirtio/address typepci domain0x0000 bus0x00 slot0x03 function0x0//interface
然后去查看有没有新设备生成 可以看到我们先添加的网卡设备
移除操作 删除桥接网卡步骤
1.删除br0的配置文件
2.修改正常网卡的配置文件
3.重启系统[rootkvm-server network-scripts]# mv ifcfg-br0 ifcfg-br0.bak
[rootkvm-server network-scripts]# mv ifcfg-enp0s25 ifcfg-enp0s25.bak
[rootkvm-server network-scripts]# mv ifcfg-enp0s25.back ifcfg-enp0s25
[rootkvm-server network-scripts]# systemctl restart libvirtd
[rootkvm-server network-scripts]# systemctl restart network
[rootkvm-server network-scripts]# ping www.baidu.com
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq1 ttl52 time13.3 ms
配置文件方式创建nat网络
配置文件方式创建nat网络
[rootkvm-server ~]# cd /etc/libvirt/qemu/networks
[rootkvm-server networks]# ls
autostar default.xml
[rootkvm-server networks]# cp default.xml nat1.xml
[rootkvm-server networks]# vim nat1.xml 重启服务
[rootkvm-server netwoeks]# systemctl restart libvirtd
在某个比如vm3虚拟机去添加此设备测试 配置文件方式创建isolated网络(host-only)host-only模式我从来没用过我们不再操作有兴趣可以操作一下
[rootkvm-server networks]# cp default.xml isolated200.xml
[rootkvm-server networks]# vim isolated200.xml 启动
[rootkvm-server networks]# systemctl restart libvirtd
开机自启动:
[rootkvm-server networks]# virsh net-autostart isolated200 查看所有的网络
[rootkvm-server networks]# virsh net-list
KVM存储配置
存储池
概念kvm必须要配置一个目录当作他存储磁盘镜像(存储卷)的目录我们称这个目录为存储池kvm默认存储池的位置/var/lib/libvirt/images/ 1.创建基于文件夹的存储池目录可自定义
[rootkvm-server ~]# mkdir -p /data/vmfs2.定义存储池与其目录
[rootkvm-server ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs
Pool vmdisk defined
解释vmdisk是新建的存储池的名称。可自定义3.创建已定义的存储池
(1)创建已定义的存储池
[rootkvm-server ~]# virsh pool-build vmdisk
Pool vmdisk built(2)查看已定义的存储池存储池不激活无法使用。
[rootkvm-server ~]# virsh pool-list --all
Name State Autostart
-------------------------------------------default active yes ISO active yes vmdisk inactive no 4.激活并自动启动已定义的存储池
[rootkvm-server ~]# virsh pool-start vmdisk
Pool vmdisk started
[rootkvm-server ~]# virsh pool-autostart vmdisk
Pool vmdisk marked as autostarted[rootkvm-server ~]# virsh pool-list --allName State Autostart
-------------------------------------------default active yes ISO active yes vmdisk active yes
这里vmdisk存储池就已经创建好了可以直接在这个存储池中创建虚拟磁盘文件了。5.在存储池中创建虚拟机存储卷
[rootkvm-server ~]# virsh vol-create-as vmdisk vm99.qcow2 2G --format qcow2
Vol vm99.qcow2 created[rootkvm-server ~]# ll /data/vmfs/ -h
总用量 196K
-rw------- 1 root root 193K 10月 25 16:04 vm99.qcow2注1:KVM存储池主要是体现一种管理方式可以通过挂载存储目录lvm逻辑卷的方式创建存储池虚拟机存储卷创建完成后剩下的操作与无存储卷的方式无任何区别了。
注2:KVM存储池也要用于虚拟机迁移任务。6.存储池相关管理命令
(1)在存储池中删除虚拟机存储卷
[rootkvm-server ~]# virsh vol-delete --pool vmdisk vm99.qcow2
Vol vm99.qcow2 deleted(2)取消激活存储池
[rootkvm-server ~]# virsh pool-destroy vmdisk
Pool vmdisk destroyed(3)删除存储池定义的目录/data/vmfs
[rootkvm-server ~]# virsh pool-delete vmdisk
Pool vmdisk deleted(4)取消定义存储池
[rootkvm-server ~]# virsh pool-undefine vmdisk
Pool vmdisk has been undefined到此kvm存储池配置与管理操作完毕。
kvm快照 为虚拟机vm2创建一个快照磁盘格式必须为qcow2 [rootkvm-server ~]# virsh snapshot-create-as vm2 vm2.snap1 注意如果在创建快照的时候报错 error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw raw 使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区)。由于原生的裸格式不支持snapshot也是很正常的。 qcow2 现在比较主流的一种虚拟化镜像格式经过一代的优化目前qcow2的性能上接近raw裸格式的性能这个也算是redhat的官方渠道了 对于qcow2的格式几点还是比较突出的 •更小的存储空间 •支持多个snapshot对历史snapshot进行管理 查看磁盘文件格式
[rootkvm-server images]# qemu-img info /var/lib/libvirt/images/vm2.qcow2
image: /var/lib/libvirt/images/vm2.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 5.0G
cluster_size: 65536
Format specific information:compat: 1.1lazy refcounts: true[rootkvm-server ~]# virsh snapshot-list vm2 #查看某台虚拟机设备的快照Name Creation Time State
------------------------------------------------------------创建一块磁盘
[rootkvm-server ~]# qemu-img create -f raw /var/lib/libvirt/images/vm2-1.raw 2G
Formatting /var/lib/libvirt/images/vm2-1.raw, fmtraw size2147483648 [rootkvm-server ~]# ll -h /var/lib/libvirt/images/vm2-1.raw
-rw-r--r-- 1 root root 2.0G 10月 25 16:25 /var/lib/libvirt/images/vm2-1.raw将其添加到vm2虚拟机上面
[rootkvm-server ~]# cd /etc/libvirt/qemu/
[rootkvm-server qemu]# vim vm2.xml [rootkvm-server images]# virsh define /etc/libvirt/qemu/vm2.xml
[rootkvm-server images]# virsh start vm2 [rootkvm-server qemu]# virsh snapshot-create-as vm2 vm2.snap1
错误不支持的配置存储类型 vdb 不支持磁盘 raw 的内部快照磁盘格式的转换
由于raw的磁盘格式不支持快照功能我们需要将其转换为qcow2的格式
[rootkvm-server qemu]# qemu-img convert -O qcow2 /var/lib/libvirt/images/vm2-1.raw /var/lib/libvirt/images/vm2-1.qcow2[rootkvm-server qemu]# cd /var/lib/libvirt/images/
[rootkvm-server images]# ll -h
总用量 21G
-rw------- 1 root root 5.1G 10月 24 18:59 centos7.0.qcow2
-rw-r--r-- 1 root root 193K 10月 25 16:44 vm2-1.qcow2
-rw-r--r-- 1 root root 2.0G 10月 25 16:25 vm2-1.raw
-rw------- 1 root root 5.1G 10月 25 16:13 vm2.qcow2[rootkvm-server images]# qemu-img info /var/lib/libvirt/images/vm2-1.qcow2
image: /var/lib/libvirt/images/vm2-1.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:compat: 1.1lazy refcounts: false然后去修改vm2虚拟机的磁盘格式和名称
[rootkvm-server images]# vim /etc/libvirt/qemu/vm2.xml [rootkvm-server images]# virsh define /etc/libvirt/qemu/vm2.xml创建快照
[rootkvm-server qemu]# virsh snapshot-create-as vm2 vm2.snap2
已生成域快照 vm2.snap2 然后我们开始做快照图形化方式不再介绍
登录vm2的虚拟机
[rootvm2 ~]# mkdir /opt/test
[rootkvm-server ~]# virsh snapshot-create-as vm2 vm2-snap3
已生成域快照 vm2-snap3再次登录vm2的虚拟
[rootvm2 ~]# rm -rf /opt/test/
[rootkvm-server ~]# virsh shutdown vm2
[rootkvm-server ~]# virsh snapshot-create-as vm2 vm2-snap4
已生成域快照 vm2-snap4查看快照
[rootkvm-server ~]# virsh snapshot-list vm2 名称 生成时间 状态
------------------------------------------------------------vm2-snap3 2019-10-30 15:27:15 0800 runningvm2-snap4 2019-10-30 15:29:37 0800 shutoff然后将vm2关闭恢复到快照vm2.snap3
[rootkvm-server ~]# virsh snapshot-revert vm2 vm2-snap3
[rootkvm-server ~]# virsh start vm2
Domain vm2 started在vm2虚拟机上查看
[rootvm2 ~]# ls /opt/
test
可以再恢复到vm2.snap4测试一下删除虚拟机快照操作
[rootkvm-server ~]# virsh shutdown vm2
[rootkvm-server ~]# virsh snapshot-list vm2名称 生成时间 状态
------------------------------------------------------------vm2-snap3 2019-10-30 15:27:15 0800 runningvm2-snap4 2019-10-30 15:29:37 0800 shutoff[rootkvm-server ~]# virsh snapshot-delete --snapshotname vm2-snap3 vm2
已删除域快照 vm2-snap3[rootkvm-server ~]# virsh snapshot-list vm2名称 生成时间 状态
------------------------------------------------------------vm2-snap4 2019-10-30 15:27:15 0800 running
kvm迁移了解
最简单的方法 拷贝配置文件磁盘
热迁移192.168.1.1/24 192.168.1.2/24 KVM-A KVM-B images images/var/lib/libvirt/images /var/lib/libvirt/images
自动化脚本管理kvm
#!/bin/bash
#kvm batch create vm tool
#version:0.1
#author:name
#需要事先准备模板镜像和配置文件模板
echo 1.创建自定义配置单个虚拟机
2.批量创建自定义配置虚拟机
3.批量创建默认配置虚拟机
4.删除虚拟机read -p 选取你的操作(1/2/3): opbatch_self_define() {kvmnameopenssl rand -hex 5sourceimage/var/lib/libvirt/images/vmmodel.imgsourcexml/etc/libvirt/qemu/vmmodel.xmlnewimg/var/lib/libvirt/images/${kvmname}.imgnewxml/etc/libvirt/qemu/${kvmname}.xmlcp $sourceimage $newimgcp $sourcexml $newxmlkvmuuiduuidgenkvmmem${1}000000kvmcpu$2kvmimg$newimgkvmmacopenssl rand -hex 3 | sed -r s/..\B/:/gsed -i skvmname$kvmname;skvmuuid$kvmuuid;skvmmem$kvmmem;skvmcpu$kvmcpu;skvmimg$kvmimg;skvmmac$kvmmac $newxmlvirsh define $newxmlvirsh list --all
}
self_define() {read -p 请输入新虚机名称: newnameread -p 请输入新虚机内存大小(G): newmemread -p 请输入新虚机cpu个数: newcpusourceimage/var/lib/libvirt/images/vmmodel.imgsourcexml/etc/libvirt/qemu/vmmodel.xmlnewimg/var/lib/libvirt/images/${newname}.imgnewxml/etc/libvirt/qemu/${newname}.xmlcp $sourceimage $newimgcp $sourcexml $newxmlkvmname$newnamekvmuuiduuidgenkvmmem${newmem}000000kvmcpu$newcpukvmimg$newimgkvmmacopenssl rand -hex 3 | sed -r s/..\B/:/gsed -i skvmname$kvmname;skvmuuid$kvmuuid;skvmmem$kvmmem;skvmcpu$kvmcpu;skvmimg$kvmimg;skvmmac$kvmmac $newxmlvirsh define $newxmlvirsh list --all
}case $op in
1)self_define;;
2)read -p 请输入要创建的虚拟机的个数: numread -p 请输入新虚机内存大小(G): newmemread -p 请输入新虚机cpu个数: newcpufor((i1;i$num;i))dobatch_self_define $newmem $newcpudone;;3)read -p 请输入要创建的虚拟机的个数: numfor((i1;i$num;i))dobatch_self_define 1 1done;;*)echo 输入错误请重新执行脚本exit;;
esac
配置文件模板
# vim /etc/libvirt/qemu/vmmodel.xml
domain typekvmnamekvmname/nameuuidkvmuuid/uuidmemory unitKiBkvmmem/memorycurrentMemory unitKiBkvmmem/currentMemoryvcpu placementstatickvmcpu/vcpuostype archx86_64 machinepc-i440fx-rhel7.0.0hvm/typeboot devhd//osfeaturesacpi/apic//featurescpu modecustom matchexact checkpartialmodel fallbackallowHaswell-noTSX/model/cpuclock offsetutctimer namertc tickpolicycatchup/timer namepit tickpolicydelay/timer namehpet presentno//clockon_poweroffdestroy/on_poweroffon_rebootrestart/on_rebooton_crashdestroy/on_crashpmsuspend-to-mem enabledno/suspend-to-disk enabledno//pmdevicesemulator/usr/libexec/qemu-kvm/emulatordisk typefile devicediskdriver nameqemu typeqcow2/source filekvmimg/target devvda busvirtio/address typepci domain0x0000 bus0x00 slot0x06 function0x0//diskcontroller typeusb index0 modelich9-ehci1address typepci domain0x0000 bus0x00 slot0x04 function0x7//controllercontroller typeusb index0 modelich9-uhci1master startport0/address typepci domain0x0000 bus0x00 slot0x04 function0x0 multifunctionon//controllercontroller typeusb index0 modelich9-uhci2master startport2/address typepci domain0x0000 bus0x00 slot0x04 function0x1//controllercontroller typeusb index0 modelich9-uhci3master startport4/address typepci domain0x0000 bus0x00 slot0x04 function0x2//controllercontroller typepci index0 modelpci-root/controller typevirtio-serial index0address typepci domain0x0000 bus0x00 slot0x05 function0x0//controllerinterface typenetworkmac address52:54:00:kvmmac/source networkdefault/model typevirtio/address typepci domain0x0000 bus0x00 slot0x03 function0x0//interfaceserial typeptytarget typeisa-serial port0model nameisa-serial//target/serialconsole typeptytarget typeserial port0//consolechannel typeunixtarget typevirtio nameorg.qemu.guest_agent.0/address typevirtio-serial controller0 bus0 port1//channelinput typemouse busps2/input typekeyboard busps2/memballoon modelvirtioaddress typepci domain0x0000 bus0x00 slot0x07 function0x0//memballoon/devices
/domain
随机生成mac地址
其中方式如下
# echo openssl rand -hex 1:openssl rand -hex 1:openssl rand -hex 1
99:6e:67# openssl rand -hex 3 | sed -r s/(..)(..)(..)/\1:\2:\3/g
94:89:e3# openssl rand -hex 3 | sed -r s/..\B/:/g
c5:66:90
Centos设置输入法 虚拟机开启虚拟化无法启动
Win10系统下提示VMware与Device/Credential Guard不兼容如何解决win7之家
kvm 无法安装虚拟机解决
1、查看安装的kvm主包 2、出现异常解决办法 方法1、 将问题包[带有ev的包卸载掉]然后重新安装但是这里存在一个问题可能在重装的时候还是会将ev的包进行安装这时候我们选择第二种方法 方法2、 使用文档上面的卸载语句将kvm全部卸载 [rootkvm-server ~]# yum remove rpm -qa | egrep qemu|virt|kvm -y [rootkvm-server ~]# rm -rf /var/lib/libvirt /etc/libvirt/ 然后重新安装kvm并检查是否带有ev字样。