kvm

深度:一文看懂Linux内核!Linux内核架构和工作原理详解(转)

非 Y 不嫁゛ 提交于 2020-04-25 05:36:32
原文链接 http://www.openpcba.com/web/contents/get?id=4638&tid=15 简介 作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。 全文导读 Linux内核预备工作 Linux内核体系结构简析简析 Linux体系结构和内核结构区别 Linux驱动的platform机制 Linux内核体系结构 内核模块 Linux 内核学习经验总结 结尾 Linux内核预备工作 理解Linux内核最好预备的知识点: 懂C语言 懂一点操作系统的知识 熟悉少量相关算法 懂计算机体系结构 Linux内核的特点: 结合了unix操作系统的一些基础概念 Linux内核的任务: 1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。 2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层

【翻译】ARM虚拟化软件和架构支持的设计,实现和评估

为君一笑 提交于 2020-04-24 03:41:48
这是一篇论文:https://academiccommons.columbia.edu/doi/10.7916/D8D238J2/download 学习ARM虚拟化非常好的材料,这里翻译了其中几个章节。 ----------------------------------------------------------------------------------------------------------- 2.1 ARM虚拟化扩展 由于ARM体系结构不是经典的可虚拟化(参见第1章),因此ARM引入了虚拟化扩展(VE)作为ARMv7 [11]和ARMv8 [13]体系结构的可选扩展。 诸如Cortex-A15之类的ARM CPU [10]包括对虚拟化的硬件支持,针对服务器和网络市场的所有ARMv8 CPU都包括虚拟化扩展。 我简要介绍了ARM虚拟化扩展。 2.1.1 CPU虚拟化 要运行VM,必须虚拟化特权CPU模式以保持隔离,并使管理程序保持对物理硬件的控制。如果允许VM完全控制底层硬件,那么它们会妨碍系统上的其他任务和VM运行,关闭CPU,甚至危及系统其他部分的完整性。如第1章所述,可虚拟化体系结构可以通过在非特权用户模式下运行所有​​VM(包括guest内核)来虚拟化特权CPU模式,并将每个敏感操作捕获到管理程序并在软件中模拟操作。要在非虚拟化架构(如ARM

国产操作系统深度deepin V20体验

时光总嘲笑我的痴心妄想 提交于 2020-04-23 04:42:44
1. 安装系统 国产操作系统deepin V20 bata版本已经发布。本人第一时间安装和体验。在犹豫很久之后,因为受到最新内核,高版本的bash和Python的诱惑,字体更加和谐等因素,选择升级系统。 个人比较喜欢全新安装,即直接重装系统。本人使用的小米笔记本,扩展了一个120G的SSD,用这块SSD来作为deepin系统盘。 安装操作系统的过程这里不表,网上有很多关于deepin和win10双系统的教程。 在安全过程中,遇到第一个问题就是,启动过程中出现了以下问题: DRM: Pointer to TMDS table invalid 在网上检索之后,发现可以通过修改内核启动参数,来屏蔽这个报错。事实证明可行。 注:以下操作是安装好操作系统之后进行的 vim /etc/default/grub 修改如下: GRUB_CMDLINE_LINUX_DEFAULT="splash quiet ipv6.disable=1 nouveau.modeset=0 " 上述内容同时禁用了系统的ipv6 然后执行 update-grub ,即可更新,重启生效。 因为是双系统,必须给于开机时一个缓冲时间。修改/etc/default/grub最后一行的GRUB_TIMEOUT=15,这个依据个人喜好调整即可。更新生效的方式同上。 另外,双系统在选择界面反应并不是那么快捷

国产操作系统深度deepin V20体验

