36-虚拟化

2020-06-17  本文已影响0人  Liang_JC

本章内容

◆ 虚拟化基础
◆ 虚拟化技术之KVM
◆ kvm实战案例

一:虚拟化基础

https://www.vmware.com/cn/solutions/virtualization.html

1.1:传统的物理机部署方案

传统数据中心面临的问题:

1.2:什么是虚拟化和虚拟机

1.2.1:虚拟化

降低资金成本和运维成本。
最大限度减少或消除停机。
提高 IT 部门的工作效率、效益、敏捷性和响应能力。
加快应用和资源的调配速度。
提高业务连续性和灾难恢复能力

虚拟化的由来

image.png

1.2.2:虚拟机

虚拟计算机称为“虚拟机”(VM,Virtual Machine),它是一种严密隔离且内含操作系统和应用的软件容器。每个自包含
虚拟机都是完全独立的。通过将多台虚拟机放置在一台计算机上,可仅在一台物理服务器或“主机”上运行多个操作
系统和应用,名为“hypervisor”的精简软件层可将虚拟机与主机分离开来,并根据需要为每个虚拟机动态分配计算
资源。

虚拟机的主要特性

共享硬件
可在一台物理机上运行多个操作系统。
可在虚拟机之间分配系统硬件资源。

相互隔离
各虚拟机之间相互隔离互不影响。

封装
可将虚拟机的完整状态保存到文件中。
移动和复制虚拟机就像移动和复制文件一样轻松。

独立于硬件
可将任意虚拟机调配或迁移到其他理服务器上。

1.2.3:虚拟化类型

1.2.4:虚拟化技术分类

模拟器:

在一个host之上通过虚拟化模拟器软件,模拟出一个硬件或者多个硬件环境,每个环境都是一个独立的虚拟机,CPU、
IO、内存等都是模拟出来的,可以在宿主机模拟出不同于当前物理机CPU指令集的虚拟机,比如可以在Windows 模拟
出mac OS、unix系统,比较出名的模拟器有:pearpc、QEMU、Bochs。

全虚拟机化 full virtualization / 准虚拟化 native virtualization:

全虚拟化/准虚拟化不做CPU和内存模拟,只对CPU和内存做相应的分配等操作,全虚拟化需要物理硬件的支持,
比如需要CPU必须支持并且打开虚拟化功能,例如Intel 的 Intel VT-X/EPT,AMD的AMD-V/RVI,以在CPU 层面支
持虚拟化功能和内存虚拟化技术,因此完全虚拟化也是基于硬件辅助的虚拟化技术。

#全虚拟化软件(硬件辅助全虚拟化):
vmware workstation #https://www.vmware.com/cn/products/workstation-pro.html
vmware esxi
paralles desktop
KVM
Microsoft Hyper-V
VirtualBox

KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化,两者合作各自发挥自身的优势

image.png

半虚拟化 para virtualization:

KVM与XEN对比

XEN KVM
世时间 2003年 2007年
持企业 Citrix、Novell、Oracle、Sun、Ret Hat(RHEL5)和Virtual Iron Redhat、Ubuntu等
持的虚 化技术 全虚拟化、半虚拟化 全虚拟化
持架构 x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及 x86/64 CPU商家和Intel嵌入式的支持 支持虚拟化的CPU
持操作 统 UNIX、Linux和Microsoft Windows UNIX Microsoft 、Linux Windo 和 ws
态迁移 支持 支持(以前不支持)
核支持 需要对内核打补丁 内置在内核中

各虚拟化技术性能对比

虚拟机 名称 开发厂商及其简介 虚拟类型 执行 效率 GuestOS 以跨平台 是否可 许可证类 型
Xen http://www.xensource.com/ 半虚拟化、完 全虚拟化 非常 高 可以 GPL
Vmware http://www.vmware.com/ 完全虚拟化 较高 可以 私有
KVM http://www.linux-kvm.org/pa ge/Main_Page 完全虚拟化 较高 可以 GPL
QEMU http://www.qemu.com/ 模拟 较低 可以 LGPL/GPL

