系统管理指南:设备和文件系统

第 26 章 使用 UFS 快照(任务)

本章介绍如何创建和备份 UFS 快照。

有关创建 UFS 快照的过程信息,请参见使用 UFS 快照(任务列表)

有关执行备份的概述信息,请参见第 24 章,备份和恢复文件系统(概述)

使用 UFS 快照(任务列表)

任务 

说明 

参考 

1. 创建 UFS 快照。 

使用 fssnap 命令创建文件系统的只读副本。

如何创建 UFS 快照

2. 显示 UFS 快照信息。 

确定 UFS 快照信息,如原始快照设备。 

如何显示 UFS 快照信息

3. (可选)删除 UFS 快照。 

删除已备份或不再需要的快照。 

如何删除 UFS 快照

4. (可选)备份 UFS 快照。 

请选择以下备份方法之一: 

 

 

使用 ufsdump 命令创建 UFS 快照的完整备份。

如何创建 UFS 快照的完整备份 (ufsdump)

 

使用 ufsdump 命令创建 UFS 快照的增量备份。

 

如何创建 UFS 快照的增量备份 (ufsdump)

 

使用 tar 命令备份 UFS 快照。

如何备份 UFS 快照 (tar)

5. (可选)从 UFS 快照中恢复数据。 

使用 ufsrestore 命令恢复 UFS 快照,其方式与恢复数据的方式相同。

如何恢复完整的文件系统

UFS 快照概述

可以使用 fssnap 命令在挂载文件系统的同时备份文件系统。此命令可用于创建文件系统的只读快照。快照是旨在用于备份操作的文件系统临时映像。

运行 fssnap 命令时,此命令将创建一个虚拟设备和一个后备存储文件。可以使用现有的任何 Solaris 备份命令备份虚拟设备,此设备的外观和操作均与实际设备相同。后备存储文件是一个位图文件,其中包含自捕获快照以来已修改的预备快照数据副本。

指定后备存储文件时,请牢记以下要点:

有关为大于 512 GB 的 UFS 文件系统创建快照的更多信息,请参见创建多 TB UFS 快照

使用 UFS 快照的原因

UFS 快照功能为文件系统的备份提供了更高的可实现性及便利,这是因为文件系统始终保持挂载状态,并且该系统在备份过程中始终处于多用户模式下。然后,即可使用 tarcpio 命令将 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 快照性能问题

首次创建 UFS 快照时,文件系统的用户可能会注意到很短的暂停。暂停的时间长度随要捕获的文件系统大小的增加而增加。当快照处于活动状态时,文件系统的用户可能会发现在向文件系统写入数据时,会对其造成非常小的性能影响。但是,读取文件系统时,用户不会发现任何影响。

创建和删除 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 快照

创建多 TB UFS 快照与为较小的 UFS 文件系统创建快照相同。唯一的区别在于为每个 512 GB 的文件系统空间创建了多个后备存储文件。

为大于 512 GB 的文件系统创建快照时,请牢记以下要点:

有关为大于 512 GB 的文件系统创建快照的示例,请参见示例 26–2

有关更多信息,请参见 fssnap_ufs(1M)

Procedure如何创建 UFS 快照

  1. 成为超级用户或承担等效角色。

  2. 确保文件系统有足够的磁盘空间可用于后备存储文件。


    # df -k 
    
  3. 确保名称和位置相同的后备存储文件尚不存在。


    # ls /backing-store-file
    
  4. 创建 UFS 快照。


    # fssnap -F ufs -o bs=/backing-store-file /file-system
    

    注 –

    后备存储文件必须驻留在与使用 UFS 快照捕获的文件系统不同的文件系统上。


  5. 检验是否已创建快照。


    # /usr/lib/fs/ufs/fssnap -i /file-system
    

示例 26–1 创建 UFS 快照

以下示例说明如何创建 /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


示例 26–2 创建多 TB UFS 快照

以下示例说明如何创建 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

Procedure如何显示 UFS 快照信息

