首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

从 NILFS2 看 Log-Structure 文件系统(1)

从 NILFS2 看 Log-Structure 文件系统(1)

NILFS2 的特性NILFS2 是一种 Linux 文件系统,人们称它为 New Implementation Log-Structure File System。我一时之间也不知道如何将 Log-Structure 翻译为中文。如果说 Log 是日志,那么可能会和 Ext3 等日志文件系统有所混淆。因此还是直接使用 Log-Structure File System 这个称呼吧。
进入 NILFS2 的细节之前,我想应该先从使用的角度来认识它。文件系统主要的功能是管理文件,NILFS2 也不例外。将 NILFS2 和其他形形色色的文件系统区别开的是它所有的一些独一无二的特性。
不间断的快照(continuously snapshot)不间断快照应该是 NILFS2 最吸引人的特性。它使得 NILFS2 用户能够方便地恢复被误删除的文件,或者将被误修改的文件恢复到修改之前的内容。
其他一些文件系统也支持 snapshot,但往往需要人工干预,即用户须使用 FS 自带的命令来创建快照。然而,误操作往往不可预料,不可能在误操作之前恰好创建一个快照,所以在其他文件系统中,恢复文件需要非常专业的人员和工具。
NILFS2 的用户则幸运地多,因为系统能自动备份对文件的所有操作。因此 NILFS2 不仅能及时恢复被删除的文件,还能恢复任意修改之前的文件内容。甚至可以说,在 NILFS2 文件系统中,用户不再需要专门的版本管理工具来管理文件的不同版本。而且这一切还是自动的!
对于系统管理员,NILFS2 的不间断快照功能使得 Online backup 等日常操作更加方便,无需再学习复杂的备份和恢复命令,进而从这些繁杂的日常事务中解脱出来。
高效的错误恢复长期以来,文件系统设计人员最关注的问题之一便是尽量减少系统崩溃后文件系统的检查和恢复时间。无论哪一种文件系统,当系统硬件崩溃时,文件系统便很可能处于不一致状态。因此 reboot 之后,便需要运行 fsck。
Ext3 和其他许多 Linux 文件系统采用日志技术减少 fsck 时间。NILFS2 是一种 Log-Structure 文件系统,其 fsck 时间更短,而且无论磁盘有多大,文件有多少,NILFS2 的 fsck 时间都是一定的。
快速 fsck 有什么意义呢? ChunkFS 的设计者 Valerie Aurora 曾描述过这样一件事情,有一次,Linux Archive 服务器遭遇意外,硬件 reboot 后,执行 fsck 花费了 1 个星期的时间,在这一周内,网站都无法提供访问,人们想,即使用备份来重新恢复数据也没有这么慢吧。在文件系统容量越来越大的时代,快速 fsck 这个特性非常有吸引力。
文件访问效率高许多研究表明,文件系统的整体效率主要由写操作的效率决定。因为文件系统读操作的效率由 cache 设计的好坏决定。在 Linux 中,cache 由 VFS 统一管理,因此提高写操作的效率能提高整体文件系统的效率。
在 Phoronix 网站公布的文件系统测试中,NILFS2 的性能在多项测试中并不占优,但在数据库应用中 NILFS2 的表现比较优异。比如图 1 所示,在 SQLite test 中 NILFS2 表现出了很高的性能。
图 1. SQLite 测试Phoronix 在其他的测试中多次使用大文件(几个 G 的大小)。传统文件系统读些大文件时也能很好的利用 IO 带宽。因为大文件意味着磁盘 IO 连续的几率大,seek 时间比较少,因此 NILFS2 并没有优势,反而在多项测试中垫底。
而在 SQLite 测试中,基本上是小批量的写操作,因此在该测试中 NILFS2 表现出了很大的优势。同样在 PostGreSQL 的测试中,NILFS2 也表现不错,比 Ext3/4 慢,但比 btrfs 和 XFS 快很多。
在 SSD 上,NILFS2 则具有绝对的性能优势。
2008 年在 Linux Storage & Filesystem Workshop 大会上,Shin, Dongjun 发表的论文比较了几种文件系统在 SSD 上的 benchmark,结果显示 NILFS2 的读写效率领先于其他的文件系统。图 2 和图 3 分别显示了各种文件系统在 SSD 上的性能比较。
图 2. SSD 上小文件的测试图 3. SSD 上大文件的测试
返回列表