Linux虚拟化技术(第49天)
操作系统原理
库:库是对系统调用的封装
用户态和内核态
x86指令分4层:ring0,ring1,ring2, ring3
MMU:内存管理单元,主要用于内存分页
寄存器:cpu内部保持数据的元器件
cpu缓存:一级缓存,二级缓存,三级缓存
IO设备:包括控制器和设备
控制器:集成在主板上的芯片
驱动程序:通常由设备生产商提供
每个控制器都集成少量的用于通信的寄存器:内核调用驱动程序进行读写操作,驱动程序会操作控制器对设备进行读写。
IO端口空间:所有IO设备的控制器上的寄存器集合,每一个寄存器表现为一个IO端口,被映射到内存中,每一个IO端口的都有一个独立的地址
中断:主板上的可编程中断控制器
中断号:IO设备的控制器在系统启动时要向中断控制器注册一个中断号,当IO设备有读写请求时,向中断控制器发出中断请求,中断控制器通知CPU,CPU发起中断切换。
中断分为中断上部,中断下部。
中断上部:将IO设备缓存中的内容copy到内核内存中
DMA:直接内存访问,完成中断上部。
虚拟地址
物理地址
虚拟化技术:
将计算机资源分割
cpu的虚拟化的技术:模拟和虚拟
模拟:软件模拟,emulation,宿主机架构和guest架构可以不一样,必须模拟出来ring0, ring1, ring2,ring3
虚拟:virtualization,guest并不知自己运行于虚拟机中,必须模拟出来一个特权环境,各guest内核运行于宿主机的ring1,当guest主机运行特权指令时候可以进行二进制翻译,把指令翻译为宿主机的特权指令运行之。
HVM:硬件辅助虚拟化技术:intel vt技术
宿主机运行于ring-1级,各guest用户态进程运行于ring3, guest内核态运行于ring0。
半虚拟化技术:para-virtualization
在硬件上运行hypervisor,也就是vm monitor,hypervisor直接管理硬件,hypervisor虚拟一层hyper call, 各guest的内核进程可以直接调用hyper call。各guest的内核必须做相应的调整,才能适配对hyper call的调用,所以guest是知道hyper call的存在的
Memory的虚拟:
intel EPT技术:extended page table,MMU的虚拟化
TLB的虚拟化:tagged TLB
IO设备虚拟化:模拟,半虚拟化,IO-through(IO透传)
模拟:完全使用软件来模拟真实硬件
半虚拟化:
IO-through:guest直接使用硬件
主机虚拟化的实现方式:type-I type-II
type-I:硬件上安装hypervisor,hypervisor安装各个guest:
xen
vmware ESX
type-II:硬件上装一个宿主机,宿主机装虚拟化软件,通过虚拟化软件创建管理各guest
virtualbox
kvm
vmware workstation
Intel硬件辅助的虚拟化:
CPU:vt-x, EPT, targged TLB
IO/CPU:vt-d, vt-x, IOV
模拟:QEMU, virtio
虚拟化技术分类:
模拟:纯软件模拟,guest的内核不需要任何修改
著名模拟器有:PearPC, Bochs, QEMU
完全虚拟化:native virtualization ,两种加速方式:BT(二进制翻译)和HVM
实现有vmware workstation, VMware Server, Parallels Desktop,KVM,Xen(HVM)
半虚拟化:para-virtualization
在硬件上运行hypervisor,guest内核要做修改才能调用hypervisor call
实现有xen, uml(user-mode linux)
OS级别虚拟化:虚拟出多个用户空间,多个用户空间共用同一个内核,一般这些用户空间里运行应用程序,比如httpd,mysqld等
OpenVZ,lxc, docker,Solaris Containers, freebsd jails
库虚拟化:
wine(在linux,macOS平台上虚拟windws类库)
应用程序虚拟化:
jvm, pvm(python vm)
虚拟化网络:软件定义的网络,有桥接,仅主机,地址转换
桥接:宿主机网卡工作于混杂模式,就相当于交换机,宿主机之上的各个guest连接至宿主机的网卡上(因为该网卡已经相当于交换机了)。虚拟出一张网卡接收属于宿主机自己的流量
仅主机:纯软件虚拟出一个交换机,各个guest连接到该虚拟交换机。比如vmware workstation安装后创建的VMnet1
地址转换(nat):软件虚拟出一个交换机,各个guest连接到该虚拟交换机。guest向外通信时将数据包的源地址转换为宿主机的源地址,外部主机发送数据包响应guest时,数据包到达时,数据包的目标地址转换为相应的guest的地址。比如vmware workstation创建的的VMnet8
yum install bridge-utils 安装 bridge-utils,桥网络管理工具
brctl --help 查看使用帮助
linux上的虚拟机操作系统 要使用桥接模式时,做法如下:
brctl addbr br0 添加交换机br0
ifconfig eth0 0 up 把eth0的ip地址清空
brctl addif br0 eth0 把eth0和br0设备连接
ifconfig br0 172.16.100.8/16 up 为br0设置原eth0的ip地址
route add default gw 172.16.0.1 为br0设置网关
brctl show 查看所有交换机
评论
发表评论