关于虚拟化:虚拟桌面基础结构VDI和虚拟机技术的区别和联系

<article class=“article fmt article-content”><p>虚构桌面根底构造(VDI)是一种古代的 IT 解决方案,旨在通过虚拟化技术在数据中心或云环境中托管桌面环境。简而言之,VDI 容许用户通过网络从任何地点、任何设施拜访其桌面,这些桌面实际上运行在服务器上的虚拟机中。这种模式提供了极大的灵活性和安全性,因为数据和应用程序实际上存储在核心服务器上,而不是散布在各个终端设备上。</p><p>要深刻了解 VDI,有必要先理解虚拟机(VM)技术。虚拟机是指通过软件模仿的计算机系统,可能在物理硬件上同时运行多个操作系统和应用程序。这是通过虚拟化技术实现的,虚拟化技术容许单个物理服务器宰割成多个隔离的虚拟环境。每个虚拟环境都能够作为独立的计算机,领有本人的操作系统和应用程序。VM 技术是构建 VDI 解决方案的根底。</p><p>VDI 和 VM 技术之间的分割十分严密,VDI 实际上是建设在 VM 技术之上的利用场景之一。VDI 利用虚拟机来创立和治理用户的桌面环境,但与传统的虚拟机部署不同,VDI 更加专一于桌面交付和治理。VDI 解决方案通常包含桌面虚拟化基础设施、连贯协定以及桌面治理和优化工具。</p><p>只管 VDI 和 VM 技术严密相干,但它们服务的目标和利用场景有所不同。VM 技术次要关注于服务器虚拟化,优化硬件资源应用,进步数据中心的灵活性和效率。而 VDI 关注于为最终用户提供一个可从任何中央拜访的、高度可定制和可控的桌面环境。VDI 解决方案能够为近程工作、灵便工作场合、教育培训、安全性要求高的工作环境等场景提供弱小的反对。</p><p>例如,一家跨国公司可能须要为其遍布寰球的员工提供一个对立的工作环境,确保数据安全和合乎各地的法规要求。通过部署 VDI 解决方案,公司能够在中心化的数据中心创立和治理所有的桌面环境,员工无论身处何地,都能够通过互联网安全拜访到本人的虚构桌面。这样既进步了工作效率,也简化了 IT 治理,并且极大加强了数据安全性。</p><p>在另一个场景中,教育机构可能须要为学生提供特定的软件环境进行学习和钻研。通过应用 VDI,学校能够轻松地在虚构桌面上部署和更新这些软件,学生能够通过集体笔记本电脑、平板电脑或其余设施,随时随地拜访这些资源。这种形式不仅升高了 IT 治理的复杂度,也为学生提供了更加灵便和个性化的学习体验。</p><p>VDI 的部署和治理波及多个组件,包含虚拟化平台(如 VMware vSphere 或 Microsoft Hyper-V)、VDI 管理软件(如 VMware Horizon 或 Citrix Virtual Apps and Desktops)、连贯协定(如 PCoIP、HDX 或 RDP)以及客户端设施和接入形式。无效的 VDI 施行须要综合思考网络架构、存储性能、用户需要和安全策略等多个因素,以确保高效、平安且响应迅速的用户体验。</p><p>综上所述,虚构桌面根底构造(VDI)是一种弱小的 IT 解决方案,它通过虚拟化技术在核心服务器上创立、治理和交付用户桌面环境。VDI 和虚拟机技术尽管严密相干,但服务于不同的目标和场景。VDI 提供了一种灵便、平安且高效的形式,以满足古代工作场合日益多样化的需要,无论是近程工作、教育培训还是高安全性要求的场合,VDI 都能提供无效的反对。</p></article>

March 4, 2024 · 1 min · jiezi

关于虚拟化:LXD-虚拟化平台1简介

一、虚拟化技术的简介LXD 是目前市面上泛滥虚拟化的解决方案之一,在开始介绍 LXD 之前,须要对虚拟化技术进行简略的介绍。目前业界的虚拟化个别分为两种解决方案:内核虚拟化与硬件虚拟化。 1.1 内核虚拟化硬件虚拟化字面义了解就是须要硬件设施来反对,须要在服务器上安装虚拟化管理软件(HyperVisor),而后通过 HyperVisor 提供的交互治理界面来创立虚拟机。市面上比拟常见的硬件虚拟化如:VMware、SmartX等。 虚拟机在操作系统层面上和宿主机隔离,领有本人独立的内核,应用上和一般的主机没有任何区别,领有较高的安全性,然而因其独占式的资源应用形式,耗费的资源比拟多,容易产生节约。个别状况下调配的虚拟机资源不能超过宿主机的资源总量(例如CPU或者内存、磁盘容量),否则会引发宿主机解体。 硬件虚拟化须要在主板BOIS零碎开启VE虚拟化反对(Intel主板为 Intel VT,AMD 主板为 AMD-V),能够通过执行以下的命令来查看是否已开启硬件虚拟化: egrep -c '(vmx|svm)' /proc/cpuinfo如果命令执行有输入,即代表反对硬件虚拟化。 留神,硬件的虚拟化技术分为 Type-1 和 Type-2: Type-1 HyperVisor:间接运行在裸金属设施上,在内核空间实现硬件的虚拟化,例如能够间接把 vCPU 绑定到物理 CPU 上进行调配,vCPU 的指令无需通过 CPU 虚拟化的代码进行模仿转换,例如 VMware ESXi、Citrix XenServer 等;Type-2 HyperVisor:运行在操作系统之上,在用户空间实现硬件的虚拟化,常见的如 QEMU、VirtualBox、VMwareWorkStation。在性能上相比 Type-1 较差,然而应用简略、不便。1.2 内核虚拟化内核虚拟化,顾名思义就是通过内核个性来实现虚拟化的操作,内核虚拟化的关键技术是 Cgroup 和 Namespace。Cgroup 负责对虚拟机应用资源的限度(虚拟机能用多少CPU、内存和磁盘容量、磁盘IO速率等),Namespace 负责对虚拟机的视图进行隔离(虚拟机能看到什么不能看到什么),例如 LXC Container、Docker 等就是常见的内核虚拟化解决方案。 Cgroup 和 Namespace 技术细节较多,能够参考 Segmentfault 上的相干材料,例如:https://segmentfault.com/a/1190000040980305Container 和 Docker 不是同一个概念,Container 代表的是容器自身,而 Docker 则是一种实现容器的技术,业界有十分多实现容器的技术,例如 Kata Container、Containerd 等等,切不可把两者一概而论。内核虚拟化和硬件虚拟化相比: 轻量:容器的实质上是一个应用了 Cgroup 和 Namespace 限度的操作系统过程,过程的创立、销毁等效率十分高。高效:内核虚拟化对资源的应用是共享式,能够对宿主机的资源(CPU、内存、磁盘容量、磁盘读写带宽等)进行充沛的利用,特地是磁盘的 IO 性能,例如:硬件虚拟化对磁盘的性能损失是十分重大的,没有通过优化的 KVM 磁盘 IOPS 相比宿主机会降落几十倍到几百倍。便携:容器镜像的大小个别就是操作系统内核+Shell相干程序的大小,几十MB到一百多MB左右,而虚拟机镜像大小动辄数十GB,难以在生产环境疾速部署。危险:内核虚拟化的隔离性相比虚拟机差,没有通过平安配置的容器过程,容易被入侵从而导致宿主机的操作系统被攻打引发安全事故。能够看出,硬件虚拟化和内核虚拟化实用于不同的场景,在许多生产环境上,硬件虚拟化 + 内核虚拟化是搭配应用的,硬件虚拟化用于硬性隔离宿主机的资源,调配多个独立的环境用于多套业务零碎应用;而后在虚拟机上,应用内核虚拟化技术的个性,疾速部署、散发业务程序。 ...

June 12, 2023 · 4 min · jiezi

关于虚拟化:超融合产品集成-Kata-虚拟化容器技术的方案演进-龙蜥技术

编者按:超交融技术交融根底施行为企业用户提供虚拟化、容器等不同状态的服务。明天,浪潮数据超交融云原生工程师王永超带大家理解 Kata 虚拟化容器技术,及超交融产品为集成 Kata 容器而进行技术计划演进历程,也分享了超交融 Kata 容器技术设计与利用。本文整顿自龙蜥大讲堂第 78 期,以下为本次分享内容: 01 超交融产品介绍超交融一体机。整合虚拟机+容器双引擎。 02 Kata Containers 介绍Kata Container 与传统容器比照: Kata 容器具备独立的内核、CPU、内存虚拟机级别隔离。传统容器共享宿主机内核,CPU、内存通过 cgroup 与 namespace 进行限度。 Kata 文件系统工作原理: Kata 运行时,提供精简优化的虚拟机内核及文件系统,如 vmlinuz-5.10.25-87 和 kata-containers-initrd.img 用于创立轻量级虚拟机。容器镜像 rootfs 及容器卷通过 virtiofs 从宿主机绑定到轻量级虚拟机,不便外部容器过程读取 rootfs 系统文件。 03 OCFS 共享存储下容器 Snap 治理Containerd 组件调用关系: Content 用于治理容器镜像 manifest 数据。Image 存储容器镜像各层blob文件。Snapshots 用于解压 Image 各层 blob 文件组装容器实例 rootfs 文件系统。Diff 提供两个接口 Diff 与 Apply。Devmapper Snapshotter 有余: 采纳 Containerd 社区 devmapper snapshotter 运行容器实例,次要问题如下: ...

May 26, 2023 · 1 min · jiezi

关于虚拟化:Android虚拟化技术方案技术评测

