虚拟化

Virtualbox源码分析16 APIC虚拟化1 APIC概念和初始化

♀尐吖头ヾ 提交于 2020-02-06 18:08:57
说明: APIC我其实也理解的不是特别明白,只是从网上找些资料和阅读源码理解,如果有错误,麻烦在下面评论里指出。 虚拟化有个重要的功能: APIC虚拟化,本章重点介绍这个功能 中断是什么 一般来说,中断主要是由一些硬件设备产生的,表示这些硬件有一些重要的事件需要通知处理器,比如某些从外部设备请求的数据准备好了,需要通知处理器对其进行读取等。当然这里所谓的“一般来说”是指也可以通过软件的方式来触发中断,比如调用 INT n 指令,当然这种方式产生的中断和通过意见产生的中断最终的处理方式会有很大的不同。 因此从种类来分,可以将中断分为通过硬件产生的外部中断(External interrupt)和通过软件产生的软件中断(Software interrupt)。不管是外部中断还是软件中断,每个中断都有一个中断号与之对应,对于外部中断来说,可使用的中断号范围从16到255(0到15)为系统预留的中断号,而对于软件中断来说,可使用的中断号为0到255。除此之外,16到255范围内的中断是可以通过EFLAGS中的 IF flag 进行disable的,如果EFLAGS中的 IF flag 被清零,则表示当前CPU不接受这个范围内的中断,如果其被置为1,则表示当前CPU可以正常处理这个范围内的中断。 中断是如何被发送给CPU的? 中断在进入CPU之前,首先会进入一个被称为Advanced

VMware ESXI5.5开启嵌套虚拟化

旧街凉风 提交于 2020-01-27 01:02:36
VMware 默认不支持嵌套虚拟化功能,需要修改相关配置文件才能支持 1、Esxi主机开启ssh,修改 /etc/vmware/config 配置文件,在配置文件后面加入如下配置:vhv.enable = "TRUE" ,然后重启ESXI主机。 2、关闭虚拟机,修改虚拟主机vmx配置 3、在配置文件最后一行添加vhv.enable="TRUE" 4、修改前后虚拟机的对比,cat /proc/cpuinfo 修改前:没有vmx或者svm的标志,说明CPU不支持虚拟化 修改后: 来源: CSDN 作者: JetBrains_孙健 链接: https://blog.csdn.net/sj349781478/article/details/103687082

linux虚拟化之docker虚拟化---docker中容器之间的跨主机通信

≯℡__Kan透↙ 提交于 2020-01-25 10:42:28
使用overlay的方法使不同主机中的容器进行通信 //关闭selinux(设置成宽容模式) //使用consul镜像,运行consul服务 docker run - d - p 8500:8500 - h consul -- name consul -- restart=always progrium / consul - server - bootstrap -h:hostname -server:代表server端, -bootstrap: 自选举为leader //需要说明一下,consul服务可以理解为数据中心,他可以收集不同主机上的ip或者端口等信息。 //修改docker的配置文件,以3台主机为例,目的是加入集群。 vim / usr / lib / systemd / system / docker . service //重启docker systemctl daemon - reload systemctl restart docker . service //可以进行验证:访问8500端口,会出现以下页面 //创建一个新的网络,类型为overlay网络。 docker network create - d overlay ov_net1 -d: 指定网络类型 //查看一下会发现新增了一个overlay类型的网络,网络范围是全局性的网络

Virtualbox源码分析5:VMM虚拟化实现源码分析2

左心房为你撑大大i 提交于 2020-01-14 09:16:11
Virtualbox源码分析5:VMM虚拟化实现源码分析2 4.2 VMX R0部分代码 4.2.1 VMX初始化代码 R0 VMM初始化入口在HMR0.cpp里的HMR0Init() VMMR0_INT_DECL ( int ) HMR0Init ( void ) { uint32_t fCaps = 0 ; int rc = SUPR0GetVTSupport ( & fCaps ) ; if ( RT_SUCCESS ( rc ) ) { if ( fCaps & SUPVTCAPS_VT_X ) { rc = hmR0InitIntel ( ) ; if ( RT_FAILURE ( rc ) ) return rc ; } else { Assert ( fCaps & SUPVTCAPS_AMD_V ) ; rc = hmR0InitAmd ( ) ; if ( RT_FAILURE ( rc ) ) return rc ; } } rc = RTMpNotificationRegister ( hmR0MpEventCallback , NULL ) ; AssertRC ( rc ) ; rc = RTPowerNotificationRegister ( hmR0PowerCallback , NULL ) ; AssertRC ( rc ) ; }

TungstenFabric+K8s轻松上手丨通过Kubernetes命名空间实现初步的应用程序隔离

橙三吉。 提交于 2020-01-14 00:31:01
本文所有相关链接pdf: https://163.53.94.133/assets/uploads/files/tf-ceg-case3.pdf Kubernetes命名空间是“虚拟化”Kubernetes集群的一种内置方式。虽然目前尚无人讨论如何使用命名空间以及在何处使用命名空间,但是如果没有网络范围内的命名空间隔离能力,集群虚拟化将无法完成。 Tungsten Fabric Kubernetes CNI插件包括对isolated命名空间的支持。部署到隔离的命名空间中的应用程序无法访问其所在的命名空间之外的任何Pod,其他命名空间的应用程序也无法访问它的Pod和Services。 使用场景 一种Kubernetes的部署方法,是每个开发团队部署单独的Kubernetes集群,在这种情况下,集群虚拟化和命名空间隔离几乎没有好处。 但是,由于未使用的容量是零散的,因此该方法可能导致资源使用效率低下。每个集群都有自己的可用容量,其他集群中运行的应用程序无法使用这些可用容量。此外,随着集群数量的增加,它引入了保持统一所需要的操作开销。最后,启动新集群需要花费时间,这可能会使事情变慢。 命名空间是解决这些问题的好方法,因为这有助于减少集群的数量,共享备用容量并且可以快速创建。这还可以提供一个隔离级别,基础架构团队将负责集群的管理,而各个开发人员团队则在自己的命名空间中进行操作。

