Merge branch 'dev' into dev-moshengren

This commit is contained in:
陌生人 2025-05-15 12:05:37 +08:00
commit 468d88eabe
7 changed files with 158 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -44,4 +44,19 @@ cp /etc/source.cpp /home/
```bash
cat file1.txt file2.txt > file.txt
```
```
7. 快速查找家目录下占用大量空间的文件和目录
```bash
sudo apt install ncdu
```
完成安装后,执行命令
```bash
ncdu /home/你的用户名
```
例如,我的用户名是 test ,运行 ncdu /home/test后结果如下
![输入图片说明](assets/%E5%B8%B8%E7%94%A8%E7%9A%84%E7%BB%84%E5%90%88%E5%91%BD%E4%BB%A4/ncdu%E5%91%BD%E4%BB%A4%E7%A4%BA%E4%BE%8B.png)
用方向键进行导航,回车进入下一级目录,按 d 可删除文件 q 退出 (更多用法请执行 man ncdu 进行查看

View File

@ -0,0 +1,141 @@
---
title: 虚拟化技术简介
description: 对虚拟化技术进行了简要介绍
published: true
date: 2024-10-14T08:22:46.338Z
tags:
editor: markdown
dateCreated: 2024-10-14T06:04:02.696Z
---
# 什么是虚拟化?
在《系统虚拟化——原理与实现》一书中,对虚拟化有如下阐释:
> 抽象来说,虚拟化是资源的逻辑表示,它不受物理限制的约束。具体来说,虚拟化技术
> 的实现形式是在系统中加入一个虚拟化层,虚拟化层将下层的资源抽象成另一形式的资
> 源,提供给上层使用。通过空间上的分割、时间上的分时以及模拟,虚拟化可以将一份
> 资源抽象成多份。反过来,虚拟化也可以将多份资源抽象成一份。
从上可知,虚拟化是资源的逻辑表示。这里的资源,既可以是磁盘、网络、文件系统等系
统组件,也可以是完整的计算机系统。对于后者,我们常常称之为系统虚拟化,也是最常
见的一种虚拟化形式。
# 系统虚拟化
系统虚拟化是指将一台物理计算机系统虚拟化为一台或多台虚拟计算机系统。系统虚拟化
是虚拟化技术中的一种,其抽象的粒度是整个计算机。
位于物理计算机与虚拟计算机之间的虚拟化层可称之为虚拟机监控器英文为Virtual
Machine MonitorVMM或Hypervisor。
由于虚拟计算机寄生于物理计算机上,通常又将虚拟计算机称为客户机,将物理计算机称
为宿主机。
## 系统虚拟化的优势
- **封装性**:以虚拟机为粒度进行封装,可方便的实现虚拟机的快照、克隆、挂起、恢
复等功能。
- **多实例**:在一个计算机上运行多个虚拟机,资源调度更优化,利用更充分。
- **隔离性**:虚拟机独立运行,互不影响。
- **硬件无关性**:与物理硬件解耦,方便迁移。
- **特权功能**VMM具有比虚拟机更高的特权可监控虚拟机动态实现事件记录和回
放、入侵检测、病毒检测等。
## 系统虚拟化与容器的区别
容器也属于广义上的操作系统层的虚拟化,但与系统虚拟化隔离的组件不一样(内核、设
备)。
![系统虚拟化与容器虚拟化](assets/container-vs-virtualization.png)
## Type1与Type2虚拟化
Type 1和Type 2管理程序之间的主要区别是Type 1在裸机上运行而Type 2在操作系统
上运行。
![Type1与Type2虚拟化](assets/type1-vs-type2.png)
## 全虚拟化与半虚拟化
这里的“全”和“半”是指是否完全模拟了硬件环境。
对于全虚拟化,其完全模拟了整个硬件环境,虚拟机操作系统感知不到其位于虚拟环境
中,因而具有兼容性好,移植性强等特点。
对于半虚拟化,其某些虚拟设备并不是安全按着对应的物理设备进行模拟的,因而需要
修改操作系统内的设备驱动,才能正确识别或访问设备。半虚拟化由于不用死板的模拟
物理硬件的行为(比如寄存器访问、硬件交互协议等),因而在实现逻辑上便存在很大
的优化空间,所以一般性能较好。
## 纯软件虚拟化与硬件辅助虚拟化
纯软件虚拟化, 顾名思义, 就是用纯软件的方法在现有的物理平台上(往往并不支持
硬件虚拟化) 实现对物理平台访问的截获和模拟。常见的软件虚拟机例如QEMU它是
通过纯软件来仿真X86平台处理器的取指、解码和执行客户机的指令并不在物理平台
上直接执行。由于所有的指令都是软件模拟的,因此性能往往比较差,但是可以在同一
平台上模拟不同架构平台的虚拟机。
硬件辅助虚拟化,简而言之,就是物理平台本身提供了对特殊指令的截获和重定向的硬
件支持,甚至,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,
从而提升性能。
综合来说,硬件辅助虚拟化的性能大大优于纯软件虚拟化,是未来虚拟化的主要方向。
# 虚拟化的实现
## KVM简介
基于内核的虚拟机KVM是一种内建于Linux的开源虚拟化技术。具体而言KVM
可将Linux转变为虚拟机监控程序使主机计算机能够运行多个隔离的虚拟环境
虚拟客户机或虚拟机VM
KVM是Linux的一部分。Linux 2.6.20或更新版本包括KVM。KVM于2006年首次公
并在一年后合并到主流Linux内核版本中。由于KVM属于现有的Linux代码
此它能立即享受每一项新的Linux功能、修复和发展无需进行额外工程。
KVM将Linux转变为1类裸机虚拟机监控程序。所有虚拟机监控程序都需要一些
操作系统层面的组件才能运行虚拟机,如内存管理器、进程调度程序、输入/输出I/O
堆栈、设备驱动程序、安全管理器以及网络堆栈等。由于KVM是Linux内核的一部分
因此它包含了所有这些组件。每个虚拟机都像常规Linux进程一样实施由标准的Linux
调度程序进行调度并且使用专门的虚拟硬件如网卡、图形适配器、CPU、内存和磁
盘等。
## QEMU简介
> QEMU is a generic and open source machine emulator and virtualizer.
> —— https://www.qemu.org/
QEMU是一款开源的虚拟机软件它可以模拟多种不同的硬件平台包括x86、ARM、MIPS、
SPARC等支持多种操作系统的运行如Linux、Windows、Mac OS X、FreeBSD等。QEMU
可用于虚拟化、仿真、调试和测试等多种应用场景。QEMU能够将一台物理主机模拟成多
台虚拟机为用户提供了一个隔离的环境来运行不同的应用程序和操作系统。QEMU是一
个轻量级的虚拟机软件,易于安装和配置,并且具有良好的可移植性和跨平台性。
QEMU有多种使用方式
- 系统模拟System Emulation
提供完整的、模拟的计算机系统来运行客户机OS。CPU可以是纯模拟的也可以直接使用
宿主机CPU可搭配KVM、Xen等使用。
- 用户模式模拟User Mode Emulation
可直接在系统中运行另一架构的二进制程序这种模式下CPU是纯模拟的。
## KVM/QEMU虚拟化方案
KVM/QEMU虚拟化方案很好的结合了KVM和QEMU各自的优点在该方案中
- KVM主要负责CPU、内存的虚拟化
- QEMU主要负责设备的虚拟化
它们的组合,很好的解决了之前存在的一些问题,比如:
- KVM只提供了虚拟机管理接口需要用户空间程序的配合才能完成虚拟机的管理无法
独立使用
- KVM不能模拟外设但QEMU已支持了大量的外设
- QEMU的模拟CPU模式效率低下
# 参考资料
- https://www.redhat.com/zh/topics/virtualization/
- https://tecadmin.net/type-1-vs-type-2-virtualization/

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

View File

@ -190,4 +190,4 @@ Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
```bash
sudo passwd root
```
注意事项请牢记root密码并不要轻易向他人透露root密码在root用户下操作需谨慎
注意事项请牢记root密码并不要轻易向他人透露root密码在root用户下操作需谨慎