前言在目前Android大环境下,虚拟化技术曾经很遍及。对于虚拟化的运行原理,网上文章曾经有一大堆。本篇文章就从实测角度来比照一下各家虚拟化产品技术的差别。 本文波及到Android的相干知识点,我尽量用本人了解的大白话去讲,如有不对请前辈们不吝赐教。 一些术语简称全称解释宿主宿主原利用,即利用自身子利用子利用被运行的利用PMSPackageManagerServiceAndroid中的安装包治理服务AMSActivityManagerServiceAndroid中的利用流动的治理服务NMSNotificationManagerServiceAndroid中的利用告诉治理服务虚拟化是如何运作?对于这个问题网上曾经有N + 1的相似文章,这里有几个能够看一下 https://juejin.cn/post/696467...https://blog.csdn.net/ganyao9...https://juejin.cn/post/702812...通过原理剖析,咱们能够看出,实现虚拟化一个利用,要做的外围事件只有一件:在运行子利用时,坑骗零碎让零碎误以为正在运行的是宿主,否则零碎会毫不犹豫的将你杀死!! 测试的切入点首先此文章技术细节求教了这方面的大佬,再依据我本人对这方面的钻研。现针对以下几个虚拟化“重灾区”进行测验一下,为什么会这样说呢,因为依据虚拟化的技术原理或多或少不可避免的须要对环境进行批改,这里就挑一些比拟典型的点来比照各个框架之间对这些细节的解决。 参加比照的产品有(如有补充能够底下留言,我持续欠缺) 名称官网VirtualApphttps://github.com/asLody/Vir...LBE平行空间http://parallelspace-app.com/...SpaceCorehttps://spacecore.dev/360分身巨匠http://fenshen.360.cn双开助手https://www.multiopen.cn/别离比照一下以下的点: 办法正常值Context#mBasePackageName本身包名Context#mOpPackageName本身包名ActivityThread.H#mCallbacknullActivityThread#mInstrumentationandroid.app.InstrumentationPMS检测android.os.BinderProxy@xxxx测试所用的Demo是轻易写的,目标就是读一下外面的对象其实很简略。子利用包名:com.virtualchecker 检测读取利用:Context#mBasePackageName中的值产品期望值理论值Android零碎com.virtualcheckercom.virtualcheckerVirtualAppcom.virtualchecker❌ io.busniess.vaLBEcom.virtualchecker❌ com.lbe.parallel.intl.arm64SpaceCorecom.virtualchecker✅ com.virtualchecker360分身巨匠com.virtualchecker✅ com.virtualchecker双开助手com.virtualchecker❌ com.exceliance.dualaid读取利用:Context#mOpPackageName中的值产品期望值理论值Android零碎com.virtualcheckercom.virtualcheckerVirtualAppcom.virtualchecker❌ io.busniess.vaLBEcom.virtualchecker❌ com.lbe.parallel.intl.arm64SpaceCorecom.virtualchecker✅ com.virtualchecker360分身巨匠com.virtualchecker✅ com.virtualchecker双开助手com.virtualchecker❌ com.exceliance.dualaid读取利用:ActivityThread#mInstrumentation产品期望值理论值Android零碎android.app.Instrumentation@android.app.Instrumentation@bfcc1e8VirtualAppandroid.app.Instrumentation@❌ com.lody.virtual.client.h.a.c@fd146bfLBEandroid.app.Instrumentation@❌ com.doubleagent.client.e@a0aac44SpaceCoreandroid.app.Instrumentation@✅ android.app.Instrumentation@153bfc9360分身巨匠android.app.Instrumentation@❌ com.morgoo.droidplugin.hook.handle.PluginInstrumentation@8e8d100双开助手android.app.Instrumentation@❌ com.exceliance.kxqp.platform.c.b.e.wy@38e16ce读取利用:ActivityThread.H#mCallback产品期望值理论值Android零碎nullnullVirtualAppnull❌ com.lody.virtual.client.h.d.d.b@800e4deLBEnull❌ com.lbe.doubleagent.client.LocalActivityService$ActivityThreadCallback@3f40957SpaceCorenull❌ com.fvbox.lib.client.hook.HCallbackHook@aa9ba7e360分身巨匠null❌ com.morgoo.droidplugin.hook.handle.e@91b7b06双开助手null❌ com.excelliance.kxqp.platform.c.b.e.wr@153bfc9PMS检测产品期望值理论值Android零碎android.os.BinderProxy@android.os.BinderProxy@eff05b8VirtualAppandroid.os.BinderProxy@❌ com.lody.virtual.client.h.a.c@993b1e1LBEandroid.os.BinderProxy@❌ com.lbe.doubleagent.client.hook.BinderProxy@f54e1feSpaceCoreandroid.os.BinderProxy@✅ android.os.BinderProxy@c846443360分身巨匠android.os.BinderProxy@❌ com.morgoo.droidplugin.hook.newsolution.BinderHook$BinderWrapper@cf8d1da双开助手android.os.BinderProxy@✅ android.os.BinderProxy@eff05b8测试后果产品mBasePackageNamemOpPackageNamemInstrumentationPMSH#mCallbackVirtualApp❌❌❌❌❌LBE❌❌❌❌❌SpaceCore✅✅✅✅❌360分身巨匠✅✅❌❌❌双开助手❌❌❌✅❌以上测试仅仅是拿出一些关键点进行检测,展现各个框架的实测状况,惟一一点全副不通过的是ActivityThread.H#mCallback,其实这个中央并不是虚拟化才会用,很多Android上的黑科技都会用到,能够防止然而没必要为了这个就义掉兼容性。 论断各个框架也浅浅的剖析过一遍,其实大部分框架都有比拟多的技术重合点,通过上方的测试能够看出,SpaceCore对利用的入侵是比拟激进的,侧面反映了外部的解决逻辑更优,但具体实现细节未知。欢送各位前辈斧正,欢送各位交换。 本文关键词:Android虚拟化, 多开框架, 虚构引擎, VirtualApp, LBE, SpaceCore, 360分身巨匠, 双开助手, 360 DroidPlugin, VMOS, Android沙箱, 插件化

November 26, 2022 · 1 min · jiezi

关于虚拟化:virtio-12-来了龙蜥社区携手业界打造新版虚拟化-IO-标准

一、virtio spec 是什么?在云计算热火朝天的明天,咱们应该常常能够在云计算平台上看 "virtio" 这个词,它呈现在云计算机的各种设施上: 它是怎么的一种存在,在虚拟化的技术畛域扮演着一种怎么的角色呢?virtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设施虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用 I/O 设施的形象。一般来说,咱们所说的 virtio 蕴含三个局部: 虚拟机中的 virtio 网卡驱动宿主机或者 CIPU 下面的 virtio 设施的实现virtio spec (标准)后面两个是 virtio 在不同的操作系统及计算机模拟器中具体实现的 driver 和 device,driver 和 device 如何实现并没有严格的规定,基于其所处的环境不同而有所区别,然而 driver 与 device 之间的交互必须严格遵守 virtio spec 的定义。这样能力保障所有的 OS 在不同的 host 上的模拟器外面都能够失常运行。 所以 virtio spec 是 virtio 的灵魂。 virto spec 通过定义一套 virtqueue 机制,实现 guest 和 host 的通信。这套机制能够利用于多种设施(网络设备、块设施等)。所以 virtio spec 倒退出了多种设施,根本实现了对于虚拟化场景下各种设施的笼罩。 1.1 那咱们为什么抉择它呢? virtio 是一种半虚拟化的技术,如果对于设施进行全虚拟化,hypervisor 就要对于所有的硬件申请指令进行截获,这对于性能的影响是微小的。 ...

August 15, 2022 · 3 min · jiezi

关于虚拟化:虚拟化解决方案-virtio-的技术趋势与-DPU-实践解读-龙蜥技术

编者按:本期作者在 Virtio 简介、Virtio 与 DPU、JanguarMircro DPU 等方面带大家深刻了解 Virtio 相干背景、技术规范与关键技术在 DPU 上的软化实际。本文整顿自龙蜥大讲堂第 16 期,视频精彩回放已上传至龙蜥官网(首页-动静-视频),欢送查看! 以下是云豹智能高级工程师 Will Sun 分享《 Virtio 的技术趋势与 DPU 实际》局部内容详情(残缺视频回放和技术PPT获取形式见文末)。 virtio 是一种 I/O 半虚拟化解决方案,提供了一套 Guest OS 与 Hypervisor 之间的通信框架和编程接口,当初大部分 OS 和 Hypervisor 都反对 virtio。进步性能的同时,缩小跨平台所带来的兼容性问题。比方, 在没有 Virtio 之前,每个 Hypervisor 都有本人的一套 I/O 模仿计划, Guest OS 须要集成很多的驱动:像 KVM 须要装置 I/O 模仿的设施驱动、VMware 也须要装置一套驱动,而他们之间是没有兼容性的。在这样的背景下,业界提出了 Virtio 的思维。 Virtio 的诞生能够追溯到以下这篇论文: 2008 《virtio: towards a de-facto standard for virtual I/O devices》Virtio 能够解决什么问题呢? 最开始 Virtio 解决的最次要问题是兼容性问题。随着咱们对虚拟化场景、对网络、存储能力性能要求越来越高,对 Virtio 的要求也越来越高。这样才有了 Virtio 的一直的倒退和演进。 ...

May 27, 2022 · 1 min · jiezi

关于虚拟化:5月硬核预告明晚开讲Virtio-虚拟化技术趋势与-DPU-实践-第16-期

龙蜥大讲堂第 16 期直播如约而至!本期龙蜥大讲堂直播邀请了云豹智能高级工程师 Will Sun 分享《Virtio 的技术趋势与 DPU 实际》,快来扫码入群,预约前排小板凳观看直播吧! 直播主题及内容介绍本期主题:Virtio 的技术趋势与 DPU 实际 直播工夫:2022 年 05 月 11 日 (本周三)16:00-17:00 直播内容:Virtio 背景、技术规范与关键技术以及 Virtio 技术在 DPU 中的实际利用。DPU Virtio 软化给数据中心基础设施减速带来的收益与产品劣势。 听众受害:深刻了解 Virtio 相干背景、技术规范与关键技术交换在 DPU 上的软化实际。 适宜人群:云计算、虚拟化、DPU 相干行业人员。 讲师介绍:Will Sun:云豹智能利用与解决方案高级工程师,次要负责云豹 DPU 产品利用与解决方案,具备 10+ 年数据通信、SmartNIC 相干行业教训。 如何观看直播?钉钉扫描下方海报二维码入群即可观看直播。 龙蜥大讲堂 5 月预报 「龙蜥大讲堂」5 月预报领先看,多位大咖带你共享技术盛宴!提前扫码进群,参加互动还有龙蜥精美周边等你来拿。5 月精彩分享中转———— 完 ——

May 10, 2022 · 1 min · jiezi

关于虚拟化:一个用于学习-Intel-VT-技术的迷你虚拟机

最近写了一个小我的项目桃花源(英文名为 peach),该我的项目是一个迷你虚拟机,用于学习 Intel 硬件虚拟化技术。学习该我的项目可使读者对 CPU 虚拟化、内存虚拟化技术有个理性、直观的意识,为学习 KVM 打下松软的根底。peach 实现了如下性能: 应用Intel VT-x技术实现CPU虚拟化应用EPT技术实现内存虚拟化反对虚构x86实模式运行环境反对虚构CPUID指令反对虚构HLT指令,Guest利用HLT指令关机代码仓库如下: https://gitee.com/pandengyang/peach.githttps://github.com/pandengyang/peach.git

