电脑技术学习

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

dn001

  /.portspace - 保存第三方软件(为什么分开放将在后面解释)

  /.download - 保存下载的数据,例如 CVS 代码库、ports本身及其distfiles等

  /.data - 保存用户数据,包括 /home,/usr/src,自己工作用的代码库等等。这部分数据采取的保存策略是压缩,同时设置 copIEs = 2。

  之后,做下列调整:

  使用符号链接将 /usr/local 和 /var/db/pkg 放到 /.portspace 上。这样做的好处是,在进行 port 升级的时候(例如恐怖的OpenOffice、xorg之类的升级),你可以做下面的操作:

  zfs snapshot tank/.portspace@preclean

  rm -fr /usr/local/* /var/db/pkg/*

  或者,如果出现问题,可以用zfs的rollback功能回到快照版本,更变态的用法甚至可以跑branch出来。

  关于快照

  ZFS可以在文件系统中建立大量的快照。通过脚本可以将快照操作自动化。sysutils/FreeBSD-snapshot提供了一组易于配置的snapshot工具,我的配置中,对 / 和 /.portspace 每天中午的时候做一次snapshot,保留3份;对 /.download 每逢6的整数倍点做一次snapshot,保留2份;对/.data每小时做一次snapshot,保留25份。

  成果

  在本次硬盘坏损中,使用recoverdisk恢复了3天,最后有大约3.4MB(IBM记法;最初的结果是有大约2GB数据存在问题,占磁盘总容量的5%)数据未能恢复。

  使用zpool scrub共发现650处坏损数据,共导致出现了132个无法恢复的数据块,这些数据块分属于20个文件,/.data 中完全没有丢失数据。

  其他一些问题:

  A。是否应使用 ZFS 作为 /?

  答:取决于具体情况。ZFS作为/对于安装、故障恢复都会带来一些困难,并且其基于快照的revert能力也不能直接使用,只能通过复制或rsync的方法来恢复快照中的内容。

  B。磁盘出现故障,通过recoverdisk恢复之后,ZFS说卷degraded,如何恢复?

  答:首先zfs export,然后再重新zfs import(可能需要-f参数)。注意此时/boot/zfs必须可写。

  C。ZFS的快照占多少空间?

  答:取决于修改的文件数量和数据块数量。通常快照占用的空间可忽略不计(120K左右),除非此后又翻回头来狂砍/狂改文件。

标签: