xbzrle 技术可以减少 VM 停机和热迁移的时间,当 VM 存在密集型写内存的工作负载时这种优化尤其明显。对于大型的企业应用如:SAP 和 ERP 系统,或者说任何使用稀疏内存模型的系统来说都有很好的优化作用。
libvirt vm boot 信息重定向
这篇博客要做的事情是,将虚拟机启动时的启动信息传到宿主机上的一个文件中。这个工作本身并不复杂,难点在于 virsh 中对串口设备的封装处理,以及 grub2 中的配置。
若想要好好理解 qemu 重定向串口的做法背后的原理和思想,非常建议先阅读第一章的预备知识。
conserver
Conserver 是一个允许多个用户同时使用一个 serial console 的应用。它能够保存日志,允许用户获取对 console 的写权限(每次一个)。它的思想是记录你 serial 上所有的通信,使得你能够返回去查看是否有什么东西崩溃了。支持多用户的功能,使得你能够和其他人一起工作。
东西是个好东西,但是配置实在是太让人迷惑了。。网上示例还巨少。
Centos7 内核构建
因为工作需求,要修改一下 Centos7 的内核,然后替换原有的内核。因为 Centos7 采用 rpm 包进行管理,因此内核源码也采用这种方式获取,并且编译后的内核也可以打成 rpm 包发布。注:本文参考wiki.centos中构建内核相关的步骤。
网卡多队列
本篇博文介绍一些有关网卡多队列的内容,该文为 zstack 培训 - 性能分析课程笔记 1 的扩展阅读。
网卡多队列源自于网络 QoS 问题,网络 QoS 问题提出的队列模型,对 I/O 的开发以及网络性能的调优具有很大的指导意义。
第一节的网络 QoS 给出原理及算法的指导;
第二节讲诉在驱动和内核中是如何调度这些队列的。
性能分析课程笔记 1
zstack 最近想要在性能优化上有所动作,所以大牛们给我们这些小渣渣搞了的个性能分析的培训课程。这篇博客是我自己对课程内容的思考和总结,其中还包括了一些扩展内容。注:本文内容主要来自于ZStack内部的性能分析课程。
第一节课并没有涉及到具体的性能分析操作或者实践,所讲的东西比较形而上学,比较抽象。但是却能够为我们提供一些新的思维方式,对我们之后的生活学习都会有一些帮助。
搭建 Debian 仓库
Debian 仓库本质上就是把一堆*.deb 包放到一个文件夹,在此基础上,为了方便 apt 工具的管理,将这些 deb 包按照一定的规则存放,并额外提供一些元数据文件来协助 apt 工具快速地访问 deb 包。
Debian 仓库支持通过不同的协议访问,如 http 协议、ftp 协议或者普通的 file 访问。所有访问的目录只需要满足debian 仓库格式即可。
Linux firmware
最近在构建一个基于 debian 的网络操作系统 vyos,由于这个项目很多地方不完善,只能一步步跟着编译,一步步修改源码,吃了不少苦头。在构建 iso 的时候,遇到一个新的东西,以前没见过,也不知道是什么作用。翻译过来叫做固件(firmware)。
live-build、live-boot 和 live-config
要构建一个 live system 主要使用到的有三个工具:live-build,live-boot 和 live-config。这三个工具分别具备不同的职责:
- live-build,是一组用于构建 live system 的脚本的集合。你可以在
/usr/lib/live/build
下找到它们,并在/usr/share/live/build
下找到这些脚本使用的 functions; - live-boot,是一组用于为initramfs-tools提供钩子的脚本的集合,用于生成一个能够引导 live system 的 initramfs;
- live-config,是一组用于在live-boot之后自动配置 live system 的脚本的集合,它能够处理类似于设置 hostname,locales 和 timezone,创建用户等。
live system
我之前做过类似的 Linux 操作系统打包工作,但是对 live system 并没有一个整体的概念,趁这次编译 vyos 的机会梳理一下相关的知识。本文绝大部分内容来自 Debian live manual中的第四节The basics。
常用的镜像类型有三种:
iso-hybrid
,最通用的镜像类型,可在虚拟机、光学媒介或者 USB 便携式存储设备使用;hdd
,在某些特殊情况下这个类型更加合适,后文有解释;netboot
,用于网络安装的镜像,常用于运维批量安装。