March 23, 2022 · 1 min · jiezi

关于虚拟化:VMware-Fusion-1221-SLIC-26-MOD

请拜访原文链接:https://sysin.org/blog/vmware...,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 申明:底层组件来自网络论坛或开源社区的分享,本站所有软件收费分享,仅供学习和测试应用,严禁用于任何商业用途!!! 2022.02.24 更新: 因为:VMware Fusion 12.2 NAT 网关 IP 变更导致 VM 无法访问内部网络,本次同时更新 12.1.0 版本。12.1.0 更新 BIOS 和 EFI64 为以后版本。12.1.0 更新 VMware Tools(darwin、windows)版本 10.3.5。新增 12.2.1 SLIC 2.6。个性VMware Fusion 12 原版 App 中集成 SLIC 2.6: SLP 2.6 (BIOS.440 & EFI64 - Dell 2.6 SLIC) - NT 6.0 (Vista/Server 2008), NT 6.1 (7/Server 2008 R2), NT 6.2 (Server 2012), NT 6.3 (Server 2012 R2), NT 10.0 (Server 2016/Server 2019/Server 2022) ...

February 24, 2022 · 1 min · jiezi

关于虚拟化:PVE开启硬件显卡直通功能

首先编辑GRUB配置文件: root@pve:~# vim /etc/default/grubroot@pve:~#root@pve:~# cat /etc/default/grub# If you change this file, run 'update-grub' afterwards to update# /boot/grub/grub.cfg.# For full documentation of the options in this file, see:# info -f grub -n 'Simple configuration'GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"GRUB_CMDLINE_LINUX=""# Uncomment to enable BadRAM filtering, modify to suit your needs# This works with Linux (no patch required) and with any kernel that obtains# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"# Uncomment to disable graphical terminal (grub-pc only)#GRUB_TERMINAL=console# The resolution used on graphical terminal# note that you can use only modes which your graphic card supports via VBE# you can see them in real GRUB with the command `vbeinfo'#GRUB_GFXMODE=640x480# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux#GRUB_DISABLE_LINUX_UUID=true# Uncomment to disable generation of recovery mode menu entries#GRUB_DISABLE_RECOVERY="true"# Uncomment to get a beep at grub start#GRUB_INIT_TUNE="480 440 1"root@pve:~#开启IOMMU反对:GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"如果是AMD的CPU:GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on video=efifb:off"更新GRUB: ...

November 19, 2021 · 2 min · jiezi

关于虚拟化:使用renode仿真开发OneOSLite物联网操作系统

1.简介上一篇文章见了,renode是什么,以及应用装置renode后,应用官网示例跑了一个最简略的零碎,并且有了串口输入。 此次,咱们应用renode来运行一款物联网操作系统OneOS-Lite。 2.renode官网在此,咱们给出renode的官网网址:https://renode.io/,以及它的官网文档:https://renode.readthedocs.io/en/latest/ 相干材料能够通过该网址进行查阅。如果须要该renode文档和中文翻译,欢送关注公众号CMCC-OneOS,或者留言和我分割。 3.renode根底操作为了能更好的应用renode,咱们在这里简略阐明一下renode的基本操作,来满足咱们的日常工作需要。 3.1 帮忙help相熟命令,最好的形式之一是巧用help命令。咱们能够间接在终端中间接输出help来查看它所反对的命令有哪些,也能够应用help xxx的形式来查看绝体某个命令的具体应用办法。 3.2 创立Machine在monitor中执行mach create,将会创立一个新的machine,默认状况下,零碎会主动调配machine的index,从0开始计数,别离命名为machine-0、machine-1等,并且会主动将monitor的上下文切换到新建的machine。 如果须要指定machine的名字,能够执行命令mach create ”xxx“,如下图: 3.3 装载Platform当实现Machine的创立之后,该Machine只有一个外设,即系统总线(Renode中简写为sysbus)。此时该Machine并不具备CPU和内存,因而还无奈执行任何代码。 咱们能够通过 peripherals命令列出所有的外设,能够看到,此时只有sysbus: 这时,咱们须要加载平台形容文件:machine LoadPlatformDescription @platforms/boards/stm32f4_discovery.repl。 此时,再次查看外设。能够发现,蕴含串口uart等更多的外设信息。而咱们虚构的硬件平台也曾经初步实现。 3.4 加载程序在实现平台的创立以及配置后,就能够将要运行的软件上载到平台上。Renode能够使得用户上载与在实在硬件上同样的软件可执行文件,无需批改或者从新编译。 加载elf文件到虚构的内存中,所用命令格局如下:sysbus LoadELF @my-project.elf 这里咱们应用的是OneOS-Lite下的STM32F407VG-renode我的项目,进入该我的项目中,编译生成elf文件。 3.5 运行程序程序加载好当前,能够应用命令start让程序运行起来,咱们能够通过命令showAnalyzer sysbus.uart1关上串口,证实程序是跑起来了的! 4.结语通过renode,咱们让OneOS-Lite这个超轻量的物联网操作系统跑在了虚构的硬件外面,这对咱们学习一款操作系统是十分无益的。 renode的应用,能够让咱们更加理解硬件,OneOS-Lite则揭开了操作系统的神秘面纱。前面,咱们还会推出更多的相干文章,欢送关注。 5.关注&&分割gitee: https://gitee.com/cmcc-oneos/OneOS-Lite docs: https://oneos-lite.com/ 公众号:CMCC-OneOS

October 9, 2021 · 1 min · jiezi

关于虚拟化:鲲鹏BoostKit虚拟化使能套件让数据加密更安全

