当前位置: 首页 > news >正文

kvm虚拟化

      虚拟化是一种资源管理技术,是将计算机的各种资源,如服务器,网络,内存及存储等,以抽象,转换后呈现出来,打破物理设备结构见的不可切割的障碍,使用户可以比原来的架构更好的方式来应用

       这些资源的虚拟部分是不受现有资源的架构方式,地域或物理设备的限制

       虚拟化创建了一个隔离层,把硬件和上层应用分离开来,允许在硬件资源上运行多个逻辑应用

       虚拟化有:服务器虚拟化,应用程序虚拟化,展现层虚拟化,桌面虚拟化

虚拟机嵌套 
 window > vmware > 宿主机(centos7) > 安装kvm > 创建kvm虚拟机
 

部署kvm

装第一个
yum install libvirt virt-install qemu-kvm -y
#yum -y install qemu-kvm libvirt   virt-manager virt-install 
virt-viewer#yum install libvirt* virt-* qemu-kvm* -y#安装软件说明
libvirt   创建虚拟机管理
virt      虚拟机克隆
qemu      管理虚拟机硬盘qemu-kvm: 为kvm提供底层仿真支持
libvirt-daemon: libvirtd守护进程,管理虚拟机
libvirt-client: 用户端软件,提供客户端管理命令
libvirt-daemon-driver-qemu: libvirtd连接qemu的驱动
libvirt: 使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,
libvirt是KVM通用的访问API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、
virtualBox等虚拟化方案。
virt-manager: 图形界面管理工具,其底层也是调用libvirt API来完成对虚拟机的操作,包括虚拟机的
创建、删除、启动、停止以及一些简单的监控功能等。
virt-install: 虚拟机命令行安装工具
virsh: 命令行工具是基于 libvirt API 创建的命令行工具,它可以作为图形化的 virt-manager 应用的
备选工具。virsh 命令可以被用来创建虚拟化任务管理脚本,如安装、启动和停止虚拟机
virt-viewer: 通过 VNC 和 SPICE 协议显示虚拟机器图形控制台的最小工具。该工具在其同名软件包
中:virtviewer
cockpit: CentOS8 专门提供的基于Web的虚拟机管理界面启动服务
[root@test3 ~]# systemctl start libvirtd.service
[root@test3 ~]# systemctl status libvirtd.service
● libvirtd.service - Virtualization daemonLoaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2024-05-16 09:48:53 EDT; 3min 55s agoDocs: man:libvirtd(8)https://libvirt.orgMain PID: 1012 (libvirtd)Tasks: 19 (limit: 32768)Memory: 36.1M

创建一个虚拟机

--virt-type HV_TYPE          要使用的管理程序名称(kvm,qemu,xen,...)
--os-type                    系统类型
--os-variant DISTRO_VARIANT  在客户机上安装的操作系统,例如:'fedora28、rhel6、winxp等'
-n NAME,--name NAME          客户机实列名称
--memory MEMORY              配置客户机虚拟内存大小
--vcpus VCPUS                配置客户机虚拟cpu(vcpu)数据
--disk DISK                  指定存储的各种选项
-cdrom CDROM                  光驱安装介质
-w NETWORK,--network NETWORK  配置客户机网络接口
--graphics GRAPHICE           配置客户机现实设置虚拟化平台选项
-v,--hvm                     这个客户机应该是一个全虚拟化的客户机
-p,--paravirt                这个客户机应该是一个半虚拟化的客户机
--container                  这个客户机应该是一台容器客户机
--virt-type HV_TYPE          要使用容器的管理程序名称(kvm,qemu,xen,..)
--arch ARCH                  模拟cpu架构
--machine MACHINE            机器类型为仿真类型其他选项
--noautoconsole              不要自动尝试连接到客户端控制台
--autostart                  主机启动时自动启动域
--noreboot                    安装完成后不启动客户机以上信息通过 virt-install --help 获取

安装操作系统的方式