可以使用 fssnap -i 选项显示系统上的当前快照。如果指定了文件系统,则会显示有关该文件系统快照的详细信息。如果未指定文件系统,则会显示有关所有当前 UFS 快照及其对应虚拟设备的信息。


注 –

使用 UFS 文件系统特定的 fssnap 命令可以查看以下示例中显示的扩展快照信息。


  1. 成为超级用户或承担等效角色。

  2. 列出所有当前快照。

    例如:


    # /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
  3. 显示有关特定快照的详细信息。

    例如:


    # /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 快照时,可以指定解除链接后备存储文件。删除快照后,将会删除解除链接的后备存储文件。如果创建 UFS 快照时不指定 -o unlink 选项,则必须手动删除后备存储文件。

无论是使用 -o unlink 选项删除后备存储文件,还是手动删除该文件,删除快照之前后备存储文件会一直占用磁盘空间。

Procedure如何删除 UFS 快照

可以通过重新引导系统来删除快照,也可以通过使用 fssnap -d 命令来删除快照。使用此命令时,必须指定包含 UFS 快照的文件系统的路径。

  1. 成为超级用户或承担等效角色。

  2. 确定要删除的快照。


    # /usr/lib/fs/ufs/fssnap -i
    
  3. 删除快照。


    # fssnap -d /file-system
    
    Deleted snapshot 1.
  4. 如果在创建快照时未使用 -o unlink 选项,请手动删除后备存储文件。


    # rm /file-system/backing-store-file
    

示例 26–3 删除 UFS 快照

以下示例说明如何删除快照并假定未使用 -o unlink 选项。


# fssnap -i

    0    /export/home

    1    /export

   # fssnap -d /usr

 Deleted snapshot 1.

# rm /var/tmp/export.snap0

备份 UFS 快照

您可以创建 UFS 快照的完整备份或增量备份,并可以使用标准的 Solaris 备份命令来备份 UFS 快照。

包含 UFS 快照的虚拟设备可用作标准的只读设备。因此,可以按照备份文件系统设备一样,备份该虚拟设备。

如果要使用 ufsdump 命令备份 UFS 快照,则可以在备份过程中指定快照名称。有关更多信息,请参见以下过程。

Procedure如何创建 UFS 快照的完整备份 (ufsdump)

  1. 成为超级用户或承担等效角色。

  2. 确定要备份的 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
  3. 备份 UFS 快照。


    # ufsdump 0ucf /dev/rmt/0 /snapshot-name
    

    例如:


    # ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/1 
    
  4. 检验是否已备份快照。

    例如:


    # ufsrestore tf /dev/rmt/0
    

Procedure如何创建 UFS 快照的增量备份 (ufsdump)

以增量方式备份 UFS 快照意味着仅备份自上一个快照以来修改的文件。使用带有 N 选项的 ufsdump 命令。此选项可指定为跟踪增量转储而插入 /etc/dumpdates 文件中的文件系统的设备名称。

以下 ufsdump 命令可指定用于创建文件系统增量备份的嵌入式 fssnap 命令。

  1. 成为超级用户或承担等效角色。

  2. 创建 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 命令。

  3. 检验是否已备份快照。


    # ufsrestore ta /dev/rmt/0
    

Procedure如何备份 UFS 快照 (tar)

如果要使用 tar 命令备份快照,请在备份之前先挂载该快照。

  1. 成为超级用户或承担等效角色。

  2. 为快照创建挂载点。

    例如:


    # mkdir /backups/home.bkup
    
  3. 挂载快照。


    # mount -F ufs -o ro /dev/fssnap/1 /backups/home.bkup
    
  4. 转到已挂载快照的目录。


    # cd /backups/home.bkup
    
  5. 使用 tar 命令备份快照。


    # tar cvf /dev/rmt/0 .
    

从 UFS 快照备份中恢复数据

实际上,从虚拟设备中创建的备份只是捕获快照时的原始文件系统的备份。从备份中恢复文件系统时,就像从原始文件系统中直接提取备份那样进行恢复。这类恢复使用 ufsrestore 命令。有关使用 ufsrestore 命令恢复文件或文件系统的信息,请参见第 27 章,恢复文件和文件系统(任务)