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