装系统方式1. 基于现有完整的OS镜像,重新装
2. 基于现有一个系统的硬盘,开机即可#virt-install 安装虚拟机
# cpu,内存,系统ISO选择,网络模式(defalut nat ,kvm网络环境,又是一个单独的 192.168.0.xx)
#  network=default#kmv特性,是在创建时候,虚拟机的硬件上线,就限制死了
#--memory 2048 -vcpus 2
#如果想动态修改kvm虚拟机的配置,还得额外添加参数,设置最大内存,设置最大cpu才可以
# -vcpus 2 给当前虚拟机,设置2核  ,2个工作的cpu线程,top 看到 cpu0 cpu1
# maxvcpus=8 ,当前虚拟机动态设置到最高8核,cpu0 ~ cpu7
# -vcpus 2,maxvcpus=8
# --memory 2048,maxmemory=4096   给这个机器2G内存,可动态设置到最大 4G内存
# --disk /data/linux0224_cento7.raw,format=raw,size=10  
#  虚拟机的磁盘文件,放在/data/  磁盘文件类型,raw类型,最大容量是 10G
# vmware用的虚拟磁盘类型是 vmdk格式,存储工程师关心的,了解即可# --cdrom  /opt/CentOS-7-x86_64-DVD-1804.iso   制定安装os镜像# 
# --network network=default #  --graphics vnc,listen=0.0.0.0  --noautoconsole # 网络模式选择是nat,开启vnc功能 listen 虚拟机运行后,会开启vnc端口,绑定0.0.0.0 从外网去链接 
# 阿里云的服务器,也是这个参数,一样样,也开启vnc功能virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name linux0224_cento7 --memory 2048,maxmemory=4096 --vcpus 2,maxvcpus=8  --disk /data/linux0224_cento7.raw,format=raw,size=10 --cdrom  /opt/CentOS-7-x86_64-Minimal-2009.iso --network network=default --graphics vnc,listen=0.0.0.0  --noautoconsole#查看运行中的kvm
[root@test3 data]# virsh listId    Name                           State
----------------------------------------------------1     linux0224_cento7               running#查看运行中的kvm(包括挂了的)
[root@test3 data]# virsh list --allId    Name                           State
----------------------------------------------------1     linux0224_cento7               running#查看虚拟机端口,ip情况,可以用ssh去连接
[root@test3 data]# virsh domifaddr linux0224_cento7Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------#用vnc连接
[root@test3 data]# virsh vncdisplay linux0224_cento7
:0
vnc默认产生的端口,:0 即为5900 以此类推 :1 为5901
[root@test3 data]# netstat -tunlp|grep kvm
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      4591/qemu-kvm   virsh dumpxml linux0224_cento7  导出虚拟机的配置文件
配置文件中就是定义了当前机器的一些信息,如cpu,磁盘,网络等,想修改虚拟机的信息,就是该这个配置文件

装完虚拟机之后

