1.运维工程师课程大纲
2.hybridclr源代码解析
3.Stratis 从 ZFS、Btrfs 和 LVM 学到哪些
运维工程师课程大纲
运维工程师课程大纲分为三个等级,从基础班至高级班,逐步深入。
基础班课程涵盖了Linux学习方法论,如VMware虚拟机的柚子龟源码使用和企业常用服务器(如DELL、IBM、HP)的介绍。学习内容包括Linux系统简介、安装、远程工具使用、常用命令,如Vim编辑器,以及系统启动过程、用户与组管理、磁盘与文件系统管理(parted)、LVM逻辑卷管理、audiorecord源码详解RAID管理、软件包管理(RPM/YUM源码包安装)等。此外,进程管理、计划任务、系统监控和日志管理也是基础部分的重要内容。
中级班深化了服务管理,如FTP/SAMBA/NFS、IP网络存储ISCSI、DHCP、NTP、DNS等,还包括Web服务器(如Apache、Nginx)的配置。高性能HTTP加速器Varnish、数据备份工具rsync/unison、usb禁用源码Tomcat和MySQL数据库基础也是中级课程的亮点。
高级班则涉及云计算领域的技术,如XEN环境和KVM环境部署,版本控制(SVN、CVS、GIT)的使用,以及RPM包构建、PAM和SELinux等高级安全策略。此外,还会学习用户身份验证的集中管理、NFSv4安全性提升、系统调优和性能优化、Linux集群技术(如Heartbeat、Keepalived、LVS、RHCS)以及CDN、电子积木源码Squid、Memcached和分布式存储系统(MFS、MooseFS)等实战应用。
hybridclr源代码解析
基于lua的unity热更新解决方案
使用lua5.3.5,可以通过VS进行调试,lparser.c负责解释lua源代码,LClosure *luaY_parser函数是解释lua源码的入口。llex.c中的llex函数负责词法分析,而lparser.c中的statement函数进行语法分析。lvm.c则用于执行lua代码。观察到lua需要第三方插件以查看性能,其基于寄存器的虚拟机性能优于ilruntime,但与unity交互成本高,依赖于lua的堆栈交互。
流行解决方案如XLua和ToLua,XLua在处理如Vector3等结构体时,mfc halcon 源码避免了不必要的拆箱和装箱操作,ToLua则直接在lua代码中实现了与C#类似的Vector3数据结构。
基于ilruntime的unity热更新解决方案
ilruntime的下载地址为github.com/Ourpalm/ILRuntimeU3D。它提供了unity示例工程,其中ImageReader.cs负责加载dll,而ilruntime使用Mono.Cecil来读取dll的PE信息。从2.0版本开始,ilruntime引入了寄存器模式以解决数值计算效率问题,分为按需JIT(ILRuntimeJITFlags.JITOnDemand)和立即JIT(ILRuntimeJITFlags.JITImmediately)两种模式。ILIntepreter.cs用于执行il代码,非寄存器模式下,Execute函数负责执行代码,而寄存器模式下的ExecuteR函数实现相同功能。然而,所有解决方案的虚拟机与il2cpp相互独立,导致元数据不相通,影响了与unity类的集成,需要额外封装和跨域访问处理。ilruntime支持大部分C#语法,但使用时需注意避免一些陷阱。
基于hybridclr的unity热更新解决方案
hybridclr提供了unity示例工程,官方博客地址为hybridclr.doc.code-philosophy.com...,使用手册可参考介绍 | HybridCLR。建议在vs和unity.3.0f1环境下调试PC工程。加载dll的两个主要入口在于.metadataModule.cpp中的LoadMetadataForAOTAssembly函数和RawImage.cpp读取原始信息,随后Image.cpp解析dll信息并翻译成il2cpp类型,AOTHomologousImage.cpp和ConsistentAOTHomologousImage.cpp分别用于封装加载过程,确保一致性或超集程序集的灵活管理。Assembly.cpp的Il2CppAssembly* Create函数解析PE头、CLR头和元数据以得到镜像信息,随后初始化metadata和interpreter模块以提供快速访问和执行速度。
hybridclr的优势在于直接使用il2cpp的内存对象,避免跨域问题;利用C#语言特性进行开发;并能够使用unity自带的profiler工具查看性能。
Stratis 从 ZFS、Btrfs 和 LVM 学到哪些
深入剖析Stratis,一个卷管理文件系统,它在设计时借鉴了ZFS、Btrfs和LVM的长处,旨在提供一种强大而不复杂的本地存储管理系统。
在深入探讨Stratis之前,我们先了解已有的解决方案,包括ZFS和Btrfs。ZFS,由Sun Microsystems为Solaris开发,后移植至Linux,但因CDDL协议授权的代码无法合并到GPL协议授权的Linux源码树中,从而使其在企业级Linux供应商中难以得到广泛支持。而Btrfs,作为众多用户心目中的“最佳文件系统”,虽无授权问题,但在稳定性和功能特性上仍有提升空间。
正是这些挑战激发了Stratis的诞生。Stratis旨在打破现状,解决ZFS和Btrfs的种种问题。它选择采用Linux内核的其他已有特性,如device mapper子系统以及久经考验的高性能文件系统XFS,来创建存储池,而不是从零开始构建一个内核支持的VMF文件系统。
在借鉴ZFS的思路中,Stratis设定了最初的开发目标,学习了用户对下一代文件系统的预期。同时,它也意识到应避免ZFS的某些设计,例如在挂载来自其他主机的存储池时需要进行“导入”步骤。此外,Stratis希望改进ZFS在增加新硬盘或替换硬盘时的限制,尤其是在存储池已进行冗余配置的情况下。
在Btrfs方面,Stratis欣赏其单一的命令行工具,以及对冗余的处理方式,如Btrfs profiles,允许用户在添加或移除硬盘时有更多的灵活性。Stratis还借鉴了ZFS和Btrfs在快照实现、对发送/接收的支持上的共性,以定义其自身的特性和功能。
通过研究LVM,Stratis了解到与之共享的大量特性,如使用DM以及如何处理磁盘元数据格式。然而,与LVM相比,Stratis的设计更注重用户友好性和易用性,而非为专业用户提供精确的卷组配置选项。
Stratis的设计考虑了不同用户的需求,提供了一种尝试满足其需求的本地存储管理解决方案。它强调了自由和开源软件带来的好处,即每个组件都是开源的,可以自由查看和修改源代码,用户可以根据自身需求选择最适合的工具。
综上所述,Stratis通过借鉴ZFS、Btrfs和LVM的经验,旨在提供一个强大、简单且易于使用的本地存储管理系统,以满足用户对本地存储管理解决方案的需求。