阿弥陀佛
发布时间:2012-12-19 14:25:28
RAIDZ尽管和RAID5有很多地方类似,但是RAIDZ并不是RAID5.RAID5最显著的缺点就是"write hole",因为他无法提供任何安全的机制保证写校验码的时候不出现故障。而如果此时断电,那么将造成parity是错误的,当然后期利用这个错误的parity更新的新的数据块将更是错误的。而此时用户并不知道。而RAIDZ具有两个特点。特点一:避免了读旧数据-修改parity-写数据的RAID写磁盘模式,而是通过full stripe write的方式完成写数据操作。这样一次性写入 保证了即使断电,也不会出现不一致的状况。要么写成功,要么什么都没做。特点二:就是动态条带化的特点。抛弃的传统......【阅读全文】
发布时间:2012-12-18 09:49:31
本人尝试开启zfs on linux的开关,但是始终都打不开,经过我反复的尝试,我向zfs on linux的作者发邮件,才得到debug的方法。 下面分享如下: install spl: 点击(此处)折叠或打开 $ ./configure --enable-debug(进入spl的src目录当中) make make install install zfs:(进入zfs的src目录当中) $ ./configure --with-spl=/home/asus/sp......【阅读全文】
发布时间:2012-12-16 21:04:27
作者:沈岩转载请注明出处。我发现国内研究zfs的同学非常少,如果你也跟我有相同的爱好,研究zfs,请告诉我,相互学习。商业文件系统zfs是文件系统当中相当出色的一个了,由sun公司开发。spa_sync函数负责同步spa中所有的内容到磁盘。然后会同步dsl,之后就是同步dbuf,将dmu buffer中的内容同步到磁盘上。dbuf_sync_list 负责同步的主要工作,他是一个递归函数,同步两种类型,分两种{sync_leaf,sync_indirect(会调用sync_list )}。dbuf_sync_leaf 和 dbuf_sync_indirect 都会调用dbuf_write 函数......【阅读全文】
发布时间:2012-12-15 16:07:39
很少有和zfs相关的代码分析,中文的材料基本没有,我来剖析一下zfs的写磁盘的底层的实现吧。在zio 的流水线当中,有一个流水线的名称为vdev_disk_io_start。在vdev_disk_io_start(zio *zio)函数中,做了如下的事情:1.判断zio的请求类型(zio->io_type)2.根据类型,将zio 传递给__vdev_disk_physio(vd->vd_bdev, zio, zio->io_data, z......【阅读全文】