虚拟化
什么是Hypervisor?
A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.
为什么Hypervisor很重要
1 型虚拟机监控程序直接运行在硬件上;KVM 的特殊之处在于它是以 Linux 内核模块形式实现的 1 型虚拟机监控程序,这使其可以使用整个 Linux 驱动程序生态系统。
Hypervisor的实际应用
当你在 KVM 虚拟机管理程序上运行服务器时,你需要关注实际硬件分配:vCPU、内存、磁盘 I/O。你可以从面板调整这些参数,通常添加内存无需重启即可热插拔。如果过度分配宿主机资源,邻居的高负载工作负载会抢占你实例的 CPU 或 I/O,使配置完善的客户机变得迟缓。嵌套虚拟化意味着你可以在虚拟机管理程序内部再运行一个虚拟机管理程序,方便测试,但会牺牲性能,也可能干扰你自己的资源统计。
人们对Hypervisor常见的误解
常见的错误是把虚拟机监控程序当作容器边界。它不是。虚拟机监控程序提供的是完整的虚拟机、独立的内核、独立的 /proc,没有共享命名空间。人们以为邻居的进程不可见,或者自定义内核不可能实现,然后就会遇到限制。更正:使用 KVM,你获得真正的隔离和控制,因此可以启动手工打造的镜像或运行嵌套虚拟化,这些是容器无法做到的。
Hypervisor —— 常见问题
类型 1 虚拟机监控程序是什么意思?
类型 1 虚拟机监控程序直接运行在宿主机硬件上,而不是在操作系统之上。KVM 的特殊之处在于,它是作为 Linux 内核模块实现的类型 1 虚拟机监控程序,因此可以利用整个 Linux 驱动生态系统来管理硬件。这样既拥有裸机虚拟化的性能,又具备 Linux 的灵活性。
KVM 与 OpenVZ 等容器有何不同?
KVM 提供真正的虚拟化:每个客户机都有自己的内核、自己的 /proc,且没有共享命名空间,因此你拥有完整 root 权限,可以运行自定义内核。容器共享宿主内核和命名空间,限制了你能做的事情。使用 KVM,你获得隔离和控制,包括运行嵌套虚拟化或启动自定义 ISO 的能力。
Hypervisor在哪些地方出现
- 在VPS上使用全盘加密有用吗? 对于物理夺取已关机磁盘的情况,答案是肯定的:没有你的口令,卷就是密文。对于能够访问运行中的管理程序的攻击者,答案是否定的——密钥在主机可以读取的内存中。任何声称其他情况的提供商都是在夸大其词,而这一区别正是关键。…
- 你们的正常运行时间SLA是多少? 每个实例的可用性为99.99%,按月测量网络和虚拟机管理程序可用性。违约将按公布的等级自动获得服务积分:低于99.99%为10%,低于99.9%为25%,低于99.5%为50%,低于99%为100%。过去十二个月整个机队的观察可用性为99.993%。…
- 我的托管提供商能看到我VPS上的文件吗? 技术上可以:任何拥有管理程序访问权限的提供商都能读取未加密的客户机磁盘及其内存。这对所有虚拟化平台都是如此。不同的只是他们是否这样做、政策是否禁止,以及由你密钥控制的全盘加密是否在实例关机时使存储的数据无法读取。…
- 什么是CPU窃取时间,为什么它很重要? 窃取时间是您的虚拟CPU已准备运行但管理程序将物理核心给了其他人的百分比。它作为top中的“st”列出现。任何持续高于2–3%意味着您在竞争核心,这是共享vCPU实例上无法解释的延迟尖峰的常见原因。…
- VPS安全吗? 隔离是强大的:KVM在硬件层面强制分离,逃逸是严重的研究级漏洞。现实风险不是虚拟机管理程序——而是您的配置。密码SSH、未修补的软件和被遗忘的开放服务占据了真实世界攻击的所有原因。…
- 托管与自管 VPS:谁负责修补服务器? 在自管 VPS 上,供应商保证硬件、网络和虚拟机监控程序;内核以上的所有内容(包括更新、防火墙和备份)都由您负责。托管 VPS 则增加了管理服务,但价格是前者的两到五倍。如果您熟悉终端操作,自管是正确的默认选择;如果您这边没有人会应用安全更新,则反之。…
更多来自虚拟化
- KVM
- KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
- OpenVZ
- OpenVZ 是基于容器的虚拟化技术,每个实例共享主机内核,因此客户机无法加载内核模块或运行不同的操作系统。
- LXC
- LXC 是 Linux 原生的容器化技术,通过命名空间和 cgroups 隔离进程,同时共享主机内核。
- 嵌套虚拟化
- 嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
- vCPU
- vCPU是呈现给客户机的虚拟处理器,由物理核心或线程上的调度时间提供支持。
- cloud-init
- cloud-init是使用平台提供的元数据在首次启动时配置虚拟机的标准机制。