摘要:借助华为鲲鹏BoostKit虚拟化使能套件(简称鲲鹏BoostKit虚拟化),可减速迈向云计算之旅。本次KAE减速引擎让数据加密更平安直播将介绍鲲鹏BoostKit减速库全景,基于BoostKit减速库在WEB、大数据和分布式存储等典型利用场景的性能优化实际。本文分享自华为云社区《【云驻共创】鲲鹏利用使能套件之KAE减速引擎让数据加密更平安》,作者: 考过IE励志当攻城狮 。 前言和导读:华为鲲鹏BoostKit虚拟化使能套件介绍:现如今,从应用数字技术的企业转型为数字企业,是寰球各行各业都面临着的挑战。应用程序现代化是数字转型的外围,助力企业吸引客户,赋能员工,优化经营,改良产品。作为数字化转型的IT基础设施,云计算技术近年来倒退飞速,尤其是随着虚拟化、云服务、容器等技术的疾速倒退,企业数字化转型的过程也因为云计算技术的倒退而大大受害。云计算的一直变革,很大水平上也是因为开源技术与生态的飞速发展,以QEMU-KVM、OpenStack、Docker、Kubernetes为代表的开源云计算技术,突破了已经关闭低效的“烟囱”式算力架构,一直的丰盛IT基础设施,助力用户利用朝着更麻利、更高效的方向进化,大步迈向数字化转型。 借助华为鲲鹏BoostKit虚拟化使能套件(简称鲲鹏BoostKit虚拟化),可减速迈向云计算之旅。本次KAE减速引擎让数据加密更平安直播将介绍鲲鹏BoostKit减速库全景,基于BoostKit减速库在WEB、大数据和分布式存储等典型利用场景的性能优化实际。 减速库介绍:减速库能够联合计算机体系结构,通过扭转软件代码的数据结构和算法,晋升根底软件库的计算效率;也能够利用计算机芯片多样性,通过软件开发,充分发挥专有芯片高性能的特点,晋升特定畛域根底性能的计算效率。 减速库问题:兔子滋生问题:设有一对新生的兔子,从第三个月开始他们每个月都生一对兔子,新生的兔子从第三个月开始又每个月生一对兔子。按此法则,并假设兔子没有死亡,1年后共有多少个兔子?10年后,又如何? 从上述问题能够看出,算法的效率会影响性能,影响性能软件的因素还有很多。而鲲鹏减速库去做的事就是找出这些影响软件性能的因素并进行性能的调优。从这个问题,咱们就引出了减速库的意义。 为什么要做减速库(1)1.减速库晋升软件计算效率 CPU的计算速度快了,是否就不须要减速库了呢? 当然不是! 体育运动中,所有运动员的谋求是更高,更快,更远,而IT产业谋求更快,更便宜。纯正的晋升硬件计算能力并不能达到疾速解决问题的目标,必须依附软件算法扭转执行效率能力真正的晋升计算速度。 因此,体现在用户界面的更快,更便宜,就必须通过最佳的软件实现(减速库)将硬件的最佳性能体现进去,提供最好的服务。 尤其以后CPU倒退遭逢瓶颈的状况下,更是如此。 为什么要做减速库(2)2.减速库重构摩尔定律 摩尔定律的生效,会带来什么样的影响呢? 摩尔定律是随着技术的倒退,逐步开发机器的算力。使得计算机的算力放弃肯定速率的疾速减少。然而近些年来,在以后的技术背景下,计算机的解决能力遇到了倒退瓶颈,计算机的解决能力不可能再始终放弃疾速减少,而对咱们就意味着性价比升高了。 咱们发现,即便是并发的状况下,硬件资源的利用率依然是晋升的,这就须要咱们通过软件的形式,通过软件来联合硬件的一些个性来重构摩尔定律。让它依然以线性的速度快速增长。 那么,有没有方法改良呢? ◆硬件多样性给咱们带来重构摩尔定律的可能; ◆硬件多样性给咱们带来重构摩尔定律的可能;计算能力的充分利用也是重要途径。 为什么要做减速库(3)减速库是系统工程的办法之一IT零碎中任何组件或模块都不是独立存在的,而是互相协同造成一个整体,而软件则在其中起到了巨大作用。比方: ◆单核CPU时代,如果呈现阻塞性工作,CPU就会处于期待阶段,CPU的算力就会被节约,多线程技术利用工夫片划分,将CPU的能力充分发挥,这是软件技术; ◆多核CPU时代,多线程如何充分利用多核,也得须要软件调度,方能无效运行; ◆多路CPU时代,则须要通过软件思考CPU与内存的协同,无效利用多个CPU,内存等资源; ◆当然多线程也并不能充分发挥CPU的能力,还须要可能确保软件实现的代码,在CPU执行时,流水线真正流动起来。 一、鲲鹏BoostKit减速库全景1.1 鲲鹏减速库最佳解决方案 减速库实际上更偏差底层,介于硬件资源和解决方案之间。隶属于根底软件这一层,对上利用于各种解决方案,比方大数据、分布式存储、数据库等等这些解决方案。从而撑持这些解决方案于政府、运营商、金融等其余畛域。对下能够适配支流的操作系统比方openEuler、CentOS等等,通过充分发挥硬件的能力,或者内嵌于操作系统,以及独自作为一个函数库去撑持解决方案,晋升解决方案的性能,最终晋升客户的性价比。也就是说不须要去始终减少这个硬件的配置,始终加购硬件资源晋升计算机的性能。 1.2 鲲鹏BoostKit是什么?鲲鹏利用使能套件BoostKit,开释倍级性能劣势 BoostKit是部署在鲲鹏整机(服务器)环境之上,往上搭建的一个全栈优化的使能套件。具体构造如下图所示: 硬件是算力供应,软件的性能是一种算力的开释。如何充沛开释硬件算力潜能,实现应用软件的极致性能,是以后业界面临的次要挑战之一。 1.3 鲲鹏Boostkit八大利用场景 鲲鹏利用使能套件 BoostKit,开释倍级性能劣势,提供八大场景化利用使能套件:大数据、分布式存储、数据库、虚拟化、ARM原生、Web/CDN、NFV和HPC。 目前鲲鹏BoostKit已利用于重点行业的外围业务场景,帮忙客户利用获得显著的性能减速成果。例如咱们在广东政务云的利用实际中,采纳的就是鲲鹏BoostKit使能套件在鲲鹏平台上,通过华为云平台,国产数据库的全栈优化,实现利用反对库查问性能,晋升15%以上;在银行的外围利用零碎实际中,鲲鹏BoostKit对于鲲鹏服务器+河汉麒麟服务器操作系统V10,国产数据库全面优化,晋升账单查问性能30%,曾经上线并服务于十万以上的用户。 将来,咱们将继续与各行业客户、搭档一起基于鲲鹏BoostKit减速各行业的业务软件,进行继续的业务计划翻新。当然,华为鲲鹏BoostKit的翻新也不止这八大利用场景,其余的利用场景咱们也能够一起独特探讨。 鲲鹏减速库整体介绍:鲲鹏减速库:对软件根底库做深度性能优化,构建常用软件库在鲲鹏平台上的性能竞争力,硬件加速+软减速库,现已实现18个减速库,是基于鲲鹏平台指令优化和软硬件联合的减速技术。 备注:KAE (Kunpeng AcceleratorEngine)鲲鹏减速引擎;HPRE(High Performance RSA Engine)高性能RSA减速引擎;SEC(Security Engine)硬件安全减速引擎。 华为鲲鹏计算减速库是华为公司围绕鲲鹏处理器进行性能优化后的软件汇合的统称,鲲鹏BoostKit减速库提供基于ARM指令深度优化和基于鲲鹏KAE(鲲鹏硬件加速引擎)开发的减速库,笼罩零碎库、压缩、加解密、媒体、数学库、存储、网络等7类减速库,为大数据加解密、分布式存储压缩、视频转码等利用场景提供高性能减速。 1.压缩 应用鲲鹏硬件加速模块或鲲鹏指令对业界支流的开源压缩库进行性能优化。 2.加解密 应用鲲鹏硬件加速模块及鲲鹏指令对OpenSSL库进行性能优化,反对硬减速与指令减速的主动协同、应用逻辑无需批改即可应用加解密减速库。 3.零碎库 基于鲲鹏微架构特点,应用鲲鹏指令对系统通用的根底库进行性能优化,以及x86平台的指令函数映射到鲲鹏平台的公共模块。 4.媒体 基于鲲鹏减速指令提供高性能媒体原语库及视频编解码库。 5.数学库 基于鲲鹏微架构特点以及鲲鹏减速指令,提供罕用的高性能根底数学库。 6.存储 采纳高速缓存盘配合高效的预取算法,晋升零碎存储IO性能,进而晋升存储IO密集型场景的整体性能。 7.网络 基于鲲鹏架构特点,提供TCP/IP和OVS网络减速技术。 二、鲲鹏BoosKit减速引擎介绍2.1 鲲鹏BoostKit KAE减速引擎介绍 鲲鹏减速引擎是基于鲲鹏920处理器提供的硬件加速解决方案,蕴含了KAE加解密和KAEzip,别离用于减速SSL/TLS利用和数据压缩,能够显著升高处理器耗费,进步处理器效率。此外,减速引擎对应用层屏蔽了其外部实现细节,用户通过OpenSSL、zlib标准接口即能够实现疾速迁徙现有业务。 面向社区开源使能: ➢兼容OpenSSL和Zlib标准接口, 应用层调用逻辑无需调整,应用简略 ➢基于华为自研UACCE加速器内核框架, 防止传统内核调用形式的门路损耗 ...

September 15, 2021 · 2 min · jiezi

关于虚拟化:创建加载virtio驱动的Windows-10安装镜像

现在虚拟化曾经十分风行,当咱们应用Linux桌面环境时,能够通过装置libvirt和QEMU间接应用基于内核的虚拟化(KVM)来创立虚拟机并装置其余类型的操作系统。在基于Linux的服务器上,也能够通过oVirt或者PVE等基于KVM的虚拟化计划来实现虚拟机环境。 当咱们想通过官网iso零碎镜像装置比拟新的Windows(例如Windows 10,Windows Server 2019等),在进入到抉择装置磁盘,会发现找不到创立的虚构磁盘,如下图所示 这是因为在官网的iso镜像中的Widnows未蕴含针对KVM的virtio-win驱动,因而咱们能够基于Windows的iso镜像,加载virtio-win的相应驱动之后,从新创立一个蕴含了virtio-win驱动的iso镜像文件。 对于virtio-win的更多信息,能够参考 https://www.linux-kvm.org/pag... 。 前提条件为了创立一个加载virtio-win驱动之后的iso镜像文件,咱们须要以下筹备: 具备管理员权限的Windows 10工作零碎并装置Windows ADKWindows 10的装置iso文件(这里以Windows 10作为例子)virtio-win驱动的iso文件 (https://fedorapeople.org/grou...UltraISO工具筹备工作创立工作目录假如在你的Windows 10零碎上有D盘,那咱们在D盘创立相应的工作目录,以管理员权限关上PowerShell,并执行 PS D:\> mkdir D:\mnt\windows_temp,D:\mnt\boot,D:\mnt\install,D:\virtio-win提取Windows安装文件应用UltraISO工具关上windows 10的iso文件,并将所有文件提取到目录 *D:\mnt\windows_temp* 下 而后给Windows的镜像文件受权读写 PS D:\> attrib -r C:\mnt\windows_temp\sources\*.wim /s提取virtio驱动文件应用UltraISO关上下载的virtio-win的iso文件,同样提取到目录 *D:\virtio-win* 下,而后查看有哪些w10(针对windowns10)的驱动 咱们能够看到在 0.1.196 版本中,蕴含了以下w10(64位)的驱动,为了不便前面一条命令加载所有驱动,咱们把这些驱动从新放到一个目录下 PS D:\> cd virtio-win\PS D:\virtio-win\> mkdir w10PS D:\virtio-win\> cp -r .\Balloon\w10\amd64\ .\w10\BalloonPS D:\virtio-win\> cp -r .\NetKVM\w10\amd64\ .\w10\NetKVMPS D:\virtio-win\> cp -r .\pvpanic\w10\amd64\ .\w10\pvpanicPS D:\virtio-win\> cp -r .\qemufwcfg\w10\amd64\ .\w10\qemufwcfgPS D:\virtio-win\> cp -r .\qemupciserial\w10\amd64\ .\w10\qemupciserialPS D:\virtio-win\> cp -r .\qxldod\w10\amd64\ .\w10\qxldodPS D:\virtio-win\> cp -r .\sriov\w10\amd64\ .\w10\sriovPS D:\virtio-win\> cp -r .\viofs\w10\amd64\ .\w10\viofsPS D:\virtio-win\> cp -r .\viogpudo\w10\amd64\ .\w10\viogpudoPS D:\virtio-win\> cp -r .\vioinput\w10\amd64\ .\w10\vioinputPS D:\virtio-win\> cp -r .\viorng\w10\amd64\ .\w10\viorngPS D:\virtio-win\> cp -r .\vioscsi\w10\amd64\ .\w10\vioscsiPS D:\virtio-win\> cp -r .\vioserial\w10\amd64\ .\w10\vioserialPS D:\virtio-win\> cp -r .\viostor\w10\amd64\ .\w10\viostor如果创立的是其余版本的Windows零碎,例如Windows Server 2019,则提取对应目录(2k19/)下的驱动。 ...

July 8, 2021 · 2 min · jiezi

关于docker:Docker-的名词概念运行流程底层原理及与虚拟机对比

名词概念镜像(image):镜像就好比是一个模板,能够通过镜像创立一个或多个容器。例如有一个Tomcat镜像,基于这个镜像能够创立Tomcat01,Tomcat02等容器。 容器(container):基于镜像创立的,独立运行的一个或一组利用。咱们的我的项目或利用都是在容器中运行的。 仓库(repository):寄存镜像的中央,分为私有仓库和公有仓库。 运行流程 底层原理 Docker 与虚拟机比照

March 28, 2021 · 1 min · jiezi

关于docker:Windows-Docker-桌面使用入门教程

Windows Docker 桌面零碎要求:win10 64位专业版或企业版。晚期版本请应用 Docker Toolbox。Docker Desktop for Windows 下载地址。版本阐明Stable:稳定版,每个季度公布一次。Edge:测试版,每月公布一次。装置运行双击 Docker for Windows Installer.exe 即可装置 Docker 程序。 装置实现后,Docker会主动启动。 任务栏中呈现鲸鱼图标示意 Docker 正在运行,能够从终端拜访并应用 Docker。 关上 PowerShell 终端(非 PowerShell ISE),查看 Docker 版本: docker version测试拉取镜像和运行镜像: docker run hello-world...Hello from Docker!...右击鲸鱼图标能够关上 Docker 面板和设置等性能。 常用命令查看已下载的镜像: docker image lsREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest fce289e99eb9 15 months ago 1.84kB查看所有容器: docker container ls --allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3189274c0687 hello-world "/hello" 34 minutes ago Exited (0) 34 minutes ago angry_liskov应用帮忙命令: ...

