ZFS

共 30 篇文章。

ZFS做/是个好主意吗?

• Data Management

一段时间之前我曾经和很多人讨论过使用ZFS作为/的可能性。现在看来,这个也未必真就是一个很好的主意。

目前FreeBSD 8-CURRENT已经完全支持从ZFS启动了(换言之,连 /boot 也不需要了),方法是透过 GPT 分区(我最近MFC了最后一套gpart的补丁回7-STABLE,gpart将在7.1-RELEASE中以一种可用的形式出现)的gptboot。简单地说,配合ZFS v13和支持ZFS的gptboot,FreeBSD就可以从ZFS启动了。针对RAID-Z和RAID-Z2的支持也在计划中。

但是,我认为现阶段使用ZFS做/仍然是风险相当大的事情。

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

MeetBSD 2008 (2)

• Development

今天MeetBSD由Pawel Jakub Dawidek开讲,等,为啥出来的是xterm……?然后OpenOffice Impress从命令行启动了。

ZFS是大家最关心的一个话题。Pawel最近这段时间对ZFS做了相当多的完善工作(主要是写测试用例和改用例发现的bug)。新版本的ZFS v13除了大大改善了可靠性问题之外,还增加了很多有意思的功能。不过这样一来,这patchset的尺寸?(后话:后一天的committer闭门会议,在大家的一致怂恿下ZFSv13终于给commit到了-HEAD)提问非常踊跃,我们最大的白老鼠之一,运营Internet(作为ISC公司的雇员)的Peter Losher就他遇到的一些问题进行了询问,并且得到了满意的答复。

Murray老大在这之后对这次Google SoC进行了总结。FreeBSD这几次SoC的项目成功率都很高,唯一的遗憾是在SoC之后,很多没有最终进入-HEAD。在肯定SoC的成功的同时,如何更好地利用?很多SoC的代码品质并不是很高,如何求得完成目标与高品质代码之间的合理平衡?这些都是我们需要思考的问题。

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

ZFS时代FreeBSD系统的数据冗余策略

• Data Management

2008硬盘磨损年!

我相信很多人都遇到过硬盘卡壳、掉链子的情况。当然,这篇文档的主旨不是告诉你怎么样可以绕过那些老爷子写的课本上说的金科玉律──重要的数据都应该有备份──如果你的数据最终丢失了,那么我的问题是:你的备份呢?

但是,即使你有经常备份的习惯,有些数据还是会难免出现一些没有及时备份而导致丢失的情况。我的观点是,没有备份计划的数据都不是重要数据,不要等到数据丢失了再去后悔,但是我们显然应该采取各种各样的手段来阻止没有及时备份的那一小部分数据的丢失。

硬盘

大家一起默念:它很便宜!它会坏掉!

是的,实战经验会告诉你,它很便宜!它也会坏掉!不管这个硬盘是来自什么厂商,也不管它是SATA、SCSI、SAS或者是传统的ATA接口,它出现故障只是时间早晚的问题。

为了解决这个问题,人们提出了廉价磁盘冗余阵列(RAID)的概念。例如,使用两块相同容量的磁盘组成 RAID-1 (MIRROR) 阵列,可以在其中任意一块出现问题时,从另一块中取出数据。而如果有至少3块硬盘,便可以组成 RAID-5 (注:还有其他RAID级别可以用3块硬盘组成冗余结构),只损失 1/n 的容量(n为硬盘数量)来得到带冗余的存储,使得存储可靠性得以提高。

除了改善可靠性之外,RAID还可以用来改善读写性能。例如用多块硬盘组成 RAID-0 阵列,可以将读写性能提高 n 倍,等等。我们并不讨论这些RAID级别。

不幸会发生

和很多人已经想到的一样──不要高兴的太早……

带数据冗余的 RAID 的一个基本假设是,磁盘是不骗人的,它有两种状态:好、坏,并且,主机(或RAID控制器)能够可靠地识别这种状态。

很不幸,这句话只对了一半。一块磁盘要么是好的、要么是坏的(这里,“坏的"的定义是读写时会发生任何错误),但是主机未必能够识别这种状态。

更为严重的是,有些时候主机甚至连读出来的数据是否是正确的这件事都不知道!当你发现自己的程序在其它机器上都很正常,但是在某台机器上总是神秘的崩溃的时候,你就要看看是不是那台机器的内存或者其他存储器出现问题了。

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

使用 固态盘(SSD)来改善本地存储的性能?

• Kernel

最近看到 OpenSolaris 上面的 ZFS 引入了将 ZIL 写到另一个 pool 的方法。这种做法非常类似于 FreeBSD 2005年的 Google SoC 项目—-GEOM Journal。

简单地说,这种做法的原理就是将准备写的数据(注意,不是元数据,而是数据)首先写到固态盘上,然后再将数据写回。这样做有很重要的好处,即先前必须同步写入的数据(例如fsync()、文件系统元数据更新等等),可以不必做完整的回写,而只需将 SSD 作为回写快取缓存 (Write-Back Cache) 了。

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

FreeBSD ZFS from scratch

• Data Management

This article describes how to install FreeBSD on ZFS from installation CD-ROM, with ZFS as root partition.

PREPARATION

You need to prepare a ‘disc1’ of FreeBSD, as well as a ‘LiveFS’ disc. Also, you should be familiar with daily operation of FreeBSD system administration.

In order to use ZFS on FreeBSD, one has to use FreeBSD 7.0 or better. For better stability and performance, you should have at least 1GB of RAM, and preferably running on a CPU which is capable to run FreeBSD/amd64, fortunately, most modern CPUs does support this.

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

测试了一下ZFS

• Data Management

这周找了些公司淘汰的设备来测试ZFS。用14块SCSI盘的傻盘阵搭了一个RAID-Z2(可以掉两块盘的RAID-Z,1块盘作为热备)。测试机为2GB内存、双CPU(Xeon 5140双核、amd64模式)。

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

Dev Summit (2)

• Development

活动很有意思,今天的DevSummit峰会是在东大的电子工程系2号楼举行的。中午在东大的食堂吃饭,基本上是西式的午餐。

下午的会议主要是新近的一些专题。pjd@介绍了jail service,包括ZFS与jail之间的一些互动,等等。通过zfs提供的一些能力,我们能够让jail对更多的东西进行限制(例如磁盘空间,过去只能通过在vnode上面建FS这种土办法),并且更像真的机器。之后是gnn老大长达近两小时的KSE code导读,比较遗憾的是,davidxu和很多其他重量级的threading hacker都没能参加这次会议。

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

Solaris ZFS代码公开了

• Kernel

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

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

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