qemu

懂了!VMware、KVM、Docker原来是这么回事儿

China☆狼群 提交于 2020-08-06 10:32:05
云计算时代,计算资源如同小马哥当年所言,已经成为了互联网上的水和电。 虚拟主机、web服务器、数据库、对象存储等等各种服务我们都可以通过各种各样的云平台来完成。 而在云计算欣欣向荣的背后,有一个重要的功臣,那就是 虚拟化技术 。可以毫不客气的说,没有了虚拟化技术,云计算无从谈起。 说起虚拟化你会想到什么?从我们常用的虚拟机三件套VMware、VirtualPC、VirutalBox到如今大火的KVM和容器技术Docker? 这些技术是什么关系,背后的技术原理是怎样的,又有什么样的区别,各自应用的场景又是什么样的? 看完这篇文章,相信大家都能回答上面问题。 历史背景 什么是虚拟化技术? 维基百科中的解释是这样的: 虚拟化(技术)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。 对于一台计算机,我们可以简单的划分为三层:从下到上依次是物理硬件层,操作系统层、应用程序层 1974年,两位计算机科学家Gerald Popek 和 Robert Goldberg发表了一篇重要的论文 《虚拟化第三代体系结构的正式要求》 ,在这篇论文中提出了虚拟化的三个基本条件: 等价性 :程序在本地计算机执行和在虚拟机中执行应该表现出一样的结果(不包括执行时间的差异) 安全性 :虚拟机彼此隔离

2020元旦献礼——从零开始开发一个操作系统

南笙酒味 提交于 2020-08-05 19:00:41
序言 在2019年的最后一天终于完成了整个系统的开发,并给它起名曰—— Inios 。就如同文章名字一样,完全是从内核编写,非二次开发,从最初的“hello os”到初次有了系统的样子。主要用C语言编写,部分汇编语言。整个操作系统完成后的大小为 39.6 KB 之所以这么小其实主要是语言的原因,另一个重要原因是在开发中对部分系统代码和字体库以及媒体的压缩。中间进行多次迭代,最终完成整个操作系统的开发 Inios 。 系统预览 开发环境及主要工具 win 8.1 x64 :用来开发Inios的“载体” qemu 虚拟机:测试Inios wxmedit:16进制编辑器 nsak:汇编器 Notepad++:代码编辑器 Git:除了提交代码外,还用来生成特殊文件 系统功能 命令行终端 mem : 显示内存的使用情况 cls : 清空控制台内容 dir : 列出目录 type :查看文件内容 hlt :运行.hrb可执行程序 shift+F1 :强制关闭程序 enter :关闭当前应用程序窗口 F11 :将最下面的窗口置顶 Tab :切换窗口 鼠标点击 :切换窗口/移动窗口 shift+F2 :打开终端/打开另一个终端窗口(支持多个) exit :关闭当前终端窗口 ncst xx :一个终端可以运行多个程序 保护系统 主要做了“内存访问权限 ”、“异常”和

kvm虚拟化

血红的双手。 提交于 2020-07-29 04:56:01
1. 虚拟化分类 1.1 虚拟化   虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而显著提高计算机的工作效率。 虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。 1.2 虚拟化层次种类 完全虚拟化 :   最流行的虚拟化方法使用名为 hypervisor 的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。 VMware 和微软的VirtualPC 是代表该方法的两个商用产品,而基于核心的虚拟机 (KVM) 是面向 Linux 系统的开源产品hypervisor 可以捕获 CPU 指令,为指令访问硬件控制器和外设充当中介。因而,完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是, hypervisor 给处理器带来开销。 准虚拟化 :   完全虚拟化是处理器密集型技术,因为它要求 hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户端操作系统,让它以为自己运行在虚拟环境下

kvm虚拟机管理

一笑奈何 提交于 2020-07-28 17:52:34
1. 利用virt-manager创建虚拟机 1> 打开图像化界面,打开虚拟系统管理器 2> 新建虚拟机 3> 选择本地介质安装 此处需要先将镜像文件导入图形化服务器的 /var/lib/libvirt.images/目录下 [root@localhost images]# cd /var/lib/libvirt/images/ [root@localhost images]# ls CentOS-7-x86_64-DVD-1611.iso 4> 设置内存和CPU 5> 创建磁盘 6> 准备安装 选择引导项,将网卡改为新创建的br0桥接,开始安装。 qemu负责io,而kvm负责CPU、内存 7> 安装完成后是用命令virsh list --all 命令查看当前安装的虚拟机 [root@localhost ~]# virsh list --all #查看所有的虚拟机 Id 名称 状态 ---------------------------------------------------- - centos7.0 关闭 [root@localhost ~]# virsh list #仅查看启动的虚拟机 Id 名称 状态 ---------------------------------------------------- 2. 远程管理kvm虚拟主机

KVM虚拟化、创建、克隆、qemu-guest-agent安装等实践过程

大兔子大兔子 提交于 2020-07-28 11:13:27
由于公司需求,所以最近学习了KVM,下面是本人安装实践过程。 安装虚拟化软件 查看CPU是否支持KVM egrep 'vmx|svm' /proc/cpuinfo --color=auto 可以看到grep出来的内容,就说明支持kvm。 通过apt进行安装 apt-get install -y qemu-kvm libvirt-daemon libvirt-daemon-system 启动并设置开机启动 systemctl start libvirtd && systemctl enable libvirtd 配置网桥网卡,如下配置 ubuntu路径: vim /etc/netplan/01-network-manager-all.yaml network: version: 2 renderer: NetworkManager ethernets: enp2s0: dhcp4: yes dhcp6: yes #bridge: br0 bridges: br0: dhcp4: no dhcp6: no addresses: [192.168.10.163/23] gateway4: 192.168.10.1 nameservers: addresses: [223.5.5.5,223.6.6.6] 重启网卡 netplan apply 安装vncserver apt-get