March 28, 2021 · 1 min · jiezi

关于虚拟化:如何让AR物体更真实

在加强事实中,除了虚构物体自身的模型材质等因素,影响物体真实性的次要是光照、反射、暗影。接下来3DCAT实时渲染云平台将带您从这三个方面摸索如何让AR物体更实在! AR光估测要让一个虚构物体很好的融入事实背景中,首先与周围环境的光照得统一,包含光照的方向、强弱。光估测就是提供对事实环境的光照剖析,将事实世界的光照感觉拓展到数字场景中,咱们利用光照预计技术评估环境光,利用环境光中的光照信息来动静调整虚构对象的光照成果。 上面是在Unity3d中利用AR Foundation来实现光估测的具体实现: 咱们首先要关上AR Foundation光照预计性能,在Hierarchy窗口中,顺次抉择AR Session Origin→AR Camera,而后在Inspector窗口的AR Camera Manager组件中,抉择其Light Estimation Mode为“Ambient Intensity”,如下图所示。 而后新建一个C#脚本,命名为LightEstimation,编写如下代码。 为利用该脚本,咱们将该脚本挂载在场景中的Dierctional Light对象上,并将AR Session Origin→AR Camera赋给脚本的mCameraManager属性,如下图所示。 环境探针环境探测器是AR世界中的地位,可捕捉实在环境的纹理和照明信息。每个探针都具备地位、比例、方向和边界体积的属性。应用它们的办法是利用从设施相机捕捉的真实世界的纹理和图像,并将它们用作Cubemap。纹理通常为360度图像格式。当将其利用于适当的资料时,它会产生个别真切的反射和照明,并受到事实世界的影响。 在AR Foundation应用环境反射的根本步骤如下: 1、在场景中的AR Session Origin对象上挂载AR Environment Probe Manager组件并作相应设置; 2、确保须要反射的虚构对象带有反射材质并能反射Probe; 3、应用主动或者手动形式设置反射探头捕捉环境信息供反射体应用。 依照上述步骤,首先咱们在AR Session Origin对象上挂载AR Environment Probe Manager组件,咱们抉择手动设置反射探头,因而咱们不勾选“Automatic Placement”并抉择纹理过滤模式为“Trilinear”,如下图所示。 AR暗影暗影的产生与光源密切相关,暗影的产生也与环境光密切相关。暗影还影响人对空间环境的判断,是构建平面空间信息的重要参考因素。为使虚构物体产生暗影,我的思路是在虚构物体下方搁置一个承受暗影的对象,这个对象须要能承受暗影但又不能有任何材质体现,即除了暗影局部,其余中央须要通明,这样才不会遮挡事实世界中的物体。 暗影生成一方面须要有光源,另一方面还须要有一个承受并显示暗影的载体。本节中咱们将采纳Unity内置的暗影解决方案生成AR实时暗影,光源采纳Directional Light,应用一个Plane做暗影授受对象。 首先,咱们制作一个承受暗影且通明的Plane,在Project窗口中新建一个Shader,命名为ARShadow,编写以下cg代码,该shader的性能就是显示暗影。 而后新建一个材质,亦命名为ARShadow,抉择shader为方才编写的ARShadow.shader。在Hierarchy窗口中新建一个Plane,将其Scale改小一点,批改为(0.1,0.1,0.1),而后将ARShadow材质赋给它,并制作成Prefab,命名为ARPlane,删除Hierarchy窗口中的Plane,到此,承受暗影的立体制作实现。 在Unity菜单栏顺次抉择 Edit →Project Settings,关上Project Settings对话框,抉择Quality选项卡,点击其右侧Android下的彩色小三角图标,在下拉菜单中抉择Very High或者Ultra,而后抉择Shadows为Hard Shadows Only,抉择Shadow Projection为Close Fit。 以上就是3DCAT实时渲染云平台整顿的从光照、反射、暗影三个方面让AR物体更实在的办法。我的项目通过AR Foundation开发好后,后续须要分享给用户试用或者进行产品演示、正式上线应用等,能够上传到3DCAT实时渲染云平台,生成利用拜访URL,这样用户不论是应用何设施、什么配置的机器,都能够随时拜访您的AR利用我的项目。用户不必再次去专门下载APP,而且每次更新迭代利用,无需手动降级利用,轻量设施,繁难拜访。3DCAT实时渲染云平台是一个三维利用的托管运行平台,在云端提供弱小的图形实时渲染计算服务,平台装备弹性GPU资源集群,反对主动负载平衡和伸缩扩容,反对海量用户同时平安拜访利用。

December 31, 2020 · 1 min · jiezi

关于虚拟化:3DCAT实时渲染云在虚拟展会中的应用

随着互联网技术的一直倒退,实时3D可视化技术在日常生活中利用越来越宽泛,越来越多的行业开始转向线上。往年受新冠肺炎疫情影响很多展会都无奈在线下举办,而3d线上虚构展会采纳了全新的在线展现产品形式,将展会和展品搬上云端,使用先进信息技术,提供全天候网上推介、供采对接、在线洽谈等服务,让中外客商足不出户下订单、做生意。那么什么的是虚构展会呢?虚构展会与线下展会有什么区别呢?3DCAT实时渲染云平台在虚构展会中的利用有哪些? 什么是虚构展会?虚构展会是富媒体的网络互动平台,提供会议参加者一个高度互动的3D虚拟现实环境,一种足不出户便如同亲临展会现场的全新体验。3d虚构展会服务齐全基于互联网,参加者不须要装置任何软件甚至插件,随时随地任何设施仅须要通过点击一个url网页链接,便可通过浏览器退出,畅游虚拟环境,观看实时直播的在线研讨会,参观会展展台,观看产品演示和介绍,并和会议方,演讲嘉宾,参展商在线交谈。 虚构展会与线下展会有什么区别呢?传统的线下展会在工夫、地区、面积等方面有很大的局限性。而虚构展会的模式突破了惯例线下展会中由工夫、地区、面积等方面造成的一些限度,可能使展会面向世界各地的用户,并且随时都能进行参展,也不在须要因展会空间面积而限度人流等。 而虚构展会服务商将三维可视化利用公布到三维利用的托管运行平台,如3DCAT实时渲染平台,而后将这些极具创意的数字展会利用,转为URL拜访的形式,能够放在官网或宣传页面,客户无需下载客户端/3D利用,任何设施任何地点都能够间接拜访。虚构展会将事实中的展会以三维模型的形式展示于网络,结构出栩栩如生的三维网上会展环境。它建设在数字技术及电脑模仿场景设计根底之上,丰盛的视觉效果、充沛的互动效应、及良好的用户操作体验,是虚构展会区别于传统展会的要害。 3DCAT实时渲染云平台在虚构展会中的利用及劣势3DCAT实时渲染云平台反对多终端,随时随地多终端拜访。服务商将三维可视化内容公布到3DCAT平台,这些有创意的数字展、培训教育展会、在线展会等,都能够很不便的失去流传,用户应用无需下载利用,间接通过URL拜访,升高了应用门槛;而参展商在宣传他们的展位时,也能够更多维度的进行展现,吸引用户去加入线上展会,进一步促成成交。 3DCAT虚构展会的利用场景: 在线展陈比起传统的展陈,数字在线展能够轻易制作、收集各种或宝贵、或罕见、或有特色的展品的数字对象,能够创作各种特色展品的集大成者,为观众带来无可比拟的感触。 有创意的数字展将贸易/展陈的三维可视化内容公布到3DCAT平台,更易分享跟流传,助力策展方晋升展陈的影响力、吸引潜在观众。 培训教育国务院、教育部屡次发文要求中央政府推动中小学艺术教育,在线实时艺术展陈有助于推动艺术教育的遍及,而且联合沉迷性、交互性、创意性,能够为中小学生带来更好的培训成果。 3DCAT虚构展会的劣势 超过事实、更加酷炫的展现在线云端的贸易&展陈,可采取更加炫酷的形式,展现形式更加有创意,给观众前所未有的超级体验。 更易分享和流传将贸易&展陈的三维可视化内容公布到3DCAT平台,通过URL能够嵌入到官网或宣传页面,助力策展方晋升展陈的影响力、吸引潜在观众。人们对视觉和交互的体验是有着有限谋求的。 放慢销售过程即便在不同城市,也能够给客户演示简单的产品成果,让客户间接互动式、沉迷式地体验,从而减速销售过程。 3DCAT是集实时渲染、实时3D可视化、像素流送等相干技术服务于一身的实时渲染云平台。利用云端的海量GPU算力解决沉重的图像渲染计算并串流同步输入到终端设备,从而实现终端设备的轻量化,让高质量三维图形利用变得无处不在。用户能够应用任何联网的一般设施,拜访托管在3DCAT云中的三维应用程序,同时无需下载安装利用。3DCAT反对能在Windows平台运行的简直所有渲染引擎,反对NVIDIA RTX实时光线追踪性能的开启。 3DCAT实时渲染云平台通过提供业余的技术服务,帮忙用户实现相干产品及工艺降本增效。目前,3DCAT实时渲染云平台已在工业仿真、智慧园区、医疗仿真、游戏试玩、汽车仿真、建筑工程等虚构仿真和数字孪生相干应用领域提供业余的技术服务。3DCAT实时渲染云平台曾经和英伟达、平行云、Unity、Unreal engine等国内外知名企业达成合作伙伴关系。

December 29, 2020 · 1 min · jiezi

关于虚拟化:虚拟化技术

