16.13. 文件系统快照

Contributed by Tom Rhodes.

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

当快照文件被创建好后,可以用于下面一些目的:

现在你就可以看到挂接在 /mnt 目录下的 /var 文件系统的快照。 每一样东西都保存的像它创建时的状态一样。 唯一例外的是更早的快照文件将表现为长度为 0 的文件。 用完快照文件之后可以把它卸下,使用:

# umount /mnt
# mdconfig -d -u 4

想了解更多关于 softupdates 和 文件系统快照的信息, 包括技术说明, 可以访问 Marshall Kirk McKusick 的 WWW 站点 http://www.mckusick.com/