容器技术面试题(1)虚拟化
1.1 虚拟化技术与虚拟机是什么?
虚拟化是抽象计算机资源的技术,让同时运行在计算机上的多个进程以为自己独占操作系统资源。虚拟化是云计算的重要技术,主要用于物理资源的池化,从而弹性的分配给用户。虚拟化技术可以提高 IT 敏捷性、灵活性和可扩展性,同时大幅节约成本。
虚拟机是一种严密隔离且内含操作系统和应用的软件容器,将多台虚拟机放置在一台计算机上,可以实现单台物理机上运行多个操作系统和应用。Hypervisor(虚拟机监视器)可将虚拟机与主机分离开来,根据需要为每个虚拟机动态分配计算资源。虚拟机也有几个明显的劣势:
(1)争用资源:如果其中一个虚拟机负担过重,可能会影响运行在同一物理服务器上的其他虚拟机。如果对CPU周期、内存和带宽等资源的争用是一个长期存在的问题,则唯一可行的解决方案就是需要更强大的硬件来同时托管多个虚拟机(VM)。
(2)性能问题:即使有足够的资源,某些工作负载在虚拟机(VM)上的性能也可能不如在专用硬件服务器上运行时那样好。
(3)扩大故障面:如果某个业务的虚拟机应为应用故障影响到虚拟机的系统,比如硬盘损坏,虽然一般情况恢复出绝大部分文件,但如果碰巧坏的是虚拟机镜像文件,结果虚拟机里面的文件全军覆没。
(4)移植性较差:虚拟机在不同的虚拟机管理器或者云平台之间的迁移比较困难。
1.2 半虚拟化和全虚拟化的区别是什么?
半虚拟化是需要更改系统内核才得以实现虚拟化,而完全虚拟化是不需要修改内核。
完全虚拟化能够通过创建出的全新虚拟系统来使底层物理系统实现全部抽象化,完全虚拟化的计算效率要比硬件模拟更高。由于 Hypervisor(虚拟机监视器)的使用,在性能上要逊色于纯虚拟机。完全虚拟的最大优势在于不需要对其操作系统进行任何改动,只需要对基础的硬件进行支持即可。
半虚拟化要求客户端 OS在虚拟机上运行,以全虚拟化为基础新添一个能够优化客户端0S指令的API系统 ,极大地减轻了Hypervisor的工作量,快速实现底层硬件的访问。
1.3 说说容器化与虚拟化的区别?
虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
容器化是操作系统级别的虚拟化,它只是模拟计算机的操作系统,不会模拟整个物理机器。多个应用程序可以共享同一OS内核。容器扮演着与虚拟机相似的角色,但是没有硬件虚拟化。它的目的和虚拟机一样,都是为了创造隔离环境,但是虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。
1.4 容器化技术的底层原理是什么?
容器本质上只是 Linux 上运行的特殊的进程,它和操作系统上的其他进程环境进行了隔离,就像一个集装箱一样,在容器里面只能看到它本身。容器技术的基础是 Linux 的 namespace 和 cgroups 内核特性。Namespace 可以让一个进程运行在独立的命名空间中,命名空间里的进程和系统进程相互隔离,不同命名空间中的进程之间相互隔离。隔离的特性确保了不同容器进程互不干扰,拥有各自独立的运行环境。
本文链接:https://www.codingbrick.com/archives/1279.html
特别声明:除特别标注,本站文章均为原创,转载请注明作者和出处倾城架构,请勿用于任何商业用途。