Soft Updates

共 5 篇文章。

SU+J

• Kernel

Jeff Roberson 下周左右将会正式发表对于 UFS 的一项改进,为 Soft Updates 加入 Journal-ling,从而简化其恢复逻辑,并消除对 fsck 的依赖。

目前常见的保持元数据一致性的方法有四种:最原始的、将元数据以同步方式写盘的方法,性能非常差;常见的文件系统中使用的元数据回写日志(如ext3),缺点是无法检验日志本身的正确性,而且元数据需要写入两次因此对性能有潜在影响;Soft Updates,缺点是需要运行fsck来释放资源泄漏,而这个操作很耗时,且实现本身比较复杂;Copy-on-Write,在WAFL和ZFS中采用的技术,随着硬盘的淘汰随机存取时间不再是性能瓶颈,应该是未来的发展趋势,目前的缺点是会导致产生较多碎片。SU+J结合了Soft Updates和Journalling的优点,即,使用Soft Updates来确保写到磁盘上的数据的一致性,而使用Journalling来确保资源泄漏能够迅速回收,从而消除了fsck的必要性。

阅读全文… ( 本文约 598 字,阅读大致需要 2 分钟 )

Solaris ZFS代码公开了

• Kernel

在 这里。ZFS提出了很多很有意思的概念,值得一看。

比较感兴趣的几个地方:(1)Solaris的byteswap实现;(2)DSL;(3)ZIL。暂时还没有仔细看ZIL,但这里有一个很有意思的设计:

阅读全文… ( 本文约 325 字,阅读大致需要 1 分钟 )

Is this a problem?

• Kernel

While reading the snapshot code in FFS Soft Updates’s FreeBSD implementation, I got a question about the following code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
		/*
		 * If there is a fragment, clear it here.
		 */
		blkno = 0;
		loc = howmany(xp->i_size, fs->fs_bsize) - 1;
		if (loc < NDADDR) {
			__len = fragroundup(fs, blkoff(fs, xp->i\_size));__
			if (len < fs->fs_bsize) {
				ffs_blkfree(copy_fs, vp, DIP(xp, i_db[loc]),
				    len, xp->i_number);
				blkno = DIP(xp, i_db[loc]);
				DIP_SET(xp, i_db[loc], 0);
			}
		}
阅读全文… ( 本文约 141 字,阅读大致需要 1 分钟 )