Hello, World!

~ Enjoy Today ~

Executable and Linkable Format
ELF Executable and Linkable Format,可执行与可链接格式,其一个很熟悉的身份就是 Linux 操作系统的标准可执行文件格式,在 Linux 上运行我们编写的代码时,就需要将其编译成 ELF 格式。 另外它还定义了共享库和核心转储文件的结构和布局。 ELF 文件格式在操作系统中起着重要的作用,它使得我们编写的代码能够被正确地编译、链接和执行。 此外,部分 Unix 系统,如: Solaris、FreeBSD 等也采用 ELF 作为其可执行文件格式。 ELF 文件格式被设计为可扩展和灵活的......
很快的共享内存
WHY 共享内存 进程间通信有许多种方式,不同的场景有不同的选择。 当通信内容非常简单的时候,可以考虑信号、信号量甚至 flock() 这种最基础的通信方式。 当需要传递不仅仅是信号这种规模的数据时,可以考虑 FIFO、MQ 等内核 API,也非常的简单易用 。 当我们的传输内容再进一步复杂,需要用“协议”去抽象这种复杂度的时候,Unix Domain Socket 会是一个不错的选择,比如常见的 gRPC over UDS;或者牺牲一点网络栈开销,直接使用基于 TCP / UDP 的 Socket 也非常......
Linux Kernel Debug Tips
Kernel Kernel undertakes the core Operating System job, which is the foundation of the current software ecosystem. So, knowing more about how the kernel works will contribute to the construction of our user mode system. The best method to learn software code is debugging while watching, software = code + data, know more about the runtime data while learning code can help us understand it better. However the Kernel is not a normal software system, we can’t add breakpoint and debug it through IDE debug button like other normal software, though we can implement it by kgdb + QEMU, it’ still too heavy, and not available for online systems. This article shares two lightweight kernel debugging tips, helps us observing it runtime status rapidly. Kernel Module Usally, our codes are runing in user mode. In Linux operating systems, the instruction of user mode program will run in level Ring 3 , they do not have the permission to acces the data in level Ring 0 high memory address space, which means that they can’t snoop the data inside Kernel. In that case, why not try to run our code inside the Kernel? It’s possible to edit the source code of kernel, adding log to print the information we concerned, but it’s a long tedious step.......
CubeFS&Kubernetes实践
Kubernetes (K8S) 是目前容器编排领域事实上的标准,在全球范围内有着广泛的应用。 CubeFS 既可以在 K8S 集群中部署客户端,通过 CSI 接口为 K8S 提供持久卷存储能力,也可以直接将 CubeFS 服务端集群整个部署在 K8S 中。 本文将分别介绍一下如何在 K8S 集群中部署 CubeFS 客户端、服务端,以及一些常见的运维操作和注意事项。 服务端 随着容器化的普及,基础设施全部上 K8S 是未来的趋势,这样所有的资源可以统一调度,且有着云原生庞大生态的加持,基础设施的运维成本也将大幅......
聊一聊磁盘
磁盘 在计算机发展的历程中,存储设备的演进一直是一个引人入胜的故事。 从最早的打孔纸带,到磁性存储,再到今天的固态硬盘,人们一直在追求更快、更大、更可靠的数据存储方案。 在这个演进过程中,磁盘凭借着断电数据不丢失、容量大、价格实惠等优势,成为了最重要的存储设备之一。 虽然最初 ‘磁盘’ 狭义上的概念专指使用磁性材料的存储设备,但在今天,这个词已经泛指所有的持久化存储设备。让我们一起来探......
容器网络可视化:Weave Scope
Scope 简介 scope 是 weavework 开源的一款容器集群网络可视化监控方案,可以提供整个集群的实时网络拓扑,能具体到容器内进程这一粒度,同时还能提供对容器进行简单的详情查看、销毁、远程登录等管理功能。 功能 Overview 下图是 scope 的管理后台,打开可以看到图中有很多个六边形,代表一个个容器,而容器之间的连线则代表它们之间当前存在网络连接,鼠标悬浮到线条之上还能看到连接发起的方向,这样我们就能直观地观察到整个集群的网络流量拓扑了,哪几个服务之......
Linux 内核轻量级调试小技巧
Kernel 内核承担了核心的操作系统工作,是当今软件生态的基石,因此了解内核是如何工作的能极大的帮助我们更好地构建用户态系统。 学习软件源代码最好的方式就是边看边 DEBUG,软件 = 代码 + 数据,看代码的同时了解其运行时数据能让我们更好的理解整体逻辑。 但内核毕竟不是普通的软件系统,并不是简单的在 IDE 里面一点就能断点调试的,虽然也可以通过 kgdb + qemu 实现在 IDE 中的断点调式,不过这样实在是太重了,而且也不能分析正在运行中的线上......