虚拟化虚拟化是云计算的根底。简略的说,虚拟化使得在一台物理的服务器上能够跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是互相隔离的。 物理机个别称为宿主机(Host),宿主机下面的虚拟机称为客户机(Guest)。Host 次要是通过 Hypervisor 程序将本人的硬件资源虚拟化,并提供给 Guest 应用。依据 Hypervisor 的实现形式和所处的地位,虚拟化分为两种:1型虚拟化和2型虚拟化。 1型虚拟化Hypervisor 间接装置在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现形式个别是一个非凡定制的 Linux 零碎。Xen 和 VMWare 的 ESXi 都属于这个类型。 2型虚拟化物理机上首先装置惯例的操作系统,比方 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对治理虚拟机进行治理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。 比拟:1型虚拟化个别对硬件虚拟化性能进行了特地优化,性能上比2型要高;2型虚拟化因为基于一般的操作系统,会比拟灵便,比方反对虚拟机嵌套。嵌套意味着能够在KVM虚拟机中再运行KVM。 KVM基本概念KVM 是基于虚拟化扩大(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 全称是 Kernel-Based Virtual Machine,也就是说 KVM 是基于 Linux 内核实现的。KVM有一个内核模块叫 kvm.ko,只用于治理虚构 CPU 和内存。KVM 中,虚拟机被实现为惯例的 Linux 过程,由规范 Linux 调度程序进行调度。虚机的每个虚构 CPU 被实现为一个惯例的 Linux 线程。这使得 KMV 可能应用 Linux 内核的已有性能。KVM是2型虚拟化。KVM 自身不执行任何硬件模仿,须要用户空间程序通过 /dev/kvm 接口设置一个客户机虚构服务器的地址空间,向它提供模仿 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。Guest:客户机零碎,包含CPU(vCPU)、内存、驱动(Console、网卡、I/O 设施驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。KVM:运行在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O 拦挡。Guest 的 I/O 被 KVM 拦挡后,交给 QEMU 解决。QEMU:批改过的被 KVM 虚机应用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过 IOCTL /dev/kvm 设施和 KVM 交互。IO的虚拟化IO 的虚拟化,比方存储和网络设备由Linux 内核和Qemu来实现。作为一个 Hypervisor,KVM 自身只关注虚拟机调度和内存治理这两个方面。IO 外设的工作交给 Linux 内核和 Qemu。 ...

September 4, 2020 · 1 min · jiezi

Linux云计算底层技术之虚拟化技术总览

本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。虚拟化本质上是软/硬件层的抽象说起虚拟化,相信大家应该都不陌生,像虚拟内存、Java 虚拟机、Android 模拟器这些都是虚拟化技术的体现,为什么这样说,这个就要回到虚拟化技术的本质上——虚拟化就是由位于下层的软件模块,根据上层的软件模块的期待,抽象(虚拟)出一个虚拟的软件或硬件模块,使上一层软件直接运行在这个与自己期待完全一致的虚拟环境上。从这个意义上来看,虚拟化既可以是软件层的抽象,又可以是硬件层的抽象。 所以说,像虚拟内存、Java 虚拟机、Android 模拟器这些都属于是软件虚拟化技术,而硬件虚拟化技术更多的应用就是在云计算领域。从提出至今,虚拟化技术已经出现了多种实现方式,这些不同的方式其实就是软件和硬件的不同组合。本文主要就是对这些实现方式进行一个总览,形成一个总体认识,方便后面的学习。 VMMVMM 全称是 Virtual Machine Monitor,虚拟机监控系统,也叫 Hypervisor,是虚拟化层的具体实现。主要是以软件的方式,实现一套和物理主机环境完全一样的虚拟环境,物理主机有的所有资源,包括 CPU、内存、网络 IO、设备 IO等等,它都有。这样的方式相当于 VMM 对物理主机的资源进行划分和隔离,使其可以充分利用资源供上层使用。虚拟出的资源以虚拟机的形式提供服务,一个虚拟机本质上和一台物理机没有什么区别,可以跑各种操作系统,在之上再跑各种应用。这种方式无疑是计算机历史上非常里程碑的一步,你想想,以前可能要买多台服务器才能解决的事,现在只用一台就解决了。 虚拟机通常叫做客户机(guest),物理机叫宿主机(host),VMM 处在中间层,既要负责对虚拟资源的管理,包括虚拟环境的调度,虚拟机之间的通信以及虚拟机的管理等,又要负责物理资源的管理,包括处理器、中断、内存、设备等的管理,此外,还要提供一些附加功能,包括定时器、安全机制、电源管理等。 VMM 分类VMM 根据平台类型和实现结构有两种不同的分类,按平台类型可以分为完全虚拟化和类虚拟化,完全虚拟化就是 VMM 完全模拟出一个跟物理主机完全一样的环境。但是这个是非常困难的,首先,这需要硬件的支持,而硬件在初期设计的时候,没有那么远的前瞻性,可以预想到为虚拟化提供支持,前次,指令的复杂性,即使通过模拟的方式也很难做到全部指令都模拟。所以,就需要借助其他的一些技术来辅助虚拟化。 软件辅助虚拟化是通过优先级压缩(Ring Compression)和二进制代码翻译(Binary Translation)这两个技术来完成的。简单讲,RC 基于 CPU 特权级的原理,也就是 guest、VMM 和 host 分别处于不同的特权级上(这个后面讲 CPU 虚拟化的时候会详述),guest 要访问 host 就属于越级访问,会抛异常,这时 VMM 会截获这个异常,并模拟出其可能的行为,从而进行相应处理。但这个问题很明显,就是由于硬件设计的缺陷,有些指令并不能截获,从而导致“漏洞”。 BT 可以弥补这个缺陷,它通过去扫描 guest 的二进制的代码,将难以虚拟化的指令转为支持虚拟化的指令,从而可以配合 VMM 完成虚拟化功能。这两种方式都是通过「打补丁」的方式来辅助虚拟化,很难再架构上保证完整性。 所以,后期的硬件厂商就在硬件上对虚拟化提供了支持,有了硬件辅助的虚拟化。通过对硬件本身加入更多的虚拟化功能,就可以截获更多的敏感指令,填补上漏洞。在这一块,Intel 的 VT-x/d 技术和 AMD 的 AMD-V 技术是其中的代表。 而类虚拟化则是另外一种通过软件来避免漏洞的方式,就是通过修改 guest 操作系统内核代码(API 级)来避免漏洞,这种方式好处就是可以自定义内核的执行行为,某种程度上对性能进行优化。 ...

July 12, 2019 · 1 min · jiezi

服务器虚拟化技术演进

欢迎关注我的公众号睿Talk,获取我最新的文章: 一、前言服务器虚拟化技术是云计算的基石,在最大化利用硬件资源的同时,又降低了使用成本,让系统具备弹性伸缩能力,促使现代系统的架构出现了革命性的变化。无论是微服务架构还是服务网格架构,都是在服务器虚拟化技术日渐成熟后才得以大规模使用。本文主要介绍 CPU 虚拟化技术的演进过程,以英特尔的 x86 平台为主,为掌握云计算相关知识打好基础。 二、CPU 保护环为了提升系统的安全性,避免恶意操作,CPU 厂商设计了一种分级保护的机制。以 x86 芯片为例,就分为 Ring 0 到 Ring 3 几个级别。 Ring 0 拥有最高特权,可以和硬件直接交互,操作系统就是跑在 Ring 0。而应用软件一般跑在 Ring 3 上,当需要调用特权指令(如写内存)的时候,就会触发一个软中断,操作系统捕获到后再去做相应的操作,操作完再将控制权交还给应用。 保护环暂且聊到这里,下面还会讲这种设计存在的一些问题,请继续往下看。 三、CPU 虚拟化技术的演进服务器虚拟化最早在 19 世纪 60 年代就提出了,当时的机器都是单线程的,一台机只能跑一个程序,很浪费硬件资源。于是就有人研究在一台物理机上跑多个操作系统,这样就能跑多个程序了。但后来由于操作系统的改进,出现了多进程和多线程技术,于是虚拟化技术就被暂时搁置了。 到了 1998 年,随着二进制翻译技术的成熟,就能在一台机器上跑不同的操作系统了。二进制翻译技术简称BT,是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行。二进制翻译技术将机器代码从源机器平台映射(翻译)至目标机器平台,包括指令语义与硬件资源的映射,使源机器平台上的代码“适应”目标平台。最早作出尝试的是 VMware,实现原理见下图: 操作系统和 VMM (Virtual Machine Monitor)跑在 Ring 0 上,虚拟化的 OS 跑在 Ring 1 上。当虚拟化 OS 需要跑内核指令的时候,就会触发软中断,VMM 捕获后就会进行必要的翻译和执行操作。但x86架构有一类特殊的指令,称为敏感指令,它既能执行特权操作,又无法被 Ring 0 捕获,导致虚拟机无法正确的执行这些指令。为了解决这个问题,前后发展出3种方法: 二进制翻译(Binary Translation)超虚拟化(Para Virtualization)硬件辅助虚拟化(Hardware Assistance)二进制翻译原理就是 VMM 动态的扫描虚拟操作系统的内核,一旦发现不能被捕获的敏感指令,就将其替换为一条或多条的特权指令,这样就能保证指令的正确执行。典型的代表就是 VMware 的第一代虚拟桌面。这种技术有一个致命的弱点,就是明显的感觉到虚拟机会卡顿,因为动态的扫描和替换指令是一种很耗资源的操作。 超虚拟化技术就能很好的解决二进制翻译的问题。它的原理是提前修改安装在虚拟机上的操作系统,将敏感指令替换掉,这样所有的特权指令都能被 VMM 捕捉到了,典型的代表就是第一代的 Xen。但这又带来另一个问题,就是安装的操作系统必须是内核被修改过的系统,不能随意安装任意的系统。 ...

May 30, 2019 · 1 min · jiezi

虚拟化技术介绍

什么是虚拟化?云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化的核心软件VMM,是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。 虚拟化方式虚拟化技术有很多实现方式,比如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化。 软件虚拟化:顾名思义,就是采用纯软件的方法在在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化。 硬件虚拟化:简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。 全虚拟化:完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层Hypervisor,或者叫做虚拟机管理程序或虚拟机监视器(VMM)。 半虚拟化:半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。 免费虚拟化技术课程:阿里云大学——开发者课堂

May 22, 2019 · 1 min · jiezi

windows下安装docker

作为伟大的21世纪接班人,怎么呢不会docker技术呢?好吧,由于种种原因,我的几块钱云服务器docker不能动它的配置,于是就想在win7上装一个练练手~ 1、下载windows下的docker工具docker-toolbox,我下载的是最新版 2、安装,我把方框中的勾去掉了(就是这么任性) tip1中间有个选择项,就是安装GIT,因为我已经安装过了,所以我也把这个勾去掉了 tip2然后就是一直next,有三个弹窗直接点安装就行了,静待安装完成。 tip3安装完成之后会有三个图标 3、双击 Docker Quickstart**那个图标打开图形化界面 tip1好吧,直接点击浏览,找到我自己之前安装git的目录,选择bin下的bash.exe 坑点好吧,事情怎么可能会这么一帆风顺!我遇到了一个错误 Error in driver during maching creation:this computer doesn't have vt-x/amd-..........搞个蛋蛋 !我的bios不支持虚拟化?网上查了查bios怎样打开虚拟化,好吧进入bios设置,什么esc、f2、f8、del都试了,才发现f12是真理(旁边同事就一脸蒙逼的看我重启了n次电脑……) 找找找,都没看到有V开头的单词!最后在CPU设置里头找到了,把disenable改成了enable,F10 yes enter,然后重启再次进行上面第第三步,ok,成功了! 注现在一般的bios都会支持虚拟化的,所以放心大胆的去装,网上说的先看看支不支持啥的,基本可以忽略。我i3一点都不虚。如下图,我打开虚拟化之后,还是不能直观的看到我是否打开了虚拟化。 注群里有朋友说github上的一个玩意儿报错,可以直接根据那个github地址下载,我看其它帖子都说放到C:UsersAdministrator.dockermachinecache这个下头去,如果碰到那个错误了可以试试

April 26, 2019 · 1 min · jiezi

网卡也能虚拟化?网卡虚拟化技术 macvlan 详解

本文首发于我的公众号 cloud_dev,专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。01 macvlan 简介前面的文章讲过了几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案,今天要讲的 macvlan 也是其中的一种,准确说这是一种网卡虚拟化的解决方案。因为 macvlan 这种技术能将 一块物理网卡虚拟成多块虚拟网卡 ,相当于物理网卡施展了 多重影分身之术 ,由一个变多个。02 macvlan 的工作原理macvlan 是 Linux kernel 支持的新特性,支持的版本有 v3.9-3.19 和 4.0+,比较稳定的版本推荐 4.0+。它一般是以内核模块的形式存在,我们可以通过以下方法判断当前系统是否支持:# modprobe macvlan# lsmod | grep macvlanmacvlan 24576 0如果第一个命令报错,或者第二个命令没有返回,说明当前系统不支持 macvlan,需要升级内核。macvlan 这种技术听起来有点像 VLAN,但它们的实现机制是完全不一样的。macvlan 子接口和原来的主接口是完全独立的,可以单独配置 MAC 地址和 IP 地址,而 VLAN 子接口和主接口共用相同的 MAC 地址。VLAN 用来划分广播域,而 macvlan 共享同一个广播域。通过不同的子接口,macvlan 也能做到流量的隔离。macvlan 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡,虚拟网卡再把包交给上层的协议栈处理。03 四种模式根据 macvlan 子接口之间的通信模式,macvlan 有四种网络模式:private 模式vepa(virtual ethernet port aggregator) 模式bridge 模式passthru 模式默认使用的是 vepa 模式。3.1 private这种模式下,同一主接口下的子接口之间彼此隔离,不能通信。即使从外部的物理交换机导流,也会被无情地丢掉。3.2 vepa这种模式下,子接口之间的通信流量需要导到外部支持 802.1Qbg/VPEA 功能的交换机上(可以是物理的或者虚拟的),经由外部交换机转发,再绕回来。注:802.1Qbg/VPEA 功能简单说就是交换机要支持 发夹(hairpin) 功能,也就是数据包从一个接口上收上来之后还能再扔回去。3.3 bridge这种模式下,模拟的是 Linux bridge 的功能,但比 bridge 要好的一点是每个接口的 MAC 地址是已知的,不用学习。所以,这种模式下,子接口之间就是直接可以通信的。3.4 passthru这种模式,只允许单个子接口连接主接口,且必须设置成混杂模式,一般用于子接口桥接和创建 VLAN 子接口的场景。3.5 mactap和 macvlan 相似的技术还有一种是 mactap。和 macvlan 不同的是,mactap 收到包之后不是交给协议栈,而是交给一个 tapX 文件,然后通过这个文件,完成和用户态的直接通信。04 实践在 Linux 系统下,创建 macvlan 的命令形式如下:ip link add link DEVICE name NAME type { macvlan | macvtap } mode { private | vepa | bridge | passthru [ nopromisc ] }通常,单独使用 macvlan 毫无意义,一般都是结合 VM 和容器来构建网络。下面我们就简单使用 namespace 来看看 Linux 是怎么使用 macvlan 的。实验拓扑如下:在我的系统中,以接口 enp0s8 为例创建两个 macvlan 子接口(使用 bridge 模式),配置 IP 并将其挂到两个 namespace 中,测试连通性。# 创建两个 macvlan 子接口ip link add link enp0s8 dev mac1 type macvlan mode bridgeip link add link enp0s8 dev mac2 type macvlan mode bridge# 创建两个 namespaceip netns add ns1ip netns add ns2# 将两个子接口分别挂到两个 namespace 中ip link set mac1 netns ns1ip link set mac2 netns ns2# 配置 IP 并启用ip netns exec ns1 ip a a 192.168.56.122/24 dev mac1ip netns exec ns1 ip l s mac1 upip netns exec ns1 ip a a 192.168.56.123/24 dev mac2ip netns exec ns2 ip l s mac2 up注:enp0s8 的 IP 是 192.168.56.110/24,配置的子接口 IP 也必须是同一网段的。完了两个子接口 ping 一下:root@ubuntu:# ip netns exec ns1 ip a show mac19: mac1@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1 link/ether 2e:6e:d9:08:c5:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.56.122/24 scope global mac1 valid_lft forever preferred_lft forever inet6 fe80::2c6e:d9ff:fe08:c505/64 scope link valid_lft forever preferred_lft foreverroot@ubuntu:# ip netns exec ns1 ping 192.168.56.123PING 192.168.56.123 (192.168.56.123) 56(84) bytes of data.64 bytes from 192.168.56.123: icmp_seq=1 ttl=64 time=0.052 ms64 bytes from 192.168.56.123: icmp_seq=2 ttl=64 time=0.028 ms^C— 192.168.56.123 ping statistics —2 packets transmitted, 2 received, 0% packet loss, time 1000msrtt min/avg/max/mdev = 0.028/0.040/0.052/0.012 ms可以看到,能够 ping 通,如果把上面的 mode 换成其他模式就行不通了,这个就留给大家去实验了(默认是 vepa 模式)。另外,在 docker 中,macvlan 是一种较为重要的跨主机网络模型,这块的内容就留作下篇文章再做讲解了。05 总结macvlan 是一种网卡虚拟化技术,能够将一张网卡虚拟出多张网卡。macvlan 的四种通信模式,常用模式是 bridge。思考一下:macvlan bridge 和 bridge 的异同点还有一种类似的技术,多张虚拟网卡共享相同 MAC 地址,但有独立的 IP 地址,这是什么技术?这两个问题大家可以留言互动一下。我的公众号 cloud_dev,号内有大量书籍和视频资源,后台回复「1024」即可领取,分享的内容包括但不限于云计算虚拟化、容器、OpenStack、K8S、雾计算、网络、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++编程技术等内容,欢迎大家关注。 ...

April 2, 2019 · 2 min · jiezi

手把手教你 Linux 是如何实现 VLAN 的

本文首发于我的公众号 cloud_dev,专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。01 准备环境环境:ubuntu 16.04 环境(物理 or 虚拟)确认 CPU 是否支持虚拟化:# egrep -o ‘(vmx|svm)’ /proc/cpuinfo# vmx如果不支持,开启 KVM 嵌套虚拟化之后再重启。1.1 安装 KVM 环境sudo apt-get install -y qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan1.2 安装 Ubuntu 图形化界面sudo apt-get install -y xinit gdm kubuntu-desktop02 创建 KVM 虚拟机使用 virt-manager 创建 KVM 虚拟机,方法比较简单,由于篇幅有限,大家可以查阅相关资料自行了解。创建完之后用 virsh list –all 查看创建的 VM:Id Name State—————————————————- - kvm1 shut off - kvm2 shut off - kvm3 shut off我们的实验拓扑如下:图中创建了 2 个 Linux Bridge:brvlan1 和 brvlan2,宿主机的物理网卡 eth0 抽象出两个虚拟设备 eth0.1 和 eth0.2,也就是两个 VLAN 设备,它们分别定义了两个 VLAN:VLAN1 和 VLAN2。挂接到两个 Bridge 上的网络设备自动加入到相应的 VLAN 中。VLAN1 接两个 VM,VLAN 接一个 VM。实验的目的是要验证属于同一个 VLAN1 中 VM1 和 VM2 能 ping 通,而属于不同 VLAN 中的 VM ping 不通。03 实验开始3.1 配置 VLAN编辑 /etc/network/interfaces,加入两个 Bridge 和两个 VLAN 设备的配置,如下:# The primary network interfaceauto ens33iface ens33 inet dhcpauto ens33.1iface ens33.1 inet manual vlan-raw-device ens33auto brvlan1iface brvlan1 inet manual bridge_stp off bridge_waitport 0 bridge_fd 0 bridge_ports ens33.1auto ens33.2iface ens33.2 inet manual vlan-raw-device ens33auto brvlan2iface brvlan2 inet manual bridge_stp off bridge_waitport 0 bridge_fd 0 bridge_ports ens33.2注意,这里务必和自己电脑的接口名称统一,比如我这里叫 ens33,就配 ens33.1 和 ens33.2 的 VLAN 设备,当然你也可以改成 eth0 的形式。重启宿主机,ifconfig 查看网络接口:用 brctl show 查看当前 Linux Bridge 的配置,ens33.1 和 ens33.2 分别挂载 brvlan1 和 brvlan2 上了。# brctl showbridge name bridge id STP enabled interfacesbrvlan1 8000.000c298c57e8 no ens33.1brvlan2 8000.000c298c57e8 no ens33.2virbr0 8000.000000000000 yes3.2 配置 VM我们先配置 VM1,启动 virt-manager,在图形界面中将 VM1 的虚拟网卡挂到 brvlan1 上:同样的方式配置 VM2 和 VM3,VM2 也配到 brvlan1 上,VM3 配到 brvlan2 上。3.3 查看 VM 配置用 virsh start xxx 启动 3 个 VM:# virsh start kvm1# virsh start kvm2# virsh start kvm3再通过 brctl show 查看 Bridge,这时发现 brvlan1 下接了 vnet0 和 vnet1,brvlan2 下接了 vnet2:# brctl showbridge name bridge id STP enabled interfacesbrvlan1 8000.000c298c57e8 no ens33.1 vnet0 vnet1brvlan2 8000.000c298c57e8 no ens33.2 vnet2virbr0 8000.000000000000 yes通过 virsh domiflist xxx 确认这就是 VM 的虚拟网卡:# virsh domiflist kvm1Interface Type Source Model MAC——————————————————-vnet0 bridge brvlan1 rtl8139 52:54:00:b3:dd:3a# virsh domiflist kvm2Interface Type Source Model MAC——————————————————-vnet1 bridge brvlan1 rtl8139 52:54:00:b7:4f:ef# virsh domiflist kvm3Interface Type Source Model MAC——————————————————-vnet2 bridge brvlan2 rtl8139 52:54:00:d8:b8:2a04 验证为了验证相同 VLAN 之间的连通性和不同 VLAN 之间的隔离性,我们为 3 个 VM 都配置同一网段的 IP。使用 virt-manager 进入 VM console 控制面。配置 VM1 的 IP:ifconfig eth0 192.168.100.10 netmask 255.255.255.0配置 VM2 的 IP:ifconfig eth0 192.168.100.20 netmask 255.255.255.0配置 VM3 的 IP:ifconfig eth0 192.168.100.30 netmask 255.255.255.0使用 VM1 ping VM2 能 ping 通,VM2 ping VM3 不能 ping 通。验证完毕。大家如果有兴趣,可以抓个包看看,在发送 ping 包之前,需要知道对方的 MAC 地址,所以会先在网络中广播 ARP 包。ARP 是二层协议,VLAN 的作用就是隔离二层的广播域,ARP 包自然就不能在不同 VLAN 中流通,所以在相同 VLAN 中,通信双方能够拿到对方的 MAC 地址,也就能 ping 通,不同 VLAN 反之。我的公众号 cloud_dev,号内有大量书籍和视频资源,后台回复「1024」即可领取,分享的内容包括但不限于云计算虚拟化、容器、OpenStack、K8S、雾计算、网络、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++编程技术等内容,欢迎大家关注。 ...

March 26, 2019 · 2 min · jiezi

Linux 虚拟网络设备详解之 “vRouter”

本文首发于我的公众号 cloud_dev,专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。这篇文章继上篇文章 Linux 虚拟网络设备详解之 Bridge,上篇发表之后,有读者问我这样一个问题:我的回答基本上是一句废话,因为只要你知道点网络的基础知识,肯定知道这种情况要走三层路由。但知道归知道,不实践永远不知道自己是不是真的知道(有点绕),我相信那位读者也是希望我能讲讲这其中具体是怎么路由的,今天这篇文章就来说说这个。Linux 本身就是一台路由器前面的文章我们学习了多种虚拟的网络设备,包括网卡、交换机等,也了解了怎么用工具来操作这些设备,那么,回到今天的主题,路由器有没有对应的虚拟设备,能不能也用相关工具来操作呢,这个答案如果要深究的话,也是有的,比如 OpenStack 的 DVR、一些开源的虚拟路由器实现等等。不过我们不做那么深究的讨论,简化问题,Linux 系统实际上没有实现相关的虚拟路由器设备,自然也没有工具可以操作路由器,因为 Linux 本身就是一台路由器。(这也是我文章的标题对 vRouter 打双引号的原因)Linux 提供一个开关来操作路由功能,就是 /proc/sys/net/ipv4/ip_forward,默认这个开关是关的,打开只需:echo 1 > /proc/sys/net/ipv4/ip_forward但这种打开方式只是临时的,如果要一劳永逸,可以修改配置文件 /etc/sysctl.conf,添加或修改项 net.ipv4.ip_forward 为:net.ipv4.ip_forward = 1即可。实践为了降低大家实践的难度,我们就不创建虚拟机了,直接使用 namespace,一条 ip 命令就可以搞定所有的操作。我们按照下面的图示进行操作(NS1 和 NS2 分布在不同网段):创建两个 namespace:ip netns add ns1ip netns add ns2创建两对 veth-pair,一端分别挂在两个 namespace 中:ip link add v1 type veth peer name v1_rip link add v2 type veth peer name v2_rip link set v1 netns ns1ip link set v2 netns ns2分别给两对 veth-pair 端点配上 IP 并启用:ip a a 10.10.10.1/24 dev v1_rip l s v1_r upip a a 10.10.20.1/24 dev v2_rip l s v2_r upip netns exec ns1 ip a a 10.10.10.2/24 dev v1ip netns exec ns1 ip l s v1 upip netns exec ns2 ip a a 10.10.20.2/24 dev v2ip netns exec ns2 ip l s v2 up验证一下: v1 ping v2,结果不通。看下 ip_forward 的值:[root@by ~]# cat /proc/sys/net/ipv4/ip_forward0没开路由怎么通,改为 1 再试,还是不通。看下 ns1 的路由表:[root@by ~]# ip netns exec ns1 route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 v1只有一条直连路由,没有去往 10.10.20.0/24 网段的路由,怎么通?那就给它配一条:[root@by ~]# ip netns exec ns1 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.10.1[root@by ~]# ip netns exec ns1 route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 v110.10.20.0 10.10.10.1 255.255.255.0 UG 0 0 0 v1同理也给 ns2 配上去往 10.10.10.0/24 网段的路由。最后再 ping,成功了![root@by ~]# ip netns exec ns1 ping 10.10.20.2PING 10.10.20.2 (10.10.20.2) 56(84) bytes of data.64 bytes from 10.10.20.2: icmp_seq=1 ttl=63 time=0.071 ms64 bytes from 10.10.20.2: icmp_seq=2 ttl=63 time=0.070 ms^C— 10.10.20.2 ping statistics —2 packets transmitted, 2 received, 0% packet loss, time 1000msrtt min/avg/max/mdev = 0.070/0.070/0.071/0.008 ms总结Linux 本身是一台路由器。上面的实验使用 namespace 效果和使用虚拟机是一样的,关键是知道有这个功能,知道怎么用就差不多了。我的公众号 cloud_dev,号内有大量书籍和视频资源,后台回复「1024」即可领取,分享的内容包括但不限于云计算虚拟化、容器、OpenStack、K8S、雾计算、网络、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++编程技术等内容,欢迎大家关注。 ...

March 20, 2019 · 2 min · jiezi

Linux 虚拟网络设备详解之 Bridge 网桥

本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。前面几篇文章介绍了 tap/tun、veth-pair,今天这篇来看看 Bridge。Bridge 是什么同 tap/tun、veth-pair 一样,Bridge 也是一种虚拟网络设备,所以具备虚拟网络设备的所有特性,比如可以配置 IP、MAC 等。除此之外,Bridge 还是一个交换机,具有交换机所有的功能。对于普通的网络设备,就像一个管道,只有两端,数据从一端进,从另一端出。而 Bridge 有多个端口,数据可以从多个端口进,从多个端口出。Bridge 的这个特性让它可以接入其他的网络设备,比如物理设备、虚拟设备、VLAN 设备等。Bridge 通常充当主设备,其他设备为从设备,这样的效果就等同于物理交换机的端口连接了一根网线。比如下面这幅图通过 Bridge 连接两个 VM 的 tap 虚拟网卡和物理网卡 eth0。VM 同主机通信以这个图来简单说明下,借助 Bridge 来完成同主机两台 VM 的之间的通信流程。首先准备一个 centos 或 ubuntu 虚拟机,然后创建一个 bridge:ip link add br0 type bridgeip link set br0 up然后通过 virt-manager 创建两个 kvm 虚拟机:kvm1 和 kvm2(前提得支持嵌套虚拟化),将它们的 vNIC 挂到 br0 上,如下图:kvm 虚机会使用 tap 设备作为它的虚拟网卡,我们验证下:# ps -ef | grep kvm1libvirt+ 3549 1 87 ? 00:22:09 qemu-system-x86_64 -enable-kvm -name kvm1 … -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28 …可以看到,其中网络部分参数,-netdev tap,fd=26 表示的就是连接主机上的 tap 设备。创建的 fd=26 为读写 /dev/net/tun 的文件描述符。使用 lsof -p 3549 验证下:# lsof -p 3549COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME…qemu-system 3549 libvirt-qemu 26u CHR 10,200 0t107 135 /dev/net/tun…可以看到,PID 为 3549 的进程打开了文件 /dev/net/tun,分配的文件描述符 fd 为 26。因此,我们可以得出以下结论:在 kvm 虚机启动时,会向内核注册 tap 虚拟网卡,同时打开设备文件 /dev/net/tun,拿到文件描述符 fd,然后将 fd 和 tap 关联,tap 就成了一端连接着用户空间的 qemu-kvm,一端连着主机上的 bridge 的端口,促使两者完成通信。下面分别给两虚机配上 IP:10.1.1.2/24 和 10.1.1.3/24,ping 一下:在 bridge 上抓个包看看:可以看到,br0 上抓到 ping 的 ICMP echo 包和 ARP 包。Bridge 常用使用场景Bridge 设备通常就是结合 tap/tun、veth-pair 设备用于虚拟机、容器网络里面。这两种网络,在数据传输流程上还有些许不同,我们简单来看下:首先是虚拟机网络,虚拟机一般通过 tap/tun 设备将虚拟机网卡同宿主机里的 Bridge 连接起来,完成同主机和跨主机的通信。如下图所示:【图片来源于网络,侵权必删】虚拟机发出的数据包通过 tap 设备先到达 br0,然后经过 eth0 发送到物理网络中,数据包不需要经过主机的的协议栈,效率是比较高的。其次是容器网络(容器网络有多种引申的形式,这里我们只说 Bridge 网络),容器网络和虚拟机网络类似,不过一般是使用 veth-pair 来连接容器和主机,因为在主机看来,容器就是一个个被隔离的 namespace,用 veth-pair 更有优势。如下图所示:【图片来源于网络,侵权必删】容器的 Bridge 网络通常配置成内网形式,要出外网需要走 NAT,所以它的数据传输不像虚拟机的桥接形式可以直接跨过协议栈,而是必须经过协议栈,通过 NAT 和 ip_forward 功能从物理网卡转发出去,因此,从性能上看,Bridge 网络虚拟机要优于容器。总结Linux Bridge 是虚拟交换机,功能和物理交换机一样,用于连接虚拟机和容器。虚拟机网络和容器网络的区别。Bridge 是偏低级的工具,更高级的工具是 Open vSwitch,这个工具后面再详说。我的公众号 CloudDeveloper(ID: cloud_dev),号内有大量书籍和视频资源,后台回复「1024」即可领取,分享的内容包括但不限于云计算虚拟化、容器、OpenStack、K8S、雾计算、网络、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++编程技术等内容,欢迎大家关注。 ...

March 19, 2019 · 1 min · jiezi