本章介绍如何创建和备份 UFS 快照。
有关创建 UFS 快照的过程信息,请参见使用 UFS 快照(任务列表)。
有关执行备份的概述信息,请参见第 24 章,备份和恢复文件系统(概述)。
任务 |
说明 |
参考 |
---|---|---|
1. 创建 UFS 快照。 |
使用 fssnap 命令创建文件系统的只读副本。 | |
2. 显示 UFS 快照信息。 |
确定 UFS 快照信息,如原始快照设备。 | |
3. (可选)删除 UFS 快照。 |
删除已备份或不再需要的快照。 | |
4. (可选)备份 UFS 快照。 |
请选择以下备份方法之一: |
|
|
使用 ufsdump 命令创建 UFS 快照的完整备份。 | |
|
使用 ufsdump 命令创建 UFS 快照的增量备份。
| |
|
使用 tar 命令备份 UFS 快照。 | |
5. (可选)从 UFS 快照中恢复数据。 |
使用 ufsrestore 命令恢复 UFS 快照,其方式与恢复数据的方式相同。 |
可以使用 fssnap 命令在挂载文件系统的同时备份文件系统。此命令可用于创建文件系统的只读快照。快照是旨在用于备份操作的文件系统临时映像。
运行 fssnap 命令时,此命令将创建一个虚拟设备和一个后备存储文件。可以使用现有的任何 Solaris 备份命令备份虚拟设备,此设备的外观和操作均与实际设备相同。后备存储文件是一个位图文件,其中包含自捕获快照以来已修改的预备快照数据副本。
指定后备存储文件时,请牢记以下要点:
后备存储文件的目标路径必须具有足够的空闲空间来保存文件系统数据。后备存储文件的大小会随文件系统上的活动量而异。
后备存储文件位置必须不同于快照中捕获的文件系统的位置。
后备存储文件可以驻留在任何类型的文件系统上,包括其他 UFS 文件系统或 NFS 文件系统。
创建大于 512 GB 的 UFS 文件系统快照时,将会创建多个后备存储文件。
后备存储文件是稀疏文件。ls 命令报告的稀疏文件的逻辑大小与 du 命令报告的已分配给稀疏文件的空间量不同。
有关为大于 512 GB 的 UFS 文件系统创建快照的更多信息,请参见创建多 TB UFS 快照。
UFS 快照功能为文件系统的备份提供了更高的可实现性及便利,这是因为文件系统始终保持挂载状态,并且该系统在备份过程中始终处于多用户模式下。然后,即可使用 tar 或 cpio 命令将 UFS 快照备份到磁带中进行更长久的存储。如果使用 ufsdump 命令执行备份,则系统应该处于单用户模式下,以便在执行备份时使文件系统保持不活动状态。
fssnap 命令向非企业级系统的管理员提供了无大量存储需求的企业级工具(如 Sun StorEdgeTM Instant Image)的强大功能。
UFS 快照与 Instant Image 产品的功能类似。尽管 UFS 快照可以生成大型文件系统的副本,但是 Instant Image 更适合于企业级系统。UFS 快照更适合于较小的系统。Instant Image 可分配与所捕获的整个文件系统大小相同的空间。但是,UFS 快照创建的后备存储文件仅会占用所需大小的磁盘空间。
下表介绍了 UFS 快照与 Instant Image 之间的具体差异。
UFS 快照 |
Sun StorEdge Instant Image |
---|---|
后备存储文件的大小取决于自捕获快照以来已更改的数据量 |
后备存储文件的大小与正在复制的整个文件系统的大小相等 |
在系统重新引导期间会发生变化 |
在系统重新引导期间始终保持不变 |
在 UFS 文件系统上工作 |
不能用于根 (/) 或 /usr 文件系统 |
从 Solaris 8 1/01 发行版开始可用 |
是 Sun StorEdge 产品的一部分 |
首次创建 UFS 快照时,文件系统的用户可能会注意到很短的暂停。暂停的时间长度随要捕获的文件系统大小的增加而增加。当快照处于活动状态时,文件系统的用户可能会发现在向文件系统写入数据时,会对其造成非常小的性能影响。但是,读取文件系统时,用户不会发现任何影响。
使用 fssnap 命令创建 UFS 快照时,请观察后备存储文件占用的磁盘空间量。后备存储文件最初不使用任何空间,随后该文件会快速增大,特别是在使用频繁的系统中。请确保后备存储文件有足够的空间可以进行扩展。或者,请使用 -o maxsize=n [k,m,g] 选项限制该文件的大小,其中 n [k,m,g] 是后备存储文件的最大大小。
如果后备存储文件空间不足,则快照可能会自行删除,从而导致备份失败。请检查 /var/adm/messages 文件中可能的快照错误。
还可以为后备存储路径指定目录,这表示后备存储文件将在该指定目录中创建。例如,如果为后备存储路径指定 /var/tmp,则将会创建以下后备存储文件。
/var/tmp/snapshot0 |
如果已为 /export/home、/usr 等创建了一个大的根 (/) 文件系统而不是单独的文件系统,则将无法创建这些单独文件系统的快照。例如,对于在 Mounted on 列下指示的 /usr,此系统没有单独的文件系统:
# df -k /usr Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t0d0s0 3618177 2190002 1391994 62% / |
如果尝试为 /usr 文件系统创建快照,则将显示以下类似消息:
# fssnap -F ufs -o bs=/snaps/usr.back.file /usr snapshot error: Invalid backing file path |
此消息表明,不能在与正在抓取的文件系统相同的系统上包含后备存储文件,例如,本示例中的 /usr 文件系统。
有关更多信息,请参见 fssnap_ufs(1M) 手册页。
创建多 TB UFS 快照与为较小的 UFS 文件系统创建快照相同。唯一的区别在于为每个 512 GB 的文件系统空间创建了多个后备存储文件。
为大于 512 GB 的文件系统创建快照时,请牢记以下要点:
将创建多个后备存储文件。
如果在创建快照时指定了后备存储文件名,则后续的后备存储文件名将基于指定的文件名进行迭代。后续的后备存储文件将具有相同的名称,但后缀分别为 .2、.3,依此类推。
如果仅指定了后备存储文件目标(或目录)而未指定后备存储文件名,则将创建多个后备存储文件名并分别以后缀 .2、.3 进行迭代,依此类推。
即使创建了多个后备存储文件,fssnap -i 命令也只报告第一个后备存储文件名。但是,报告的后备存储长度为快照的所有后备存储文件的大小之和。
后备存储文件是稀疏文件。ls 命令报告的稀疏文件的逻辑大小与 du 命令报告的已分配给稀疏文件的空间量不同。
备份快照后或只希望删除快照时,必须手动删除后备存储文件,前提是创建快照时未使用 unlink 选项。
有关为大于 512 GB 的文件系统创建快照的示例,请参见示例 26–2。
有关更多信息,请参见 fssnap_ufs(1M)。
成为超级用户或承担等效角色。
确保文件系统有足够的磁盘空间可用于后备存储文件。
# df -k |
# ls /backing-store-file |
创建 UFS 快照。
# fssnap -F ufs -o bs=/backing-store-file /file-system |
后备存储文件必须驻留在与使用 UFS 快照捕获的文件系统不同的文件系统上。
检验是否已创建快照。
# /usr/lib/fs/ufs/fssnap -i /file-system |
以下示例说明如何创建 /usr 文件系统的快照。后备存储文件为 /scratch/usr.back.file。虚拟设备为 /dev/fssnap/1。
# fssnap -F ufs -o bs=/scratch/usr.back.file /usr /dev/fssnap/1 |
以下示例说明如何将后备存储文件限制到 500 MB。
# fssnap -F ufs -o maxsize=500m,bs=/scratch/usr.back.file /usr /dev/fssnap/1 |
以下示例说明如何创建 1.6 TB UFS 文件系统的快照。
# fssnap -F ufs -o bs=/var/tmp /data2 /dev/fssnap/0 # /usr/lib/fs/ufs/fssnap -i Snapshot number : 0 Block Device : /dev/fssnap/0 Raw Device : /dev/rfssnap/0 Mount point : /data2 Device state : idle Backing store path : /var/tmp/snapshot0 Backing store size : 0 KB Maximum backing store size : Unlimited Snapshot create time : Fri Sep 10 13:13:02 2004 Copy-on-write granularity : 32 KB # ls /var/tmp snapshot0 snapshot0.2 snapshot0.3 snapshot0.4 |
可以使用 fssnap -i 选项显示系统上的当前快照。如果指定了文件系统,则会显示有关该文件系统快照的详细信息。如果未指定文件系统,则会显示有关所有当前 UFS 快照及其对应虚拟设备的信息。
使用 UFS 文件系统特定的 fssnap 命令可以查看以下示例中显示的扩展快照信息。
成为超级用户或承担等效角色。
列出所有当前快照。
例如:
# /usr/lib/fs/ufs/fssnap -i Snapshot number : 0 Block Device : /dev/fssnap/0 Raw Device : /dev/rfssnap/0 Mount point : /export/home Device state : idle Backing store path : /var/tmp/home.snap0 Backing store size : 0 KB Maximum backing store size : Unlimited Snapshot create time : Thu Jul 01 14:50:38 2004 Copy-on-write granularity : 32 KB |
显示有关特定快照的详细信息。
例如:
# /usr/lib/fs/ufs/fssnap -i /export Snapshot number : 1 Block Device : /dev/fssnap/1 Raw Device : /dev/rfssnap/1 Mount point : /export Device state : idle Backing store path : /var/tmp/export.snap0 Backing store size : 0 KB Maximum backing store size : Unlimited Snapshot create time : Thu Jul 01 15:03:22 2004 Copy-on-write granularity : 32 KB |
创建 UFS 快照时,可以指定解除链接后备存储文件。删除快照后,将会删除解除链接的后备存储文件。如果创建 UFS 快照时不指定 -o unlink 选项,则必须手动删除后备存储文件。
无论是使用 -o unlink 选项删除后备存储文件,还是手动删除该文件,删除快照之前后备存储文件会一直占用磁盘空间。
可以通过重新引导系统来删除快照,也可以通过使用 fssnap -d 命令来删除快照。使用此命令时,必须指定包含 UFS 快照的文件系统的路径。
成为超级用户或承担等效角色。
确定要删除的快照。
# /usr/lib/fs/ufs/fssnap -i |
删除快照。
# fssnap -d /file-system Deleted snapshot 1. |
如果在创建快照时未使用 -o unlink 选项,请手动删除后备存储文件。
# rm /file-system/backing-store-file |
以下示例说明如何删除快照并假定未使用 -o unlink 选项。
# fssnap -i 0 /export/home 1 /export # fssnap -d /usr Deleted snapshot 1. # rm /var/tmp/export.snap0 |
您可以创建 UFS 快照的完整备份或增量备份,并可以使用标准的 Solaris 备份命令来备份 UFS 快照。
包含 UFS 快照的虚拟设备可用作标准的只读设备。因此,可以按照备份文件系统设备一样,备份该虚拟设备。
如果要使用 ufsdump 命令备份 UFS 快照,则可以在备份过程中指定快照名称。有关更多信息,请参见以下过程。
确定要备份的 UFS 快照。
# /usr/lib/fs/ufs/fssnap -i /file-system |
例如:
# /usr/lib/fs/ufs/fssnap -i /usr Snapshot number : 1 Block Device : /dev/fssnap/1 Raw Device : /dev/rfssnap/1 Mount point : /usr Device state : idle Backing store path : /var/tmp/usr.snap0 Backing store size : 0 KB Maximum backing store size : Unlimited Snapshot create time : Thu Jul 01 15:17:33 2004 Copy-on-write granularity : 32 KB |
备份 UFS 快照。
# ufsdump 0ucf /dev/rmt/0 /snapshot-name |
例如:
# ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/1 |
检验是否已备份快照。
例如:
# ufsrestore tf /dev/rmt/0 |
以增量方式备份 UFS 快照意味着仅备份自上一个快照以来修改的文件。使用带有 N 选项的 ufsdump 命令。此选项可指定为跟踪增量转储而插入 /etc/dumpdates 文件中的文件系统的设备名称。
以下 ufsdump 命令可指定用于创建文件系统增量备份的嵌入式 fssnap 命令。
成为超级用户或承担等效角色。
创建 UFS 快照的增量备份。
例如:
# ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c0t1d0s0 `fssnap -F ufs -o raw,bs= /export/scratch,unlink /dev/rdsk/c0t1d0s0` |
在本示例中,-o raw 选项用于显示原始设备而不是块设备的名称。通过使用此选项,可以更轻易地在要求使用原始设备的命令(如 ufsdump 命令)中嵌入 fssnap 命令。
检验是否已备份快照。
# ufsrestore ta /dev/rmt/0 |
如果要使用 tar 命令备份快照,请在备份之前先挂载该快照。
成为超级用户或承担等效角色。
为快照创建挂载点。
例如:
# mkdir /backups/home.bkup |
挂载快照。
# mount -F ufs -o ro /dev/fssnap/1 /backups/home.bkup |
转到已挂载快照的目录。
# cd /backups/home.bkup |
使用 tar 命令备份快照。
# tar cvf /dev/rmt/0 . |
实际上,从虚拟设备中创建的备份只是捕获快照时的原始文件系统的备份。从备份中恢复文件系统时,就像从原始文件系统中直接提取备份那样进行恢复。这类恢复使用 ufsrestore 命令。有关使用 ufsrestore 命令恢复文件或文件系统的信息,请参见第 27 章,恢复文件和文件系统(任务)。