自闭症网瘾萝莉.ら 提交于 2020-04-22 14:00:29
1. 安装系统 国产操作系统deepin V20 bata版本已经发布。本人第一时间安装和体验。在犹豫很久之后,因为受到最新内核,高版本的bash和Python的诱惑,字体更加和谐等因素,选择升级系统。 个人比较喜欢全新安装,即直接重装系统。本人使用的小米笔记本,扩展了一个120G的SSD,用这块SSD来作为deepin系统盘。 安装操作系统的过程这里不表,网上有很多关于deepin和win10双系统的教程。 在安全过程中,遇到第一个问题就是,启动过程中出现了以下问题: DRM: Pointer to TMDS table invalid 在网上检索之后,发现可以通过修改内核启动参数,来屏蔽这个报错。事实证明可行。 注:以下操作是安装好操作系统之后进行的 vim /etc/default/grub 修改如下: GRUB_CMDLINE_LINUX_DEFAULT="splash quiet ipv6.disable=1 nouveau.modeset=0 " 上述内容同时禁用了系统的ipv6 然后执行 update-grub ,即可更新,重启生效。 因为是双系统,必须给于开机时一个缓冲时间。修改/etc/default/grub最后一行的GRUB_TIMEOUT=15,这个依据个人喜好调整即可。更新生效的方式同上。 另外,双系统在选择界面反应并不是那么快捷

基于network filter的 虚拟机访问控制

怎甘沉沦 提交于 2020-04-20 10:23:28
功能介绍 Network filtering XML为虚拟化系统管理员提供对了一种网络流量的过滤规则,系统管理员可以通过配置过滤参数,实施和管理对虚拟机网络流量的接受和转发。由于过滤规则不能绕过直接进入虚拟机内,它使得一个filter对虚拟用户的访问控制具有强制性。官方wiki链接 Network filter Network filtering 子系统允许每一个虚拟机的网络过滤表可以被单独配置。我们可以在启动时配置虚拟机的访问控制过滤表,也可以在虚拟器运行时对虚拟机的规则进行修改。后者可以通过修改network filter XML的方式进行。 Libvirt 允许多台虚拟机共用一个。当filter被修改时,所有运行的虚拟机都会自动更新filter的过滤规则。 Network filtering XML部署在KVM Server上可以实现:虚拟网络隔离、入侵防护、批量管理等功能。Openstack的网络控制就是基于Networkl filter。 开始使用 Network filter 作用于个别网卡之中,它内定义在虚拟机的XML中,需要做哪些过滤就将过滤表的名字加到相应网卡的配置文件中。例如,我门对桥接到“br1”上的网卡做过滤,过滤表为“limit”,配置如下: <interface type='bridge'> <mac address='52:54:00:24:4c:ee

docker深入学习