[root@localhost opt]# virsh list --allId    Name                           State
-----------------------------------------------------     linux0224_cento7               shut off#把他给开机
[root@localhost opt]# virsh --help|grep startautostart                      autostart a domaindefine                         define (but don't start) a domain from an XML filestart                          start a (previously defined) inactive domainiface-start                    start a physical host interface (enable it / "if-up")net-autostart                  autostart a networknet-start                      start a (previously defined) inactive networkpool-autostart                 autostart a poolpool-start                     start a (previously defined) inactive pool
[root@localhost opt]# virsh start linux0224_cento7
Domain linux0224_cento7 started[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# virsh listId    Name                           State
----------------------------------------------------3     linux0224_cento7               running#查看ip情况
[root@localhost opt]# virsh domifaddr  linux0224_cento7Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------vnet0      52:54:00:f2:60:4e    ipv4         192.168.122.218/24#此时就可以通过ssh连接了
[root@localhost opt]# ssh root@192.168.122.218
The authenticity of host '192.168.122.218 (192.168.122.218)' can't be established.
ECDSA key fingerprint is SHA256:35q+qgdpexAK2dXVHCJjhkIwXZS3Y11iqiL7Tkf9pt0.
ECDSA key fingerprint is MD5:7c:09:7c:d5:43:bd:b3:db:d4:ae:bf:78:67:78:23:6c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.218' (ECDSA) to the list of known hosts.
root@192.168.122.218's password: 
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:f2:60:4e brd ff:ff:ff:ff:ff:ffinet 192.168.122.218/24 brd 192.168.122.255 scope global noprefixroute dynamic eth0valid_lft 3164sec preferred_lft 3164secinet6 fe80::2ba4:e902:8dd3:7cc/64 scope link noprefixroute valid_lft forever preferred_lft forever强制删除就是删除这个路径下的文件配置,用virsh list 看的也是这个文件,有用命令就能现实出来,没有就不能显示出来
[root@localhost ~]# ll /etc/libvirt/qemu/
total 8
-rw-------. 1 root root 4263 Jun  2 09:57 linux0224_cento7.xml
drwx------. 3 root root   42 Jun  2 09:53 networks#设置kvm开机自启,每次宿主机启动 kvm就启动
[root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]# systemctl is-enabled libvirtd
enabled
[root@localhost ~]# virsh autostart linux0224_cento7
Domain linux0224_cento7 marked as autostarted#开机自启会自动创建一个软连接
[root@localhost ~]# ll /etc/libvirt/qemu/autostart/linux0224_cento7.xml 
lrwxrwxrwx. 1 root root 38 Jun  2 21:41 /etc/libvirt/qemu/autostart/linux0224_cento7.xml -> /etc/libvirt/qemu/linux0224_cento7.xml#禁止开机自启,此时那个软连接就没了
[root@localhost ~]# virsh autostart --disable linux0224_cento7
Domain linux0224_cento7 unmarked as autostarted[root@localhost ~]# ll /etc/libvirt/qemu/autostart/linux0224_cento7.xml 
ls: cannot access /etc/libvirt/qemu/autostart/linux0224_cento7.xml: No such file or directory搜索镜像[root@localhost ~]# osinfo-query osShort ID             | Name                                               | Version  | ID                                      
----------------------+----------------------------------------------------+----------+-----------------------------------------alpinelinux3.5       | Alpine Linux 3.5                                   | 3.5      | http://alpinelinux.org/alpinelinux/3.5  alpinelinux3.6       | Alpine Linux 3.6                                   | 3.6      | http://alpinelinux.org/alpinelinux/3.6  alpinelinux3.7       | Alpine Linux 3.7                                   | 3.7      | http://alpinelinux.org/alpinelinux/3.7  alpinelinux3.8       | Alpine Linux 3.8                                   | 3.8      | http://alpinelinux.org/alpinelinux/3.8  alt.p8               | ALT p8 StarterKits                                 | p8       | http://altlinux.org/alt/p8.starterkits  alt.p9               | ALT p9 StarterKits                                 | p9       | http://altlinux.org/alt/p9.starterkits  alt.sisyphus         | ALT regular                                        | sisyphus | http://altlinux.org/alt/sisyphus        alt8.0               | ALT 8 Education                                    | 8.0      | http://altlinux.org/alt/8.0             alt8.1               | ALT 8.1                                            | 8.1      | http://altlinux.org/alt/8.1           

console连接

#在没配置内核时,时不能console的,他会一直卡在那,输入ctrl + ]  退出
[root@localhost ~]# virsh console linux0224_cento7
Connected to domain linux0224_cento7
Escape character is ^][root@localhost ~]# 如何用 console 连接
用vnc连接更改内核参数
1.通过为内核传递参数 console=ttyS0,来让内核把输出定向至 ttyS0
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot此时再用console连接
[root@localhost ~]# virsh console linux0224_cento7
Connected to domain linux0224_cento7
Escape character is ^]#按回车 
CentOS Linux 7 (Core)
Kernel 3.10.0-1160.el7.x86_64 on an x86_64localhost login: ubuntu开启console
如下一个简单的命令,就可以开启console了
RHEL/CentOS7和Ubuntu 15.04都使用了systemd,所以也可以直接使用systemctl来启用Guest虚拟机的控制台,方法相同systemctl enable serial-getty@ttyS0.servicesystemctl start serial-getty@ttyS0.service
http://www.lryc.cn/news/364448.html

相关文章:

  • 算法训练营第五十天 | LeetCode 198 打家劫舍、LeetCode 213 打家劫舍II、LeetCode 337 打家劫舍III
  • linux学习:进程通信 管道
  • 重大变化,2024软考!
  • DRIVEN|15分的CNN+LightGBM怎么做特征分类,适用于转录组
  • react 怎样配置ant design Pro 路由?
  • DBSCAN 算法【python,机器学习,算法】
  • MySQL之查询性能优化(六)
  • 生成树协议STP(Spanning Tree Protocol)
  • 03-3.1.1 栈的基本概念
  • 排序算法集合
  • pdf文件太大如何变小,苹果电脑压缩pdf文件大小工具软件
  • vite项目打包,内存溢出
  • Matlab解决施密特正交规范化矩阵(代码开源)
  • 自养号测评助力:如何打造沃尔玛爆款?
  • C语言编译与链接
  • 电子电器架构 --- 智能座舱技术分类
  • 提供操作日志、审计日志解决方案思路
  • 选择富唯智能的可重构装配系统,就是选择了一个可靠的合作伙伴
  • echarts tooltip太多显示问题解决方案
  • 【control_manager】无法加载,gazebo_ros2_control 0.4.8,机械臂乱飞
  • 深入对比:Transformer与LSTM的详细解析
  • lsof 命令
  • F5G城市光网,助力“一网通城”筑基数字中国
  • Ownips+Coze海外社媒数据分析实战指南
  • C#操作MySQL从入门到精通(10)——对查询数据进行通配符过滤
  • 厘米级精确定位,开启定位技术新时代
  • docker 存储 网络 命令
  • 【MATLAB源码-第222期】基于matlab的改进蚁群算法三维栅格地图路径规划,加入精英蚁群策略。包括起点终点,障碍物,着火点,楼梯。
  • 百度ERNIE系列预训练语言模型浅析(4)-总结篇
  • Ubuntu 20.04 LTS配置JDK、Git