今天这节课也是讲解文件系统的logging,这节课讲的是Linux中的广泛使用的ext3文件系统所使用的logging系统,同时我们也会讨论在高性能文件系统中添加log需要面对的一些问题。首先我会花几分钟来回顾一下,为什么我们要学习logging。
- 之所以我们认为logging很重要,是因为这是一个巨大的成功和重要的思想,几乎可以认为logging是一种魔法,它可以用在任何一个已知的存储系统的故障恢复流程中,它在很多地方都与你想存储的任何数据相关。所以你们可以在大量的存储场景中看到log,比如说数据库,文件系统,甚至一些需要在crash之后恢复的定制化的系统中。
- 你们也可以发现log作为从故障中恢复的机制,在分布式系统中也有大量的应用。因为log是一种可以用来表示所有在crash之前发生事情的数据结构,如果能够理解log,那么就可以更容易的从crash中恢复过来。
- 除此之外,当你尝试构建高性能logging系统时,log本身也有大量有意思的地方。
这里有一个术语,当我们谈到log时,与今天阅读的论文所用到的journal是同一件事情,它们是同义词。除此之外,今天的论文是有关向ext2增加journal,并得到ext3文件系统(注,所以可以认为ext3文件系统就是ext2加上了logging系统)。
接下来我将从这几个方面来讨论ext3文件系统:某种程度上将其与XV6进行对比;解释ext3是如何修复XV6的logging存在的性能问题;解释ext3在故障恢复时语义上的一些变化。