gearcache在qemu-kvm虚拟化平台下的实现
需要用到的数据结构: 链表,基树。
gearcache在qemu-kvm虚拟化平台下的实现主要有以下的步骤:
1.打开镜像文件的时候,为gearcache中的基数池(page_node_pool)和读写数据池(buf_pool)的存储创建相应的内存空间。
2.将qemu-kvm对于镜像文件的读写IO粒度控制在512字节。
3.对于所有的写请求进行拦截:
-(1)先通过该写请求的offset在基数池当中查找,如果存在该offset,那么将这个写请求复写(overwirte)到基数当中,覆盖对应的数据块。
-(2)如果该写请求的offset不存在基树池当中,那么就在buf_pool中分配512字节空间存储该数据,并在基数池(page_node_pool)中对应的offset的位置创立一个节点,保存该节点的信息,并将该节点插入(insert_this_write)到链表里面去,每个链表的节点都有一个指针指向对应的buf_pool的数据块中,并存储对应的offset。
-(3)然后判断buf_pool是否被写满了,如果写满了,就顺着在(2)中所建立的链表的顺序,将每个链表节点所存储的512字节的数据通过pwrite写到镜像文件对应的offset的位置中去。每写完一个节点的数据,释该节点对应的buff_pool 和page_node_pool的空间。直到到达链表的尾部。
4.对所有的读请求进行拦截;
-(1)通过该读请求的offset在基树池当中查找,如果存在该offset,那么将对应节点里所存储的512字节的数据返回便可。
-(2)如果该读请求不存在基树池当中,那么就执行qemu原本的读请求的处理。
5.关闭镜像文件的时候:
将每个链表节点所存储的512字节的数据通过pwrite写到镜像文件对应的offset的位置中去。每写完一个节点的数据,释该节点对应的buff_pool和page_node_pool的空间。直到到达链表的尾部。
gearcache在qemu-kvm虚拟化平台下的实现的更多相关文章
- 理解 Linux 网络栈(3):QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端)
本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...
- Qemu/kvm虚拟化源码解析学习视频资料
地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...
- kvm虚拟化平台搭建入门
KVM虚拟化有两种网络模式:1)Bridge网桥模式2)NAT网络地址转换模式Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. 环境: 本次实验要开启VMWare中对应Ce ...
- KVM虚拟化平台环境部署
一:安装依赖包 二:配置网卡 三:配置环境 实验环境: KVM01 192.168.200.10 关闭防火墙及相关的安全机制 [root@KVM01 ~]# systemctl stop fire ...
- qemu kvm 虚拟化
虚拟化: KVM是一个基于Linux内核的虚拟机,属于完全虚拟化.虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based).由于监控模型需要进行处理器调度,还需 ...
- kvm虚拟化平台搭建
一.虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个操 ...
- Linux 部署KVM虚拟化平台
简单介绍 KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案.KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Lin ...
- KVM虚拟化技术
KVM虚拟化技术 Qemu-kvm kvm virt-manager VNC Qemu-kvm创建和管理虚拟机 一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machi ...
- KVM虚拟化技术实战全过程
今天准备开始.................... centos安装-kvm 教程: http://www.linuxidc.com/Linux/2017-01/140007.htm http:// ...
随机推荐
- python request包使用指西
request是Python的一个网络模块包,使用它可以快速写一些强大的爬虫脚本
- HDU-1232/NYOJ-608畅通工程,并查集模板题,,水过~~~
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) http://acm. ...
- 转载:shell脚本之前的基础知识
转载地址:http://www.92csz.com/study/linux/12.htm 第十二章 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果 ...
- uva12558 Egyptian Fractions (HARD version)(迭代深搜)
Egyptian Fractions (HARD version) 题解:迭代深搜模板题,因为最小个数,以此为乐观估价函数来迭代深搜,就可以了. #include<cstdio> #inc ...
- 学.net必学的东西 10项【不知道我能不能学这么多,!- -,光程序编辑我都累死了】
原文发布时间为:2008-10-30 -- 来源于本人的百度文章 [由搬家工具导入] 10项.NET必学的技术2007年08月28日 星期二 14:58 1、WCF (Windows Communic ...
- 一份关于webpack2和模块打包的新手指南(一)
webpack已成为现代Web开发中最重要的工具之一.它是一个用于JavaScript的模块打包工具,但是它也可以转换所有的前端资源,例如HTML和CSS,甚至是图片.它可以让你更好地控制应用程序所产 ...
- T1503 愚蠢的宠物 codevs
http://codevs.cn/problem/1503/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 大家都知道,sh ...
- 寒武纪camp Day2
补题进度:8/10 A(计数+BIT) 题意: 给一个长度为n的数组a[],任意选0<=i<=j<n,将a[i]~a[j]从小到大排序,形成新的数组.问有多少个不同的新数组. N,a ...
- Windows平台kafka环境的搭建
注意:Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper 下载安装文件: http://kafka.apache.org/downloads.htm ...
- HDU 4786 Fibonacci Tree(生成树,YY乱搞)
http://acm.hdu.edu.cn/showproblem.php? pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others ...