虚拟化简介
什么是虚拟化?
创建软件或虚拟表示的应用、服务器、存储和网络,减少 IT 开销 ,同时提高效率
虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘 空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个计算机配置环境,并重新分 割、重新组合,以达到最大化合理利用物理资源的目的。
虚拟化可以提高 IT 敏捷性、灵活性和可扩展性,同时大幅节约成本,实现更高的工作负载移动性、自动化运维 - 这些都是虚拟化的优势
在公司使用私有云的话如何上线以及物理机选择
服务器建议配置
CPU : 2x 24核心 核心 主频
内存 : 128G / 192G / 256G / 512G / 1T / 1.5T
硬盘 : 最好固态 4块做read / 机械盘2.5 / SAS 7.2K 10K
网卡 : 万兆
云计算分类
公有云:比如阿里云、AWS、腾讯云等等 ,只要付费就可以使用,不需要关心底层技术,但是数据安全需要考虑
私有云: 在公司内或者IDC 搭建Openstack、vavare等环境
混合云: 既有公有云 又有私有云,及双方的云都有交接成为混合云
虚拟化技术之KVM
KVM是硬件虚拟化技术,主要负责CPU 和内存虚拟化 ,而Qemu负责 I/O 虚拟化,两个各自发挥优势
详情点击 KVM虚拟化技术
阿里云的服务器都是使用的kvm , 如果想支持虚拟化服务器必须有以下两个选项
lscpu |egrep -i (avx2| vmx)
1 2 3 4 5 6 7
| 全虚拟化软件 Vmvare workstation Vmvare esxi paralles desktop KVM Microsoft Hyper-V VirtualBox
|
直接运行到物理机 :
1 2
| vmvare esxi rhev hypervisor
|
需要运行到操作系统 :
1 2 3 4 5
| KVM , XEN vmvare workstation paralles desktop Microsoft Hyper-V virtualBox
|
常见的 hypervisor 类型
1 2 3 4 5 6 7 8 9
| $ 面试常问用你们用的什么虚拟化 1、KVM是那种类型的虚拟化 答:裸机型的虚拟化 2、虚拟化有那几类? 分别是裸机型 和 主机脱管型
- 类型I-裸机型:直接运行在硬件设备上的,这种架构搭建的虚拟化环境称为裸机虚拟化环境(Bare-Metal Hardware Virtualization),比如:VMware ESXI、KVM - 类型II-主机托管型,运行在具有虚拟化功能的操作系统上的,构建的是主机虚拟化环境(Hosted Virtualization),比如:VMware Workstation、VirtualBox
|
KVM 简介
KVM是 Virtual Machine的简称,是一个开源的虚拟化模块,在Linux 2.6.20以后已成为主流,也是hypervisor之一
红帽虚拟化入门指南 [Redhat Virtual Machine](https://access.redhat.com/documentation/zh- cn/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index)
kvm能够在无停机的情况下对业务进行迁移 ,使用共享存储的话迁移速度会更加快捷
kvm可以直接调用宿主机的kvm模块,从而进行访问
KVM 提供资源分配
CPU 内存 磁盘 网卡
1 2 3 4 5
| - Guset:客户机系统,包括(CPU,Memory,Dirve,网卡等),被KVM设置成一种受限制的CPU模式下运行
- KVM:运行在内核空间,提供CPU和内存的虚拟化,以及客户机的I/O拦截,Guest部分I/O被KVM拦截以后交给QEMU处理。
- Qemu: 全虚拟化的模拟器,模拟硬件。像键盘鼠标等等
|
KVM 安装
首先在虚拟机的设置里面一定要开启虚拟化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 查看是否开启虚拟化,不是0就可以 $ grep -E "vmx|svm" /proc/cpuinfo |wc -l
Ubuntu 1804 安装 $ apt install qemu-kvm virt-manager libvirt-daemon-system -y 验证是否支持kvm $ kvm-ok
CentOS 7.X 安装: $ yum -y install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install $ systemctl start libvirtd && systemctl enable libvirtd
$ systemctl start libvirtd && systemctl enable libvirtd $ virt-manager
启动以后会生成一个 virbro网卡,他使用的是Nat模式通过宿主机转换 $ ifconfig |grep virbr0
使用brctl查看会生成一个交换机 $ brctl show bridge name bridge id STP enabled interfaces virbr0 8000.52540043650c yes virbr0-nic
查看宿主机IP地址段儿出口,查看是软连接,默认是 192.168.122.1,也可以自定义,需要重启libvirtd $ ll /etc/libvirt/qemu/networks/autostart/default.xml
|
创建NAT网络虚拟机
首先需要创建磁盘 qemu-img
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| CPU 和 内存可以直接分配 但是磁盘需要手动创建
1、使用命令创建一个10G的磁盘,目前有qcow2 和 raw 两种方式 ('主流是qcow2,因为假如你分配100G只会占用最小磁盘空间,随着数据的写入才会慢慢增加' ) qcow2-精简磁盘 raw-立即占用磁盘 - 默认磁盘路径 $ ll /var/lib/libvirt/images/
$ qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-m44.qcow2 10G $ ll -h /var/lib/libvirt/images/ubuntu-m44.qcow2 -rw-r--r-- 1 root root 193K Jun 15 14:43 /var/lib/libvirt/images/ubuntu-m44.qcow2
$ qemu-img create -f raw /var/lib/libvirt/images/ubuntu-m44.raw 10G $ ll -h /var/lib/libvirt/images/ubuntu-m44.raw -rw-r--r-- 1 root root 10G Jun 15 14:40 /var/lib/libvirt/images/ubuntu-m44.raw
|
virt-install 安装虚拟机
选项参数,如果CPU或者内存全部分完还继续分配可能会造成删除进程占用内存最好的进程(内存和磁盘最多1.5倍是上限)
1 2 3 4 5 6 7 8 9 10 11 12 13
| virt-install --memory 1024 --vcpus 4 --cpu host-passthrough --cdrom --disk --network --graphics
--virt-type --arch --autostart --noautoconsole
|
上传镜像安装虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 1、先创建目录,然后把镜像上传进来 $ mkdir /data/ISOs -p $ ll /data/ISOs/CentOS-7-x86_64-Minimal-2003.iso -rw-r--r-- 1 root root 1085276160 Jun 16 14:37 /data/ISOs/CentOS-7-x86_64-Minimal-2003.iso
2、 创建raw 磁盘 $ qemu-img create -f raw /var/lib/libvirt/images/ubuntu-m44.raw 10G
3、 创建默认网桥虚拟机 $ virt-install --virt-type kvm --name m44-vm1 --ram 1024 --vcpus 2 --cdrom=/data/ISOs/CentOS-7-x86_64-Minimal-2003.iso --disk path=/var/lib/libvirt/images/centos-m44.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
$ ps -ef|grep m44-vm1
4、使用virt-manager 初始化安装 `或者使用vnc连接安装,默认端口是5900` grep -R 5900 /etc/libvirt/qemu.conf
- 、 选择时区 (DATE & TIME ) `选择上海 - 、 语言(LANGUAGE_SUPPORT)一定把中文安装 `LANGUAGE SUPPORT` - 、 分区 (installation_destination) 点击 `I will configer partitioning` boot 512M 剩下的都给 / 然后点击reboot,第一次会起不来需要重新点击开机按钮
但是公司内部很少使用,因为其他服务器是无法ping通的,除非在路由器上添加路由
|
创建bridge网络虚拟机
网桥可以运行在宿主机上使宿主机的同网段IP,并且可以从外部直接访问到虚拟机,目前企业大部分都是使用桥接网络
1 2 3 4 5 6 7 8 9 10 11
| 1、创建br0桥接网卡:
2、创建磁盘 $ qemu-img create -f raw /var/lib/libvirt/images/centos-m44.raw 10G 3、创建桥接虚拟机 $ virt-install --virt-type kvm --name m44-vm1 --ram 1024 --vcpus 2 --cdrom=/data/ISOs/CentOS-7-x86_64-Minimal-2003.iso --disk path=/var/lib/libvirt/images/centos-vm2-m44.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
4、 图形化安装 这里不在叙述 5、从外部连接ssh虚拟机
|
快速生成虚拟机
1 2 3 4 5 6 7 8 9 10
| 前提是你已经创建好了一个主机 $ cd /var/lib/librit/images - 这个磁盘里面是包含虚拟机的操作系统,就不需要在安装了 $ cp centos-vm2-m44-qcow2 centos-vm3-m44-qcow2
$ virt-install --virt-type kvm --name m44-vm3 --ram 1024 --vcpus 2 --cpu host-passthrough --cdrom=/data/ISOs/CentOS-7-x86_64-Minimal-2003.iso --disk path=/var/lib/libvirt/images/centos-vm3-m44.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
启动文件,然后进入虚拟机更改一下网络地址,然后启动服务就可以访问 $ ll /etc/libvirt/qemu/m44-vm3.xml
|
常用命令
1 2 3 4 5 6 7 8
| $ virsh list $ virsh list --all $ virsh list --inactive $ virsh start CentOS-7-x86_64 $ virsh shutdown CentOS-7-x86_64 $ virsh destroy centos7 $ virsh undefine Win_2008_r2-x86_64 $ virsh autostart centos7
|