KVM介绍

文章目录

  • 一.KVM基本介绍
    • 1.KVM概念介绍
    • 2.KVM的基本特点和优势
  • 二.KVM基础命令
    • 1.创建虚拟机
    • 2.基础命令

一.KVM基本介绍

1.KVM概念介绍

KVM(Kernel-based Virtual Machine)是一个基于Linux内核的虚拟化解决方案,它允许在同一台物理主机上同时运行多个虚拟机。KVM采用了硬件虚拟化技术(Intel VT或AMD-V),通过将虚拟机直接运行在宿主机的硬件上,提供了接近原生性能的虚拟化体验。

2.KVM的基本特点和优势

(1)硬件虚拟化支持:KVM利用CPU的虚拟化扩展,可以实现将物理主机的处理能力划分给虚拟机,提供高效的硬件资源管理。

(2)完全虚拟化:KVM可以在虚拟机中运行未经修改的操作系统,实现对多种操作系统和应用程序的支持。

(3)性能优化:KVM的硬件虚拟化技术允许虚拟机直接访问物理硬件资源,降低了虚拟化的性能消耗,提供了接近原生性能的运行效果。

(4)弹性和可伸缩性:KVM支持动态添加、删除、调整虚拟机的资源,可以根据需求灵活配置虚拟机的CPU、内存和存储等资源。

(5)安全性:KVM采用严格的隔离机制,保护不同虚拟机之间的安全,防止一台虚拟机的故障对其他虚拟机造成影响。

(6)社区支持:KVM是一个开源项目,拥有庞大的社区支持,提供了丰富的文档和资源,可以帮助用户更好地理解和使用该技术。

二.KVM基础命令

1.创建虚拟机

# 默认网络
virt-install  --virt-type kvm --name CentOS-7-x86_64 --ram 1024 --cdrom=/opt/CentOS-7-x86_64-DVD-1511.iso --disk path=/opt/CentOS-7-x86_64.raw  --network network=default --graphics  vnc,listen=0.0.0.0 --noautoconsole
命令注解:
--virt-type kvm:指定虚拟机使用KVM作为虚拟化类型。
--name CentOS-7-x86_64:指定创建的虚拟机的名称为CentOS-7-x86_64。
--ram 1024:分配给虚拟机的内存大小为1024MB。
--cdrom=/opt/CentOS-7-x86_64-DVD-1511.iso:指定虚拟机使用的光盘镜像文件为CentOS-7-x86_64-DVD-1511.iso。
--disk path=/opt/CentOS-7-x86_64.raw:指定虚拟机使用的磁盘镜像文件为CentOS-7-x86_64.raw。
--network network=default:使用默认网络设定。
--graphics vnc,listen=0.0.0.0:启用VNC图形界面,并监听所有网络接口。
--noautoconsole:创建虚拟机后不自动连接到控制台。
此命令是创建一个名为CentOS-7-x86_64的虚拟机,分配1024MB的内存,使用指定的光盘和磁盘镜像文件,并通过VNC提供图形界面。
**注意**:listen=0.0.0.0这部分指定了VNC监听所有网络接口,这可能存在一定的安全风险,因为这样可能会让虚拟机的VNC服务暴露在公网上。在实际环境中,需要更加谨慎地配置VNC的监听规则以确保安全。



# 桥接网络:
virt-install  --virt-type kvm --name  openstack-middleware1    --ram 4096  --vcpus 4 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1511.iso    --disk path=/var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud-1511-ok.qcow2   --network bridge=br0  --graphics  vnc,listen=0.0.0.0  --noautoconsole
命令注解:
--virt-type kvm:指定虚拟机使用KVM作为虚拟化类型。
--name openstack-middleware1:指定创建的虚拟机的名称为openstack-middleware1。
--ram 4096:分配给虚拟机的内存大小为4096MB。
--vcpus 4:分配给虚拟机的虚拟CPU数量为4个。
--cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1511.iso:指定虚拟机使用的光盘镜像文件为CentOS-7-x86_64-Minimal-1511.iso。
--disk path=/var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud-1511-ok.qcow2:指定虚拟机使用的磁盘镜像文件为CentOS-7-x86_64-GenericCloud-1511-ok.qcow2。
--network bridge=br0:连接虚拟机到名为br0的网络桥接接口。
--graphics vnc,listen=0.0.0.0:启用VNC图形界面,并监听所有网络接口。
--noautoconsole:创建虚拟机后不自动连接到控制台。
此命令是创建一个名为openstack-middleware1的虚拟机,分配4096MB的内存和4个虚拟CPU。它使用指定的光盘和磁盘镜像文件,并通过VNC提供图形界面。该虚拟机通过指定的网络桥接接口(br0)连接到宿主机网络。
**注意**:需要根据实际需求进行调整和配置,比如适当改变内存大小、CPU数量以及磁盘镜像文件的路径等参数。确保在使用VNC监听所有网络接口时,网络安全性得到适当的保护。



# 安装Windows:
qemu-img create -f qcow2   /var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2  200G
命令注释:
使用 qemu-img 工具创建一个大小为200GB的qcow2格式的磁盘镜像文件,该文件名为 Windows-2008_r2-x86_64.qcow2,路径为 /var/lib/libvirt/images/。
qemu-img 是一个用于创建、转换和修改QEMU虚拟机磁盘镜像文件的工具。而 -f qcow2 表示创建的镜像文件的格式为qcow2,200G 指定了镜像文件的大小为200GB。
此命令是在指定路径下创建一个新的qcow2格式的磁盘镜像文件,该文件大小为200GB。这个文件可以用作虚拟机的虚拟硬盘,以存储虚拟机的操作系统和数据。

