qemu

Linux虚拟化与容器化

耗尽温柔 提交于 2021-01-20 00:01:57
随着云计算的不断发展,计算资源不断集中于大规模的服务器集群上。为了充分发挥硬件潜力,提高服务器性能,虚拟化技术由此诞生。 所谓虚拟化技术,是指将计算元件和硬件隔离开来,隐藏底层的硬件物理特性,为用户提供抽象、统一的模拟计算环境,从而可以适应庞大的硬件资源而不至于浪费性能。如Intel-VT和AMD-V技术可以单CPU模拟多CPU运行,允许同一平台同时运行多个操作系统,且应用程序和服务在相互独立的空间内运行而不影响,从而尽可能的压榨硬件性能并提高工作效率。 虚拟化级别可分为:硬件抽象层、指令集层、操作系统层、基础运行库层、应用程序层。 指令集层:使用类似代码解释的方法实现不同平台计算资源的通用,但是效率极低,如Bochs,可以实现Unix like系统中模拟X86平台(指令集、I/O、内存、BIOS等等),例如在Android上运行Windows。 硬件抽象层:将底层硬件虚拟化,如VMware ESXi,Windows Hyper-V,Xen,Linux KVM等,可以使同一硬件平台上运行多个不同的操作系统;又可分为全虚拟化和半虚拟化(下文详解)。目前I/O和内存的虚拟化较为成熟,CPU方面由于指令集在设计时未考虑到特权指令(hypervisor)和非特权指令(用户)区分的原因(主要是X86)会造成性能下降,因此开发出了Intel-VT等CPU虚拟化技术(硬件辅助虚拟化)

KVM虚拟化平台部署解析

≯℡__Kan透↙ 提交于 2021-01-14 10:58:36
文章目录 前言 一 虚拟化概述 1.1 介绍 1.2 虚拟化产生的原因: 1.3 虚拟化技术 1.3.1 实现功能: 1.4 虚拟化特点 1.5 虚拟化技术发展 1.5.1 虚拟化类型 1.5.2 特性: 1.5.2.1 优势 1.5.2.2 劣势 二 虚拟化前后对比 2.1 虚拟化前 2.2 虚拟化后 2.3 案例对比: 三 虚拟化架构解析 3.1 应用软件 3.1.1 应用示例: 3.2 KVM简介: 3.2.1 广义KVM: 3.3 KVM架构及原理 3.4 KVM原理 四 KVM虚拟化平台部署 4.1 部署准备: 4.1.1 安装配置CentOS7 4.2 部署流程 4.2.1 安装KVM 4.2.2 设置KVM网络 4.2.3 KVM部署与管理 4.2.4 使用虚拟系统管理器管理创建虚拟机 4.2.5 创建存储卷 4.2.6 创建虚拟机 4.2.7 开始安装 总结 前言 在企业服务中,总会出现设备硬件资源利用率处于“划水”状态,浪费企业资源,为解决这类情况,虚拟化技术得以孕育而生。 一 虚拟化概述 1.1 介绍 虚拟化是一种资源管理技术, 是将计算机的各种物理资源, 如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破物理设备结构间的不可切割的障碍,使用者可以比原本的架构更好的方式来应用这些资源。这些资源的虚拟部分是不受现有资源的架构方式、地域或物理设备所限制。

wireshark抓包工具的使用及分析

扶醉桌前 提交于 2021-01-12 08:05:06
前段时间看到群里在讨论Wireshark抓包工具,想写一篇使用笔记但一直没来得及写,本篇就通过实例来分享wireshark抓包工具的使用。 Wireshark简介 Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。 Wireshark下载、安装 下载链接: https://www.wireshark.org/#download 官网下载速度较慢,在本公众号聊天界面回复关键字: Wireshark ,获取网盘链接,若链接失效可联系我获取。 安装与一般的PC机软件安装方式一样,按默认方式安装即可。 Wireshark的使用 我们就借助往期文章: C语言、嵌入式应用:TCP通信实例分析 的TCP通信的demo来做演示。 实验框图如: 在本公众号聊天界面回复关键字: Wireshark ,获取本次试验代码及工具: 其中tcp_client为RT-Thread Studio工程,使用RT-Thread Studio工具导入之后,修改WiFi信息与你电脑连接的WiFi一致: 编译下载到小熊派开发板即可。 启动Wireshark抓包工具,选择无线网卡: 输入过滤信息 ip.src == xxx.xxx.xxx.xxx or ip.dst == xxx.xxx.xxx.xxx ,比如我这边是 ip.src == 192.168

