20.11.文件系统快照 ================== FreeBSD 提供了一个与\ `软更新 `__\ 相结合的功能:文件系统快照。 UFS 快照允许用户创建指定文件系统的镜像,并将其视为一个文件。必须在执行该操作的文件系统中创建快照文件,并且用户可以在每个文件系统中创建不超过 20 个快照。活动快照被记录在超级区块中,因此它们在卸载和挂载操作以及系统重启时都是不变的。当快照不再需要时,可以用 `rm(1) `__ 将其删除。虽然可以以任何顺序移除快照,但可能不会完全得到使用过的空间,因为另一个快照可能会需要这些被释放的块。 不可更改的快照文件标志是由 `mksnap_ffs(8) `__ 在最初创建快照文件后设置的。\ `unlink(1) `__ 对快照文件做了例外处理,因为它允许它们被删除。 可通过 `mount(8) `__ 创建快照。要把 **/var** 的快照放在 **/var/snapshot/snap** 文件下,使用下面的命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # mount -u -o snapshot /var/snapshot/snap /var 或者使用 `mksnap_ffs(8) `__ 来创建快照: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # mksnap_ffs /var /var/snapshot/snap 可以使用 `find(1) `__ 在文件系统上查找快照文件,例如 **/var**: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # find /var -flags snapshot 所创建的快照有几种用途: - 一些管理员会将快照文件用于备份目的,因为快照可以被传输到 CD 或磁带。 - 可以在快照上运行文件系统完整性检查器 `fsck(8) `__\ 。假设文件系统在被挂载时是干净的,这应该总是提供一个一致的 clean 结果。 - 在快照上运行 `dump(8) `__ 会产生一个与文件系统和快照的时间戳一致的 dump 文件。\ `dump(8) `__ 也可以使用 ``-L`` 来获取快照,创建 dump 镜像,然后删除快照。 - 可以作为文件系统的冻结镜像挂载快照。要挂载快照 **/var/snapshot/snap**\ ,请运行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # mdconfig -a -t vnode -o readonly -f /var/snapshot/snap -u 4 # mount -r /dev/md4 /mnt 可以通过 **/mnt** 使用被冻结的 **/var**\ 。所有文件最初都将处于快照创建时的状态。唯一的例外是,任何更早的快照将显示为大小为 0 的文件。要解除对快照的挂载,请使用: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # umount /mnt # mdconfig -d -u 4 有关\ ``软更新``\ 和文件系统快照的更多信息,包括技术报告,请访问 Marshall Kirk McKusick 的网站:\ http://www.mckusick.com/\ 。