kvm虚拟迁移

橙三吉。 提交于 2020-07-28 10:10:01
1. 虚拟迁移 迁移: 系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化。 最终我们迁移的目的就是: 简化系统维护管理;   高系统负载均衡;   增强系统错误容忍度;  优化系统电源管理。 2. 热迁移 KVM 虚拟机的热迁移Live Migration:   服务器虚拟化技术是当前的热点,而虚拟机的“热迁移( Live Migration )”技术则是虚拟化技术当中的热点。 热迁移(又叫动态迁移、实时迁移),即虚拟机保存( save ) / 恢复 (restore) :将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。 迁移的种类:   P2P :物理机之间的迁移;   V2P :虚拟机迁到物理机;   P2V :物理机迁到虚拟机;   V2V :虚拟机迁到虚拟机。 3. 热迁移的应用   1> 虚拟机的热迁移技术最初是被用于双机容错或者负载均衡:当宿主机出现软硬件故障导致服务异常时,虚拟机可漂移到另外主机上

熊谱翔:变化的RT-Thread,不变的初心

寵の児 提交于 2020-07-28 08:06:34
前段时间有爆出了某大佬的OS和RT-Thread很像,所以画了这么张图,同时也发在社交媒体上:"Roadmap or history of RT-Thread? No matter what RT-Thread is, it's alway there. Hope RT-Thread is a locomotive, lead us all to the future." 提到RT-Thread的发展路线,其实是被很多社区小伙伴关心的:RT-Thread到底会走向何方? 初心出发 由于个人兴趣及项目需求动手写了一个RTOS,在2006年初发布了RT-Thread的第一个内核版本并开源,一开始纯粹以工程师的角度去做,当时有个看似遥远的目标是能做成一个开放式,嵌入式系统领域的Linux。 然而接下来几年RT-Thread这个项目进入了一个艰难时期,因为仅仅只是一个RTOS内核很难得到关注,期间凭借个人兴趣不断去做不同平台移植,完善功能。期间也做过一些社区活动,很多时候就是一些爱好者在汉堡王、KFC这类地方AA制聚会交流,记得最惨淡的时候聚会只有两个人(包括自己)。 长时间的坚持和付出,RT-Thread开始有了些支持者,然后不断有开发者加入进来贡献代码和完善。ARM Cortex M3的出现,让开源的RT-Thread走上了新的阶段,此时的RT-Thread已不再只是一个实时内核了

KVM虚拟化

喜夏-厌秋 提交于 2020-07-28 03:59:33
1. 虚拟化介绍 虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。 物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。 那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢? 这个主要是通过一个叫做 Hypervisor 的程序实现的。 根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种: 全虚拟化 半虚拟化 全虚拟化: 全虚拟化: Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型 半虚拟化: 物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型 理论上讲: 全虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比半虚拟化要高; 半虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。 2.

没有国产主机,怎么开发:交叉编译和QEMU虚拟机

别来无恙 提交于 2020-07-27 13:05:09
1. 背景 近期国产化的趋势越来越浓,包括国产操作系统、国产CPU等。时隔十多年,QQ for Linux也更新了。做为软件开发人员,“有幸”也需要适配国产化。至于国产化的意义等就不在此讨论。 本文提到的国产主机主要是指使用国产CPU和操作系统的计算机,比如:操作系统是银河麒麟,CPU是飞腾FT2000。如果需要做适配开发,起码需要一台对应的主机吧。据说在国产化早期,有钱都难买到机器,需要特殊渠道申请购买。不过,现在购买还是比较方便的。 通过客户提供的正规正统的厂家询价,着实吓一跳,一台居然要一万多!!而同等性能配置的windows-x86普通台式主机,才两三千块左右,相差有点大呀。本着能省就省的原则,上万能的某宝看能不能淘一个。真得感谢马爸爸和深圳华强北,5千多块,突然感觉肉没那么痛了。 其实完全可以理解,国产的批量肯定很小很小,价格必然是高的。对于不专门开发“国产软件”的公司来说,买一台使用率比较低的机器不太值得。后面将介绍在没有国产主机情况下,进行软件开发的两种替代方法:交叉编译和QEMU虚拟机。 2. 银河麒麟是什么 银河麒麟操作系统有服务器版本和桌面版本,本文使用的是桌面版本。具体细节看官方的介绍即可,就不做搬运工了。官方说的自主研发、安全可控都不是我们所关心的,我们只需要关心它的内核是什么,会不会如网上所说根本就是个Ubutun,改个皮肤而已?!。

深入理解系统调用

十年热恋 提交于 2020-07-27 05:32:13
实验内容: 找一个系统调用,系统调用号为学号最后 2位相同的系统调用【即 97号系统调用】 通过汇编指令触发该系统调用 通过 gdb 跟踪该系统调用的内核处理过程 重点阅读分析系统调用入口的保存现场、恢复现场和系统调用返回,以及重点关注系统调用过程中内核堆栈状态的变化 实验环境: VMWare虚拟机下的Ubuntu18.04.4,实验采用的内核版本为linux-5.4.34。 1 环境准备 1.1 内核编译 回退实验一的补丁操作: cd linux-5.4.34 patch -R -p1 < ../mykernel-2.0_for_linux-5.4.34.patch make defconfig 修改内核编译配置重新编译: #打开debug相关选项 Kernel hacking ---> Compile-time checks and compiler options ---> [*] Compile the kernel with debug info [*] Provide GDB scripts for kernel debugging [*] Kernel debugging #关闭KASLR,否则断点失败 Processor type and features ---> [] Randomize the address of the kernel image