运维工程师面试题总结-虚拟化技术与KVM企业级应用14

简介: 个人学习

1. 为什么要用虚拟化

充分利用物理资源,提供冗余性、向云计算演进的必要基础。

2. CPU虚拟化

CPU的虚拟化本质上是时间分片。这里我们用的是KVM来虚拟的。

流程如下: QEMU调用ioctl进入内核,内核读取VMCS,(这里先解释下VMCS,VMCS是异常处理的关键结构,里面存储了 客户机,宿主机,陷入退出的各种状态。)把客户机的状态装在到CPU的CS:EIP,然后执行 kvm_exit_handler. 如果是IO引起的,则进入用户模式,执行QEMU

3. 内存虚拟化

一般的内存虚拟化都经过了两次的页表转换。 客户机线性地址到 客户机物理地址, 然后再到宿主机物理地 址。 这样经过了两次转换,效率很难提高。于是就出现了影子页表。

这里就不得不说影子页表了。 这里有一张hash表,维护者物理机和客户机的内存地址映射表。 那么如何被建 立的呢?

当发生页故障的时候,VMM搜索客户页表,如果不存在客户线性地址VGA 到 客户机物理地址 GPA的转换,那 么则返回给虚拟机异常,由虚拟机处理页故障。

如果存在映射关系,则先去寻找QEMU地址空间的主机线性地址 HVA, 如果不存在 HVA 映射到 HPA, 那么 kernel 去分配物理地址。 然后VMM可以使用该HPA构建影子页表。 至此,影子页表建立完成。

4. 磁盘使用raw/qcow2有什么区别

raw不支持快照但性能好,常用的是qcom2支持快照,性能相比差一点。

5. kvm和Xen有何区别?

Xen是一个外部的hypervisor程序(虚拟机管理程序);它能够控制虚拟机和给多个客户机分配资源. 另一方 面, kvm是linux的一部分, 可使用通常的linux调度器和内存管理. 这意味着kvm更小更易使用. 另一方面, Xen同时支持全虚拟化和半虚拟化(修改过的客户机能有更好的性能). kvm当前不支持半虚拟化

6. 如果对一个VM进程使用kill -9将会发生什么?

从客户机的角度来看, 就如你猛地把电源线从主机上拔出一样. 从主机的角度来看, 进程被杀掉, 进程占用的所有资源被施放

7. kvm各模式说明

有三种模式:用户模式,内核模式,客户模式。 QEMU运行在用户模式,用户模式就是一般意义上运行的进程的模式,QEMU调用一系列的ioctl就可以进入内核模式,这里内核模式再调用kvm_create等函数就可以进入客户模式,客户模式也就是虚拟机运行的模式。

但是如果虚拟机出现了异常或者常见的缺页中断或者IO操作的时候呢,他是没有权限对全局资源进行操作的, 这样就会被VMM,这里也就是KVM进行捕获,然后捕获之后呢再跳转到用户模式调用QEMU进行IO操作。所以说内核模式其实是个中间变量,专门用来进行错误发现的时候的转换的。

8. kvm框架包含哪些

KVM 分为了两个模块,一个是KVM Driver, 另一个是QEMU。前者负责CPU和内存的虚拟化,后者负责IO的 虚拟化。用户空间的QEMU调用一系列的ioctl() 函数进入内核空间,然后内核控件再调用一系列函数进入 Guest OS客户空间运行虚拟机

9. kvm的三个组件及作用

libvirt(用来管理虚拟机)、virt(安装和克隆虚拟机)、qemu(管理虚拟机磁盘的)

10. 简述kvm的几种模式

有三种模式:用户模式,内核模式,客户模式。 QEMU运行在用户模式,用户模式就是一般意义上运行的进程 的模式,QEMU调用一系列的ioctl就可以进入内核模式,这里内核模式再调用kvm_create等函数就可以进入 客户模式,客户模式也就是虚拟机运行的模式。

但是如果虚拟机出现了异常或者常见的缺页中断或者IO操作的时候呢,他是没有权限对全局资源进行操作的, 这样就会被VMM,这里也就是KVM进行捕获,然后捕获之后呢再跳转到用户模式调用QEMU进行IO操作。所以说 内核模式其实是个中间变量,专门用来进行错误发现的时候的转换的。

11. kvm如何做CPU虚拟化

CPU的虚拟化本质上是时间分片。这里我们用的是KVM来虚拟的。流程如下:

QEMU调用ioctl进入内核,内核读取VMCS,(这里先解释下VMCS,VMCS是异常处理的关键结构,里面存储了 客户机,宿主机,陷入退出的各种状态。)把客户机的状态装在到CPU的CS:EIP,然后执行  kvm_exit_handler. 如果是IO引起的,则进入用户模式,执行QEMU

12. 如何对KVM的I/O优化

调优kvm的I/O调度算法,centos7默认的是deadline,使用命令将参数改为noop并查询,将以上的命令和 查询结果以文本形式提交到答题框。

[root@localhost ~]# cat /sys/block/vda/queue/scheduler  

[root@localhost ~]# echo noop > /sys/block/vda/queue/scheduler  

[root@localhost ~]# cat /sys/block/vda/queue/scheduler

13. 如何对KVM内存调优

Kvm大页:所谓的大页指的是内存的大页面,内存采用的是分页机制,内存默认的页面大小都是4KB,假如系统 里的一个应用程序需要2MB的内容,如果操作系统还是以4KB小页为单位,那么内存里就要有512个页面 (512*4KB=2M),所以在TLB里就需要512个表项以及512个页表项,因此操作系统就要经历512次的TLB  miss和512次的缺页中断才能将2MB的应用程序空间全部映射到物理内存里。必然操作数量会大大增加,从而 间接的影响性能。

使用cat命令,只查看当前系统有多少大页,然后设置大页数量为20并查看,接着使用命令使配置永久生效, 最后将大页挂载到/dev/hugepages/上。将上述所有命令和返回结果以文本形式提交到答题框。

[root@localhost ~]# cat /proc/meminfo | grep HugePages

[root@localhost ~]# echo 20 >/proc/sys/vm/nr_hugepages

[root@localhost ~]# cat /proc/meminfo |grep Hugepages

[root@localhost ~]# sysctl -w vm.nr_HugePages=20

[root@localhost ~]# mount -t hugetlbfs huagetlbfs /dev/huagepages/

如果想上手操作的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买


目录
相关文章
|
6天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
31 1
|
4天前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
1天前
|
运维 Linux 程序员
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
|
1天前
|
运维 关系型数据库 MySQL
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
|
1天前
|
运维 监控 Linux
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经(1)
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经(1)
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经(1)
|
1天前
|
运维 Linux Docker
【运维面试100问】(一)打包了一个镜像推送上去harbor,推不上是什么原因
【运维面试100问】(一)打包了一个镜像推送上去harbor,推不上是什么原因
【运维面试100问】(一)打包了一个镜像推送上去harbor,推不上是什么原因
|
1天前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
1天前
|
运维 网络协议 Linux
2024年最全CentOS8 Consul微服务架构安装(1)_agent(1),Linux运维开发面试
2024年最全CentOS8 Consul微服务架构安装(1)_agent(1),Linux运维开发面试
|
4天前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
|
4天前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》