以一打十

给你一囗甜甜゛ 提交于 2021-01-09 02:53:06
使用 docker buildx 实现多平台编译 docker registry api v2 支持多 CPU 架构镜像. 同时 harbor v2 也实现了 docker registry api v2 的支持. 0x01 准备 docker 开启实验模式 buildx 插件 qemu 模拟器 Linux kernel >= 4.8 linux 系统内核 由于 binfmt_misc 机制开启需要依赖 Linux kernel >= 4.8 。 因此,在对 linux 系统操作选型上有一定要求。 建议使用 发行版 出场内核已经满足需求的操作系统。 而不是选择自己升级系统内核。 ubuntu:18.04 LTS 及以上 debian:10 及以上 参考文章: build multi architecture docker image with buildx 开启实验模式 当前 buildx 还是一个实验模式, 如需要支持, 需要进行如下配置 开启实验模式。 修改 /etc/docker/daemon.json , 增加 experimental 字段, 如下。 # vi /etc/docker/daemon.json { "experimental": true } 安装 buildx 将 buildx 放到 ~/.docker/cli-plugins/ 目录下 # https:/

FFmpeg 作者法布里斯•贝拉:我只是在做我感兴趣的事

↘锁芯ラ 提交于 2021-01-06 11:23:34
作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 法布里斯•贝拉(FabriceBellard)有着“天才程序员”之称,因为FFmpeg、QEMU等项目而闻名于业界。同时,他凭着极其深厚的计算机底层功力编写出了多款编译器和虚拟机,并靠着出色的数学知识提出了最快圆周率算法贝拉公式。然而面对这些成就,贝拉坦言不过是因为是喜欢做自己感兴趣的事情。 高中写出压缩软件 贝拉于1972年生在法国格勒诺布尔,从小就对电子设备表现出与生俱来的兴趣,据说他咿呀学语时说出的第一个词语是“magn ́etophone” (录音机)。 良好的家境使得幼时的贝尔能够更加容易地获得他所探索领域的知识和设备。在他9岁时,家里就给贝拉购买了一台TI-59科学计算器,好满足他对编程的好奇之心。11岁时,贝拉拥有了一台更为先进的TI-49/4A私人电脑。15岁时,贝拉的装备换成了Amstrad PC1512,更为强大的配置和全 qwerty 键盘,令贝拉对计算机和编程所表现出来的浓厚兴趣发挥得淋漓尽致。 读高中的贝拉在PC1512 上编程时,因为磁盘空间有限,他想到通过压缩文件来节省有限的磁盘空间。他用8086 汇编语言(PC1512的机器语言)重写了现有的压缩方法LZSS,优化了程序的结构,使得压缩、解压过程变得更加快速

研究Intel IOMMU记录

只愿长相守 提交于 2021-01-06 07:29:31
上次分享的这篇文章 分享以原始patch开始深究Linux内核 有褒有贬,有人说这篇文章中的方法成为他研究linux内核的分水岭,有人说 只告诉了怎么找patch,whatever,绝大多数人还是比较认可,至少我觉得对我帮助很大。 同样的方法用来研究Intel IOMMU,觉得也是事半功倍。 最近iommu大神 Joerg Roedel(MAINTAINER)在帮助我处理客户的一个intel iommu的问题,所以就这个机会深入研究一下intel iommu。 事前材料准备: git clone https://github.com/torvalds/linux.git git clone https://github.com/qemu/qemu.git https://software.intel.com/sites/default/files/managed/c5/15/vt-directed-io-spec.pdf SUSE sles11sp1 发行版 首先在linux内核主线找到哪位大神首先引进Intel iommu功能的补丁, 一条命令就能找到: [jeff@localhost linux]$ gitlogdate | grep -i iommu | grep -i intel > ./patch/intel-iommu.patch 可以清楚看到是这位

KVM管理工具webvirtmgr的使用