virt-install --virt-type kvm  --name  Win_2008_r2-x86_64 --ram 3072  --vcpus=2 --os-type=windows --cdrom=/usr/local/src/windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio   --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy     --network bridge=br0,model=virtio  --graphics  vnc,listen=0.0.0.0 --noautoconsole
命令注解:
--virt-type kvm:指定虚拟机使用KVM作为虚拟化类型。
--name Win_2008_r2-x86_64:指定创建的虚拟机的名称为Win_2008_r2-x86_64。
--ram 3072:分配给虚拟机的内存大小为3072MB。
--vcpus=2:分配给虚拟机的虚拟CPU数量为2个。
--os-type=windows:指定虚拟机的操作系统类型为Windows。
--cdrom=/usr/local/src/windows_server_2008_r2.iso:指定虚拟机使用的光盘镜像文件为windows_server_2008_r2.iso。
--disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio:指定虚拟机使用的磁盘镜像文件为Windows-2008_r2-x86_64.qcow2,使用qcow2格式,通过virtio总线连接。
--disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy:指定虚拟机使用的软盘镜像文件为virtio-win-0.1.141_amd64.vfd,作为virtio的驱动程序。
--network bridge=br0,model=virtio:连接虚拟机到名为br0的网络桥接接口,使用virtio模型。
--graphics vnc,listen=0.0.0.0:启用VNC图形界面,并监听所有网络接口。
--noautoconsole:创建虚拟机后不自动连接到控制台。
此命令是创建一个名为Win_2008_r2-x86_64的Windows Server 2008 R2虚拟机,分配3072MB的内存和2个虚拟CPU。它使用指定的光盘、磁盘镜像文件和软盘驱动镜像文件,并通过VNC提供图形界面。该虚拟机通过指定的网络桥接接口(br0)连接到宿主机网络,使用virtio模型进行网络通信。
**注意**:确保已经正确安装了virtio驱动程序和Windows Server 2008 R2操作系统光盘镜像文件。另外,需要根据实际需求调整各项参数,比如内存大小、硬盘大小、网络模型等。最后,请确保在使用VNC监听所有网络接口时,网络安全性得到适当的保护。


开始安装......
创建域......                                                                                                                       |    0 B  00:00:01     
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。

# 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


虚拟机配置选项:
  --security SECURITY   设定域安全驱动器配置。
  --numatune NUMATUNE   为域进程调整 NUMA 策略。
  --memtune MEMTUNE     为域进程调整内粗策略。
  --blkiotune BLKIOTUNE
                        为域进程调整 blkio 策略。
  --memorybacking MEMORYBACKING
                        为域进程设置内存后备策略。例如:
                        --memorybacking hugepages=on
  --features FEATURES   设置域  XML。例如:
                        --features acpi=off
                        --features apic=on,eoi=on
  --clock CLOCK         设置域  XML。例如:
                        --clock offset=localtime,rtc_tickpolicy=catchup

  --events EVENTS       配置 VM 生命周期管理策略
  --resource RESOURCE   配置 VM 资源分区(cgroups)

虚拟化平台选项:
  -v, --hvm             客户端应该是一个全虚拟客户端
  -p, --paravirt        这个客户端一个是一个半虚拟客户端
  --container           这台虚拟机需要一个容器客户端
  --virt-type HV_TYPE   要使用的管理程序名称 ( kvm、qemu、xen 等等)

其它选项:
  --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 手册

2.基础命令

开启子机

virsh  start  子机名

关闭子机

virsh  shutdown  子机名

删除子机

virsh destroy 子机名——————————————关闭一个虚拟机
virsh undefine 子机名——————————————删除一个虚拟机
rm -f /data/子机名.img————————————删除一个虚拟机的磁盘镜像文件

修改KVM虚拟机的配置方法

virsh edit centos7

备份虚拟机配置(关机后备份)

virsh dumpxml centos7 > centos7.1.xml

查看KVM虚拟机列表

virsh list --all

删除虚拟机配置

virsh  shutdown  centos7——————————关闭
virsh  undefine centos7 ——————————删除

导入虚拟机

virsh define centos7.1.xml

修改虚拟机名称

virsh domrename centos7 fenfen

虚拟机挂起

virsh suspend fenfen
现象:state下是paused

虚拟机恢复

virsh resume fenfen
现象:state下是running

查询虚拟机VNC端口

virsh vncdisplay fenfen
查询现象::0即为5900端口,以此类推:1为1901端口

开机自启设置

检查 libvirtd 服务是否在系统启动时自动启用,现象:输出为 "enabled",这表示 libvirtd 服务已经被设置为在系统启动时自动启用;disabled是表示未启用
systemctl is-enabled libvirtd.service
设置宿主机
virsh autostart fenfen
现象:实际相当于创建了软连接,查询:ll /etc/libvirt/qemu/autostart/fenfen.xml

取消开机自启

virsh autostart --disable fenfen

你可能感兴趣的:(云原生,运维)