FreeBSD 5.0 提供了一个和 Soft Updates 关联的新功能: 文件系统快照
快照允许用户创建指定文件系统的映像,并把它们当做一个文件来对待。 快照文件必须在文件系统正在使用时创建,一个用户对每个文件系统创建的 快照不能大于20个。活动的快照文件被记录在超级块中,所以它们可以在系统 启动的时候一块进行挂接后摘掉。当一个快照不再需要时,可以使用标准的 rm(1) 使用来使其删除。快照可以以任何顺序进行移除,但所有使用 的快照不可能同时进行移除,因为其它的快照将有可能互相引用一些块。
在初始创建时,schg 标志 (看 chflags(1) 手册页) 用来确保 root 用户不能用来写快照文件系统。 unlink(1) 命令是个例外对快照文件来说。 它能够移除 schg 标志位,在不删除快照文件前, 没有必要清除 schg 标志。
快照被 mount(8) 命令创建。放置一个快照 /var 到文件系统 /var/snapshot/snap 使用下面的命令:
# mount -u -o snapshot /var/snapshot/snap /var
作为选择,你也可以使用 mksnap_ffs(8) 来创建一个快照:
# mksnap_ffs /var /var/snapshot/snap
当快照文件被创建好后,可以用于下面一些目的:
有些管理员用文件快照来进行备份, 因为快照可以被转移到 CD 或磁带上。
检查文件系统的完整性, fsck(8) 可以用来检查快照文件。 假设文件系统在挂接后前是一致的, 则会得到一致的结果 (不做修改)。 这是由 fsck(8) 进程在后台完成的。
在快照上运行 dump(8) 程序。 dump 将返回包含文件系统和快照的时间戳。dump(8) 也能够抓取快照,使用 -L 标志可以首先创建快照, 完成 dump 映像之后再自动删除它。
用 mount(8) 来挂接快照作为文件系统的一个冻结的镜像。 要 mount(8) 快照 /var/snapshot/snap 运行:
# mdconfig -a -t vnode -f /var/snapshot/snap -u 4 # mount -r /dev/md4 /mnt
现在你就可以看到挂接在 /mnt 目录下的 /var 文件系统的快照。 每一样东西都保存的像它创建时的状态一样。 唯一例外的是更早的快照文件将表现为长度为 0 的文件。 用完快照文件之后可以把它卸下,使用:
# umount /mnt # mdconfig -d -u 4
想了解更多关于 softupdates 和 文件系统快照的信息, 包括技术说明, 可以访问 Marshall Kirk McKusick 的 WWW 站点 http://www.mckusick.com/。