1.2.5:Hypervisor类型

Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,其可以允许多个操作系统和应用共享底层
的内存、CPU、磁盘等物理硬件,也可叫做VMM( virtual machine monitor ),即虚拟机监视器。

Hypervisor是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是Hypervisor的基本功能,当服务器启
动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系
统。

直接运行到物理机

vmware esxi
rhev hypervisor

需要运行到操作系统

KVM,XEN
vmware workstation
paralles desktop
Microsoft Hyper-V
VirtualBox

常见的hypervisor类型

类型I-裸机型:直接运行在硬件设备上的,这种架构搭建的虚拟化环境称为裸机虚拟化环境(Bare-Metal Hardware Virtualization),比如:VMware ESXI
类型II-主机托管型,运行在具有虚拟化功能的操作系统上的,构建的是主机虚拟化环境(Hosted Virtualization),比如:VMware Workstation、VirtualBox

#Redhat将KVM划分到类型I即裸机型:
https://www.redhat.com/zh/topics/virtualization/what-is-KVM

1.2.6:虚拟化技术厂商

1.2.7:云计算

云计算(Cloud Computing)是概念最早是由Google 前首席执行官 埃里克•施密特(Eric Schmidt)在2006 年8 月9日的搜索引擎大会上首次提出的一种构想,而“云计算”就是这种构想的代名词,云计算以虚拟化为基础,以网络为中心,为用户提供安全、快速、便捷的数据存储和网络计算服务,包括所需要的硬件、平台、软件及服务等资源,而提供资源的网络就被称为“云”。

https://www.redhat.com/zh/topics/cloud-computing/cloud-vs-virtualization #虚拟化与云计算区别

以下为虚拟化和云计算的对比

项目 虚拟化
定义 技术 方法
目的 从 1 个物理硬件系统创建多个模拟环境 汇聚并自动化分配虚拟资源以供按需使用
用途 针对具体用途为特定用户提供打包资源 针对多种用途为用户群组提供不同资源
配置 基于镜像 基于模板
成本 资本支出(CAPEX)高、运营支出 (OPEX)低 私有云:CAPEX 高、OPEX 低 公共云:CAPEX 低、 OPEX 高
可扩展 性 纵向扩展 横向扩展
使用场 景 少量服务器的环境 众多服务器的大环境

二:虚拟化技术之KVM

KVM 是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中,KVM目前已成为学术界的主流 VMM (virtual machine monitor,虚拟机监视器,也称为hypervisor)之一

KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware 
containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, 
kvm.ko, that provides the core virtualization infrastructure and a processor specific module, 
kvm-intel.ko or kvm-amd.ko.

KVM(基于内核的虚拟机)是针对Linux的完全虚拟化解决方案,它在x86硬件上包含虚拟化扩展(Intel VT或AMDV)。 它由提供核心虚拟化基础架构的可加载内核模块kvm.ko和处理器特定模块kvm-intel.ko或kvm-amd.ko组成。
#kvm定义
https://www.redhat.com/zh/topics/virtualization/what-is-KVM
#红帽基于KVM对虚拟机的最大资源支持及限制
https://access.redhat.com/articles/rhel-kvm-limits
#红帽虚拟化入门指南
https://access.redhat.com/documentation/zhcn/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index
#KVM 官网
https://www.linux-kvm.org/page/Virtio
#libvirt
https://libvirt.org/

RedHat创建虚拟机数量限制

image.png

KVM结构图

[图片上传失败...(image-c81f20-1592055751522)]

目前在各大公有云厂商新购买的虚拟机基本运行在KVM环境下,就连早期一直使用Xen的AWS也在2017年开始逐渐转换到KVM环境,以下是AWS基于KVM技术提供的最新示例部分性能