linux虚拟化之docker虚拟化---docker的安装

☆樱花仙子☆ 提交于 2020-01-14 00:15:58
docker的安装 第一种方法,官网下载 docker可以去官网下载http://docker.com 但是,这个方法下载速度不尽如人意,从外国下载,你懂的。。。仅供参考 就是下面这条指令 yum install docker - ce docker - ce - cli containerd . io 其实就是这个路径 配置一个yum源 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 第二种方法,从阿里云下载 不只是阿里云。网易云,清华大学镜像站等等都可以的 //找到这个,点进去 为了大家更快的安装,我已经把指令都整理好了 yum install - y yum - utils device - mapper - persistent - data lvm2 yum - config - manager -- add - repo https: / / mirrors . aliyun . com / docker - ce / linux / cento 到yum源的目录下/etc/yum.repos.d/,可以查看一下 yum repolist #加载一下yum源 yum makecache #做个缓存,可以不做 //查看可用的docker版本 yum list docker - ce .

The Road to SDN: An Intellectual History of Programmable Networks (五)

谁说我不能喝 提交于 2020-01-11 23:36:17
3. Network Virtualization 单词学习 翻译 In this section, we discuss network virtualization, a prominent early “use case” for SDN. Network virtualization presents the abstraction of a network that is decoupled from the underlying physical equipment. Network virtualization allows multiple virtual networks to run over a shared infrastructure, and each virtual network can have a much simpler (more abstract) topology than the underlying physical network. Forexample, a Virtual Local Area Network (VLAN) provides the illusion of a single LAN spanning multiple physical subnets, and multiple VLANs can run

手把手教你搭建Oracle Secure Global Desktop演示环境

岁酱吖の 提交于 2020-01-07 09:52:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 你可以在 这里 找到原文。 前提条件 已经安装和配置好下列OS环境: Oracle Linux 6.5 64bit Hostname: sgd.example.com IP: 192.168.56.110 已经配置好一个可用的Yum源。 本例使用了一个本地FTP( ftp://192.168.56.254/pub/iso )作为Yum源。而且,SGD的安装包已经下载好,重命名为 SGD5.2forLin.zip ,同时上传到这个FTP上( ftp://192.168.56.254/pub/SGD5.2forLin.zip )。 所有的安装操作都是以root用户来进行的。 安装前设置 修改 /etc/hosts 文件,在末尾加入IP与主机名的映射。 [root@sgd ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.56.110 sgd sgd.example.com 关闭防火墙: [root@sgd ~]#

Docker面试题

放肆的年华 提交于 2019-12-30 23:21:40
一、什么是虚拟化? 虚拟化允许在同一硬件上运行两个完全不同的操作系统,每个客户操作系统都经历了引导,加载内核等所有过程。可以拥有非常严格的安全性! 可以基于虚拟化方法如何模仿客户操作系统的硬件并模拟客户操作环境来对虚拟化方法进行分类。 主要有三种类型的虚拟化: 仿真; 半虚拟化; 基于容器的虚拟化; 二、docker与虚拟机有何不同? docker不是虚拟化方法,它依赖与实际实现基于容器的虚拟化或操作系统及虚拟化的其他工具。为此,docker最初使用LXC驱动程序,然后移动到libcontainer现在重命名为runc。Docker主要专注于在应用程序容器内自动部署应用程序。应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进程,如虚拟机。因此,Docker被视为容器化系统上的容器管理或应用程序部署工具。 主要表现在以下几个方面: 与虚拟机不同,容器不需要引导操作系统内核,因此可以在不到一秒的时间内创建容器。此功能使基于容器的虚拟化比其他虚拟化方法更加独特和可取; 由于基于容器的虚拟化为主机增加了很少或没有开销,因此基于容器的虚拟化具有接近本机的性能; 对于基于容器的虚拟化,与其他虚拟化不同,不需要其他软件; 主机上的所有容器共享主机的调度程序,从而节省了额外资源的需求; 与虚拟机映像相比,容器状态(Docker或LXC映像)的大小很小,因此容器映像很容易分发;

网络虚拟化

徘徊边缘 提交于 2019-12-28 13:40:42
介绍 https://segmentfault.com/a/1190000004059167 在专业的网络世界中,经常使用到Virtual Routing and Forwarding(VRF),比如Cisco,Alcatel-Lucent, Juniper 等。对于L2 switch,自从上世纪90年代就开始使用VLAN,一个物理交换机上可以使用多个广播域,如今大多数交换机都支持4K vlan。 这个概念被引入到L3,如今很多网络设备支持VRF。这意味着,单个物理设备上可运行多个虚拟路由(L3 转发实例)。 在linux中,VRF被叫做“network namespace”。 每个network namespace拥有其对应的路由表(routing table)& 其对应的iptables,并且运行程序运行其中。 为什么有人使用它?比如一个运行在linux上的 Firewall,将firewall的所有服务端口分配给一个network namespace,这样,默认的network namespace 和 Firewall network namespace就运行着不同的路由表。像SSH这样的application运行在默认的network namespace,但是不在Firewall network namespace。 下面展示了其基本用法。 Basic network