送分小仙女□ 提交于 2021-01-06 02:28:54
WebVirtMgr的日常配置:添加宿主机,创建虚拟机,磁盘扩容,快照等 具体操作记录如下: 一、创建虚拟机 1、创建存储池 点击创建的宿主机,进入虚拟机部署界面 点击“存储池”按钮,创建存储池(即创建磁盘镜像存放的位置) 创建存储池时,首先要在宿主机上创建一个目录,然后在”路径“设置栏中添加该目录 例:# mkdir -p /home/kvm/kvmstorage [把提前下载好的centos镜像拷贝到上面创建的存储池目录/home/kvm/kvmstorage下;这里可以放不同版本的系统镜像(windows也可以),以便在下面安装过程中选择不同镜像安装系统] 输入名称和路径 2、添加磁盘镜像 选择KVM001 注意: 下面“Metadata”前的小方框一定不能勾选(默认是勾选的,要去掉!) 这里添加的“镜像”就是所创建虚拟机的硬盘空间(我测试环境给了150G) 虚拟机所占用的空间就是这个“镜像”所在的宿主机下路径所在的分区空间(也就是/home/kvm/kvmstorage/,即宿主机的home分区) 创建完成后如下: 3、宿主机网卡的桥接模式设置 注意下面的“设备”一项要填写桥接的物理网卡(即br0对应的那个网卡,这里填的是宿主机之前的内网卡enp2s0) 网关地址也一定要填写正确,不然虚拟机和宿主机同网段机器则会网络不通。 (如下这一步其实就是创建桥接的网卡配置

2021全国大学生计算机系统能力大赛操作系统设计赛第一场研讨会隆重举行

喜欢而已 提交于 2021-01-05 09:49:53
为吸引全国高校学生对操作系统的关注与兴趣,培养我国急需的操作系统研发人才,助力国产操作系统的发展,全国高等学校计算机教育研究会、系统能力培养研究专家组、系统能力培养研究项目发起高校决定主办 2021年全国大学生计算机系统能力大赛操作系统设计赛 (以下简称“OS比赛”)。12月26日,本次比赛的第一场研讨会在中科院计算所隆重举行,会议邀请了十余位来自学术界、产业界的专家和优秀的大学生对操作系统开源成果进行分享与交流。 本届OS比赛和研讨会得到了麒麟软件、翼辉信息、蚂蚁集团、国科环宇、360、 匿名捐赠者、OpenAnolis社区、FlyAI算法竞赛社区、全志科技、元心科技、中科创达、龙芯中科、睿赛德rtthread的大力支持。 OS比赛,即将打响! 本次研讨会由清华大学陈渝和向勇老师主持。中科院计算机所研究员包云岗在欢迎辞中表示:“操作系统中重要的部分是将社区建立起来,而构建社区有两大关键词,一是 开源 ,作为一种推动创新的重要方式,OS比赛中,无论是硬件还是软件,都将以开源方式推进。二是 和而不同 ,OS比赛并非仅仅是争夺名次,而是面向所有对OS设计感兴趣的学生,帮助其提升操作系统方面的知识和能力。在此,也鼓励大家积极参与OS比赛。” 北京大学教授陈向群在致辞中提到,人才培养已经从知识为本转向能力为本,而系统能力是计算机领域学生最重要的能力

General Protection Fault when trying to `sti`

微笑、不失礼 提交于 2021-01-05 09:23:22
问题 Trying to implement hardware interrupts on a test bootloader. Exceptions are working(thus found it is GPF). When trying to sti , a GPF is occured. Here is my main code: cli lgdt [gdt_desc] lidt [idt_desc] mov eax, cr0 or eax, 1 mov cr0, eax jmp 0x8:bit_32 bit_32: [bits 32] mov ax, 0x10 mov ds, ax mov es, ax mov fs, ax mov gs, ax mov ss, ax mov eax, 0x8000 mov esp, eax mov ebp, esp sti ; exception raised This is how my GDT looks like: start_gdt: null: dd 0x0 dd 0x0 code: dw 0xffff dw 0x0 db

General Protection Fault when trying to `sti`

蹲街弑〆低调 提交于 2021-01-05 09:23:18
问题 Trying to implement hardware interrupts on a test bootloader. Exceptions are working(thus found it is GPF). When trying to sti , a GPF is occured. Here is my main code: cli lgdt [gdt_desc] lidt [idt_desc] mov eax, cr0 or eax, 1 mov cr0, eax jmp 0x8:bit_32 bit_32: [bits 32] mov ax, 0x10 mov ds, ax mov es, ax mov fs, ax mov gs, ax mov ss, ax mov eax, 0x8000 mov esp, eax mov ebp, esp sti ; exception raised This is how my GDT looks like: start_gdt: null: dd 0x0 dd 0x0 code: dw 0xffff dw 0x0 db