September 2015

You are browsing the site archives for September 2015.

概述 从这篇博客开始,我们主要研究linux下ext2文件系统的设计和实现,我们的主要是目标是对ext2关键技术进行剖析,当然,ext2的年代比较久远了,可能研究它也不见得有多大的参考价值,但是,我的目标是将文件系统做成一个系列,ext2只是一个引子,后续会有ext3,ext4,reiserfs,btrfs,xfs等等,敬请期待。 本篇博客主要关注ext2文件系统的磁盘布局,即ext2会在格式化时将磁盘划分成什么样子。

Continue reading ext2磁盘布局

说明 Linux的IO路径可能是Linux系统中最纷繁复杂的模块了,而它又是如此的重要,直接决定了系统的性能。之前在看Linux IO模块源码时,就对IO模块的层次比较模糊,在对IO路径上的各个模块进行了较深入的理解后,将自己的理解写出来,希望对入门者能有所帮助。

Continue reading Linux 的IO层次

Go语言死锁检查工具,可以输出复杂的死锁链条信息,谁等在哪里等待,谁在哪里锁的,具体到行号,在不开启死锁检查时不会影响程序性能,可直接替代原生sync包。 这个包用来在开发调试期,帮助排查程序中的死锁情况。

Continue reading Go语言死锁检测工具

概述 Bitcask是由Riak提出的海量小文件存储场景下的解决方案,着眼解决以下问题: 读写低延迟 随机写请求的磁盘高吞吐量 故障时的快速恢复且不丢数据 使用简单 Bitcask论文中主要定义了文件存储格式以及相关API,感兴趣可见参考资料。 BeansDB是Douban参考Bitcask论文开发的适用于Douban使用场景的小文件存储系统。作者David通过匠心独具的设计和深厚的技术水平将这一复杂的问题解决的比较优雅,值得仔细品味一番。 近期阅读了Bitcask论文和部分BeansDB源码,在此基础上分析BeansDB的设计和实现上的一些关键技术,包括数据文件组织、内存hash tree索引等,拿出来与大家交流探讨。

Continue reading 优雅的Bitcask/BeansDB