Instance Name vCPUs RAM EBS Bandwidth Network Bandwidth
c5.large 2 4 GiB Up to 2.25 Gbps Up to 10 Gbps
c5.xlarge 4 8 GiB Up to 2.25 Gbps Up to 10 Gbps
c5.2xlarge 8 16 GiB Up to 2.25 Gbps Up to 10 Gbps
c5.4xlarge 16 32 GiB 2.25 Gbps Up to 10 Gbps
c5.9xlarge 36 72 GiB 4.5 Gbps 10 Gbps
c5.18xlarge 72 144 GiB 9 Gbps 25 Gbps

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化,而Xen早期则是基于软件模拟的半虚拟化,新版本则是支持基于硬件支持的完全虚拟化,但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大,广为流传的商业系统虚拟化软件VMware ESXI系列是Full-Virtualization,IBM文档:http://www.ibm.com/developerworks/cn/linux/l-using-kvm/

Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被KVM置于一种受限制的CPU模式下运行。

KVM:运行在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O拦截,Guest的部分I/O被KVM拦截后,交给QEMU处理。

Qemu:纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件,正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成虚拟化工作,KVM完成复杂及要求比较高的设备虚拟化,而Qemu完成像鼠标、键盘等设备的虚拟化
2.1:宿主机环境准备

KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能

2.2:创建NAT网络虚拟机

KVM管理工具

libvirt
使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,libvirt是KVM通用的访问API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化方案。

virsh:
是一个常用的管理KVM虚拟化的命令行工具,常用语管理运行在单个宿主机上的虚拟机,virsh是一个使用C语言编写调用libvirt API的虚拟化管理命令行工具。

virt-manager:
virt-manager是一个虚拟化管理图形软件,其底层也是调用libvirt API来完成对虚拟机的操作,包括虚拟机的创建、删除、启动、停止以及一些简单的监控功能等。

openstack:
openstack是一个开源的虚拟化编排工具,常用于构建大规模的虚拟化环境,用语管理成千上万虚拟机的创建、启动、删除等整个生命周期。
2.2.1:创建磁盘
ll /var/lib/libvirt/images/ #默认保存虚拟机磁盘的路径
total 0

#创建一个格式为raw大小为10G的裸磁盘
qemu-img create -f raw /var/lib/libvirt/images/CentOS-7-x86_64.raw 10G
Formatting '/var/lib/libvirt/images/CentOS-7-x86_64.raw', fmt=raw size=10737418240

ll -h /var/lib/libvirt/images/CentOS-7-x86_64.raw
-rw-r--r-- 1 root root 10G Jun 15 2019 /var/lib/libvirt/images/CentOS-7-x86_64.raw

#创建一个格式为raw大小为10G的稀疏格式磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G
Formatting '/var/lib/libvirt/images/centos.qcow2', fmt=qcow2 size=10737418240
encryption=off cluster_size=65536 lazy_refcounts=off

ll -h /var/lib/libvirt/images/centos.qcow2
-rw-r--r-- 1 root root 193K Jun 14 16:36 /var/lib/libvirt/images/centos.qcow2
2.2.2:virsh-install命令使用帮助
# virt-install --help
usage: virt-install --name NAME --ram RAM STORAGE INSTALL [options]