纵饮孤独 提交于 2020-04-20 07:07:19
docker深入学习 一、容器的介绍和容器的发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+Docker,这两年docker更是如日中天。docker只是容器的一种,在学习docker之前,我有必要先了解一下什么是容器?有助于我们更好的了解docker。 什么是容器: 容器是在隔离的环境里面运行的一个进程,这个隔离的环境有自己的系统目录文件,有自己的ip地址,主机名等。 也有人称:容器是一种轻量级虚拟化的技术。 容器相对于kvm虚拟机的优势: 1:容器能提供接近宿主机的性能,而kvm虚拟机会损害一部分宿主机的性能; 2:同样硬件配置的宿主机最多能启动10虚拟机,那么它可以启动100+容器; 3:启动一台kvm虚拟机,可以能需要20秒,启动一个容器只需要1秒; 4:kvm需要硬件cpu的支持,容器不需要; linux开机启动流程: bios开机硬件自检 根据bios设置的优先启动项 读取mbr引导 加载内核 启动第一个进程/sbin/init 执行系统初始化脚本/etc/rc.d/rc.sysinit 完成系统初始化 运行想要的服务sshd 总结:kvm虚拟机运行一个sshd服务需要完整的开机启动流程,容器是直接启动sshd服务,中间的流程全部精简。(docker共用宿主机内核。

docker深入学习

丶灬走出姿态 提交于 2020-04-19 17:42:22
docker深入学习 一、容器的介绍和容器的发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+Docker,这两年docker更是如日中天。docker只是容器的一种,在学习docker之前,我有必要先了解一下什么是容器?有助于我们更好的了解docker。 什么是容器: 容器是在隔离的环境里面运行的一个进程,这个隔离的环境有自己的系统目录文件,有自己的ip地址,主机名等。 也有人称:容器是一种轻量级虚拟化的技术。 容器相对于kvm虚拟机的优势: 1:容器能提供接近宿主机的性能,而kvm虚拟机会损害一部分宿主机的性能; 2:同样硬件配置的宿主机最多能启动10虚拟机,那么它可以启动100+容器; 3:启动一台kvm虚拟机,可以能需要20秒,启动一个容器只需要1秒; 4:kvm需要硬件cpu的支持,容器不需要; linux开机启动流程: bios开机硬件自检 根据bios设置的优先启动项 读取mbr引导 加载内核 启动第一个进程/sbin/init 执行系统初始化脚本/etc/rc.d/rc.sysinit 完成系统初始化 运行想要的服务sshd 总结:kvm虚拟机运行一个sshd服务需要完整的开机启动流程,容器是直接启动sshd服务,中间的流程全部精简。(docker共用宿主机内核。

关于云服务器 ECS 建站教程:镜像部署Windows环境篇

血红的双手。 提交于 2020-04-18 15:31:41
镜像部署Windows环境 您可以根据业务需要,选择下列任意一种方式部署 云服务器 ECS 实例的使用环境: 镜像部署 手动部署 下表列出了两种部署方式的特点。一般推荐镜像部署。如果您需要个性化定制部署,建议使用手动部署。 对比项 镜像部署 手动部署 部署所需时间 3-5分钟,快速部署上云 1-2天。选择适合的操作系统、中间件、数据库、各类软件、插件、脚本,再进行安装和配置 专业性 IOPS 由运维过万级用户的优质服务商提供 依赖开发人员的开发水平 个性化 支持主流应用场景 可满足个性化的部署要求 安全性 经过严格安全审核,集成最稳定安全的版本 依赖开发人员的开发水平 售后服务 专业售后工程师团队支持 依赖运维人员的经验,或由外包团队支持 注意: 本文档只介绍通用的操作步骤。一般镜像软件安装包都包含了操作指南,请阅读镜像操作指南进行具体的安装和配置。 阿里云的云市场 提供了丰富的镜像资源。镜像集成了操作系统和应用程序。在创建实例时,您可以选择包含了应用环境的镜像,创建后无需再部署环境。 注意:云服务器 ECS 不支持虚拟化软件(如 KVM、Xen、VMware 等)的安装部署。 操作步骤 说明:本节介绍的方法适用于已经购买实例、但想使用镜像重新部署环境的用户。您也可以在创建实例的时候就选择镜像,请参考创建实例。 如果您想使用镜像市场的镜像来替换当前实例的操作系统

Openstack kvm windows2008镜像

送分小仙女□ 提交于 2020-04-17 03:01:17
【推荐阅读】微服务还能火多久?>>> 上一篇文章制作的是win7的镜像,其实刚开始是想做一个win2008的镜像使用,但是开始遇到了点麻烦,就曲线救国先拿win7练练,技术成熟后再制作win2008的镜像。既然上一篇已经把win7的镜像制作好了,这一篇就制作win2008的镜像。流程还是一样,只是在替换网卡驱动时有些小问题。在下图之前的操作步骤参照win7镜像制作流程。 开始选择网卡驱动,没有win2008的驱动,google出来的大部分都是选择WLH-AMD64,但是我在这一步安装时提示无法找到驱动,既然win7的驱动可以,就用win7的驱动代替,选择WIN7-AMD64 接下来所有的操作和win7的一样,就是关机、上传镜像等等。 来源: oschina 链接: https://my.oschina.net/u/123777/blog/95557

Qemu中PCI设备透传(PCI-Assign)源码分析

不打扰是莪最后的温柔 提交于 2020-04-14 16:22:57
【推荐阅读】微服务还能火多久?>>> 在网上看到很多人说 Qemu 的 PCI-Assign 透传不支持 IOMMU ,而 VFIO 透传却可以(还被当做一种优势进行推荐)。而 VFIO 跟 SRIOV 并非有必然联系,那就是说 VFIO 和 PCI-Assign 进本都是靠软件实现的了?既然都是软件实现的,为啥 PCI-Assign 不可以,而 VFIO 可以呢?这不科学啊!从来也没人说清楚这件事,到源码里看一下吧!(最后发现他们说的都是错的,网上无根据的文章不要乱信) PCI-Assign透传的基本使用步骤 随便在网上找一个 PCI-Assign 透传的使用方法: How to use 'pci pass-through' to run Linux in Qemu accessing real Ath9k adapter =============================================================================== # Boot kernel with 'intel_iommu=on' # Unbind driver from the device and bind 'pci-stub' to it $ echo "168c 0030" > /sys/bus/pci/drivers/pci-stub/new_id