Kvm 虚拟化
Kvm 介绍
1、什么是虚拟化
简单理解: 是指通过虚拟化的一种技术将一台实体计算机虚拟为多台逻辑计算机,在一台计算机上面同时运行多个逻辑计算机。每个逻辑计算机可以运行不同的操作系统。 提高计算机的工作效率。把所有的资源进行整合,提高资源的利用率,按需分配。
2、为什么要使用虚拟化?
提高计算机资源的利用率和程序运行环境的安全隔离 还可以有效的防止资源的浪费。
优势:
1. 降低运营成本
2. 提高应用兼容性
3. 加速应用部署
4. 提高服务可用性
5. 提升资源的利用率
6. 动态资源分配
7. 降低能源消耗
3、虚拟化的应用场景
1. 多版本操作系统共存
2. 机房迁移, 虚拟化只需要迁移虚拟主机就可以
3. 相同业务部署 克隆
4. 软件发布测试,体验
4、虚拟化的软件介绍
Xen
软件是纯模拟,全部都是虚拟化! 特别慢!
QEMU
性能特别的好,需要用的特殊的内核 经过专门修改之后的内核
VMware ESCI
商业软件 部署特别快 贵 好用
VirtualBox
开源的虚拟机软件
Kvm 虚拟化管理平台 使用范围很广
基于内核的虚拟机 开源软件
管理平台 qemu-kvm
Kvm 安装部署虚拟机
前期准备
准备一台服务器,如果是虚拟机,要求如下图
安装部署虚拟机
#安装 Kvm
[root@kvm01 ~]# yum -y install libvirt virt-install qemu-kvm
#启动
[root@kvm01 ~]# systemctl start libvirtd.service
[root@kvm01 ~]# systemctl enable libvirtd.service
#查看新增的 100G 硬盘
[root@kvm01 ~]# lsblk
sdb 8:16 0 100G 0 disk
#硬盘分区
[root@kvm01 ~]# fdisk /dev/sdb
#查看分区
[root@kvm01 ~]# fdisk -l /dev/sdb
#格式化分区
[root@kvm01 ~]# mkfs.xfs /dev/sdb1
#挂载分区
[root@kvm01 ~]# mount /dev/sdb1 /opt
#在新分区目录中上传系统文件
[root@kvm01 opt]# ll -h
total 4.3G
-rw-r--r-- 1 root root 4.3G Apr 3 15:04 CentOS-7-x86_64-DVD-1810.iso
# virt 命令解释
--virt-type #要使用的管理程序名称 (kvm, qemu, xen, ...)
--os-type #系统类型 linux unix windows
--os-variant #客户机上安装的操作系统,如:'fedora18'、'rhel7'、'winxp' 等。
-n/--name #客户机实例名称
--memory #配置客户机虚拟内存大小
--vcpus #配置客户机虚拟 CPU数量。
--disk #指定存储的各种选项。 raw #不支持做快照,性能好。qcow2 #支持快照。
-cdrom #镜像位置
-w/--network #配置客户机网络接口。
--graphics #配置客户机显示设置。
--noautoconsole #不要自动尝试连接到客户端控制台
--autostart #主机启动时自动启动域。
--noreboot #安装完成后不重新启动客户机。
# 安装 Centos6 虚拟机
# 注意:安装 Centos6 的时候必须分配 swap 分区,否则会有不能启动的可能
# 注意:如果不能联网就查看网卡配置文件,设置开启启动网卡 ONBOOT=yes
virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name=centos6_web02 --memory 1024 --vcpus 1 --disk /opt/centos6_web02.raw,format=raw,size=10 --cdrom=/opt/CentOS-6.10-x86_64-bin-DVD1.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
# 安装 Centos7 虚拟系统【先在桌面下载好 VNC Viewer 软件】
[root@kvm01 /opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name=centos7_web01 --memory 1024 --vcpus 1 --disk /opt/centos7_web01.raw,format=raw,size=10 --cdrom=/opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
#执行上面的命令后,需要在1分钟内执行 【VNC Viewer 软件】
#查看程序端口
[root@kvm01 /opt]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 11071/qemu-kvm
等待进入安装系统界面,开始安装系统的时候注意,网卡不要设置IP,只要开机启动网卡即可,这里只给了10G硬盘,所以各个目录分配空间如下图
虚拟机【配置文件介绍】
:exit #退出编辑虚拟机配置文件
systemctl restart libvirtd #修改虚拟机配置文件后需要重启服务生效
virsh edit centos7_web01 #关机后修改虚拟机配置
Press ENTER or type command to continue #按回车键或键入命令继续
<domain type='kvm'> #域类型,也可以是xen
<name>centos7_web01</name> #虚拟机实例名称
<uuid>8f9de31a-995e-47c0-a7b8-6f635d300d7d</uuid> #UUID
<memory unit='KiB'>1048576</memory> #内存总大小
<currentMemory unit='KiB'>1048576</currentMemory> #内存实际使用大小
<vcpu placement='static'>1</vcpu> #CPU核心数量
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> #表示全虚拟化
<boot dev='hd'/> #hd表示从硬盘启动,cdrom表示从光盘启动
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Broadwell</model>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/opt/centos7_web01.raw'/> #虚拟机磁盘文件路径
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<interface type='network'> #网络接口类型,network net模式-共享主机IP【bridge 网桥-直连外部网,? 仅主机-只和主机连接】
<mac address='52:54:00:b5:a6:d2'/> #网卡Mac地址
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>