使用指定安装介质新建虚拟机。
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--connect URI 使用 libvirt URI 连接到 hypervisor
通用选项:
-n NAME, --name NAME 客户端事件名称
--memory MEMORY 配置虚拟机内存分配。例如:
--memory 1024 (in MiB)
--memory 512,maxmemory=1024
--vcpus VCPUS 为虚拟机配置的 vcpus 数。例如:
--vcpus 5
--vcpus 5,maxcpus=10,cpuset=1-4,6,8
--vcpus sockets=2,cores=4,threads=2,
--cpu CPU CPU 型号及功能。例如:
--cpu coreduo,+x2apic
--cpu host
--metadata METADATA 配置虚拟机元数据。例如:
--metadata name=foo,title="My pretty title",uuid=...
--metadata description="My nice long description"
安装方法选项:
--cdrom CDROM 光驱安装介质
-l LOCATION, --location LOCATION
安装源(例如:nfs:host:/path、http://host/path
ftp://host/path)
--pxe 使用 PXE 协议从网络引导
--import 在磁盘映像中构建虚拟机
--livecd 将光驱介质视为 Live CD
-x EXTRA_ARGS, --extra-args EXTRA_ARGS
附加到使用 --location 引导的内核的参数
--initrd-inject INITRD_INJECT
使用 --location 为 initrd 的 root
添加给定文件--os-variant DISTRO_VARIANT
在其中安装 OS 变体的虚拟机,比如
'fedora18'、'rhel6'、'winxp' 等等。
--boot BOOT 配置虚拟机引导设置。例如:
--boot hd,cdrom,menu=on
--boot init=/sbin/init (for containers)
--idmap IDMAP 为 LXC 容器启用用户名称空间。例如:
--idmap uid_start=0,uid_target=1000,uid_count=10
设备选项:
--disk DISK 使用不同选项指定存储。例如:
--disk size=10 (new 10GiB image in default location)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
配置虚拟机网络接口。例如:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS 配置虚拟机显示设置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--controller CONTROLLER
配置虚拟机控制程序设备。例如:
--controller type=usb,model=ich9-ehci1
--input INPUT 配置虚拟机输入设备。例如:
--input tablet
--input keyboard,bus=usb
--serial SERIAL 配置虚拟机串口设备
--parallel PARALLEL 配置虚拟机并口设备
--channel CHANNEL 配置虚拟机沟通频道
--console CONSOLE 配置虚拟机与主机之间的文本控制台连接
--hostdev HOSTDEV 将物理 USB/PCI/etc
主机设备配置为与虚拟机共享
--filesystem FILESYSTEM
将主机目录传递给虚拟机。例如:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
--sound [SOUND] 配置虚拟机声音设备模拟
--watchdog WATCHDOG 配置虚拟机 watchdog 设备
--video VIDEO 配置虚拟机视频硬件。
--smartcard SMARTCARD
配置虚拟机智能卡设备。例如:
--smartcard mode=passthrough
--redirdev REDIRDEV 配置虚拟机重定向设备。例如:
--redirdev usb,type=tcp,server=192.168.1.1:4000
--memballoon MEMBALLOON
配置虚拟机 memballoon 设备。例如:--memballoon model=virtio
--tpm TPM 配置虚拟机 TPM 设备。例如:
--tpm /dev/tpm
--rng RNG 配置虚拟机 RNG 设备。例如:
--rng /dev/random
--panic PANIC 配置虚拟机 panic 设备。例如:
--panic default
虚拟机配置选项:
--security SECURITY 设定域安全驱动器配置。
--numatune NUMATUNE 为域进程调整 NUMA 策略。
--memtune MEMTUNE 为域进程调整内粗策略。
--blkiotune BLKIOTUNE
为域进程调整 blkio 策略。
--memorybacking MEMORYBACKING
为域进程设置内存后备策略。例如:
--memorybacking hugepages=on
--features FEATURES 设置域 <features> XML。例如:
--features acpi=off
--features apic=on,eoi=on
--clock CLOCK 设置域 <clock> XML。例如:
--clock offset=localtime,rtc_tickpolicy=catchup
--pm PM 配置 VM 电源管理功能
--events EVENTS 配置 VM 生命周期管理策略
--resource RESOURCE 配置 VM 资源分区(cgroups)
虚拟化平台选项:
-v, --hvm 客户端应该是一个全虚拟客户端
-p, --paravirt 这个客户端一个是一个半虚拟客户端
--container 这台虚拟机需要一个容器客户端
--virt-type HV_TYPE 要使用的管理程序名称(kvm、qemu、xen
等等)
--arch ARCH 模拟的 CPU 构架
--machine MACHINE 要模拟的机器类型
其它选项:
--autostart 引导主机时自动启动域。
--wait WAIT 等待安装完成的分钟数。
--noautoconsole 不要自动尝试连接到客户端控制台
--noreboot 完成安装后不要引导虚拟机。
--print-xml [XMLONLY]
输出所生成域 XML,而不是创建虚拟机。
--dry-run 完成安装步骤,但不要创建设备或者定义
虚拟机。
--check CHECK 启用或禁用验证检查。例如:
--check path_in_use=off
--check all=off
-q, --quiet 禁止无错误输出
-d, --debug 输入故障排除信息
使用 '--option=?' 或者 '--option help' 查看可用子选项
有关示例及完整选项语法,请查看 man page。

#小笔记:
virt-install --virt-type kvm --name centos7 --ram 1024 --vcpus 2 --cdrom=/usr/local/src/Centos7.iso --disk path=/var/lib/libvirt/images/centos.qcow2 --network network=default --graphicsvnc,listen=0.0.0.0 --noautoconsole --autostart
2.2.3:创建NAT网络虚拟机:

创建一台虚拟机,并使用默认的NAT网络,可以使虚拟机连接外网

2.2.4:创建bridge网络虚拟机

桥接网络可以让运行在宿主机上的虚拟机使用和宿主机同网段IP,并且可以从外部直接访问到虚拟机,目前企业中大部分场景都使用桥接网络。

2.2.4.1:创建br0桥接网卡

Ubuntu 18.04创建桥接网卡

cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no

  bridges:
    br0:
      dhcp4: no
      dhcp6: no
      addresses: [172.18.0.20/16]
      gateway4: 172.18.0.1
      nameservers:
        addresses: [223.6.6.6]
      interfaces:
        - eth0

netplan apply     #刷新网卡信息

Centos 7.X创建桥接网卡

pwd
/etc/sysconfig/network-scripts

vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.18.200.101
NETMASK=255.255.0.0
GATEWAY=172.18.0.1
DNS1=172.18.0.1

vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

systemctl restart network

2.2.4.2:上传镜像并安装虚拟机

ll /usr/local/src/CentOS-7-x86_64-Minimal-1908.iso
-rw-r--r-- 1 libvirt-qemu kvm 987758592 Nov 20 12:03 /usr/local/src/CentOS-7-x86_64-
Minimal-1908.iso

#创建系统磁盘:
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7-bridge.qcow2 10G
Formatting '/var/lib/libvirt/images/centos7-bridge.qcow2', fmt=qcow2 size=10737418240
cluster_size=65536 lazy_refcounts=off refcount_bi
ts=16

#创建基于桥接网络的虚拟机
virt-install --virt-type kvm --name centos7-bridge --ram 1024 --vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1908.iso --disk path=/var/lib/libvirt/images/centos7-bridge.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

2.2.4.3:验证虚拟机桥接网络通信

ping www.baidu.com

2.2.4.4:从外部ssh虚拟机

ssh 172.18.144.43
[root@localhost ~]# yum install pciutils #查看PCI设备
[root@localhost ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:04.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1
(rev 03)
00:04.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2
(rev 03)
00:04.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3
(rev 03)
00:04.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1
(rev 03)
00:05.0 Communication controller: Red Hat, Inc. Virtio console #virtio为半虚拟化驱动
00:06.0 SCSI storage controller: Red Hat, Inc. Virtio block device
00:07.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
00:08.0 Unclassified device [00ff]: Red Hat, Inc. Virtio RNG
小笔记:虚拟机复制
#宿主机A
scp /var/lib/libvirt/images/centos7-bridge.qcow2 root@192.168.37.17:/var/lib/libvirt/images/centos7-bridge-template.qcow2

#宿主机B
cd /var/lib/libvirt/images
cp centos7-bridge-template.qcow2 centos7-bridge-template-web1.qcow2
virt-manager    #图形工具
new vm --> import existing disk image
#命令行
virt-install --virt-type kvm --name centos7-web1 --ram 1024 --vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1908.iso --disk path=/var/lib/libvirt/images/centos7-bridge-template-web1.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --boot hd
小笔记:配置2块网卡
# eth0:桥接 eth1:仅主机

#ubuntu18
cat /etc/netplan/01-netcfg.yaml
  network:
    version: 2
    renderer: networkd
    ethernets:
      eth0:
        dhcp4: no
        dhcp6: no
      eth1:
        dhcp4: no
        dhcp6: no

    bridges:
      br0:
        dhcp4: no
        dhcp6: no
        addresses: [172.20.0.101/16]
        gateway4: 172.20.0.1
        nameservers:
          addresses: [223.6.6.6,223.5.5.5]
        interfaces:
          - eth0
      br1:
        dhcp4: no
        dhcp6: no
        addresses: [10.20.0.101/16]
        interfaces:
          - eth1
 
 netplan apply
 
#centos7
cd /etc/sysconfig/network-script
vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.20.0.101
NETMASK=255.255.0.0

vim ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
BRIDGE=br1

vim ifcfg-br1
TYPE=Bridge
BOOTPROTO=static
NAME=br1
DEVICE=br1
ONBOOT=yes
IPADDR=10.20.0.101
NETMASK=255.255.0.0

systemctl restart netowrk
2.2.5:安装Windows Server虚拟机
2.2.6:安装Windows win10虚拟机
virt-install --virt-type kvm --name Win10 --ram 1024 --vcpus=2 --ostype=windows --cdrom=/usr/local/src/cn_windows_10_consumer_editions_version_1909_x64_dvd_76365bf8.iso --disk path=/var/lib/libvirt/images/Win10.qcow2,format=qcow2,bus=virtio --disk path=/usr/local/src/virtio-win-0.1.173_amd64.vfd,device=floppy --network ridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole
2.2.7:虚拟机管理命令virsh
virsh list #列出当前开机的
virsh list --inactive #列出关闭的虚拟机
virsh list --all #列出所有
virsh shutdown CentOS-7-x86_64 #正常关机
virsh start CentOS-7-x86_64 #正常开机
virsh destroy centos7 #强制停止/关机
virsh undefine Win_2008_r2-x86_64 #强制删除
virsh autostart centos7 #设置当前虚拟机开机自启动

2.2.8:快速创建虚拟机

通过copy虚拟机磁盘文件,可以快速创建虚拟机

[root@s2 ~]# cd /var/lib/libvirt/images/
cp centos1.qcow2 centos1-bak.qcow2
cp centos1-bak.qcow2 centos2.qcow2
virt-install --virt-type kvm \
--name centos2 \
--ram 1024 \
--vcpus 2 \
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1908.iso \
--disk path=/var/lib/libvirt/images/centos2.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole #虚拟机不要开始安装过程,即虚拟机启动后立即强制关系重新启动即可进入到虚拟机系统

2.2.9:调整虚拟机配置:
日常运维主要涉及调整内存大小、vCPU数量,网卡和磁盘配置等操作。

小笔记:迁移虚拟机
#环境:2台机器:kvm,nfs-server

#nfs-server
yum install nfs-utils
vim /etc/exports
/data/kvmdata 192.168.37.0/24(rw no_root_squash)
mkdir /data/kvmdata
systecmtl start nfs-server

#kvm
yum install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install
systemctl start libvirt
showmount -e 192.168.37.27
mv /var/lib/libvirt/images/* /opt       #先备份原有磁盘文件,没有的话不用执行
virt-manager    #图形挂载nfs-server
    edit-->connection details-->storage-->add(+号)-->name:kvmdata,type:netfs-->forward
    target path:/var/lib/libvirt/images
    host name:192.168.37.27
    source path:/data/kvmdata
    finish
mv /opt/* /var/lib/libvirt/images
#yum install openssh-askpass        #迁移使用

#迁移
virt-manager
    file-->add connection:
    hypervisor:qemu/kvm
    connect to remote host
    method:ssh
    username:root
    hostname:192.168.37.17
    autoconnect
#虚拟机上右键-->migrate
    new host:迁移到的目标服务器
    mode:direct
    address:192.168.37.7
    port:49152
    advanced options
    allow unsafe

三:kvm实战案例

实现一个内外网隔离的web环境

image.png
上一篇 下一篇

猜你喜欢

热点阅读