Chinaunix首页 | 论坛 | 博客
  • 博客访问: 578682
  • 博文数量: 113
  • 博客积分: 3322
  • 博客等级: 少校
  • 技术积分: 1565
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-04 11:38
文章分类

全部博文(113)

文章存档

2012年(21)

2010年(92)

分类:

2010-03-03 09:46:10

使用UFS Snapshot备份mount的文件系统
目标要求
创建ufs snapshot
备份snapshot文件

创建ufs snapshot

Snapshots的UFS复制写功能为管理员提供了一个在线ufs文件系统备份的解决方案。这个工具可以让你按照时间点进行ufs文件系统的复制,也叫snapshot,创建一个在线备份。你能够在多用户模式下的mount文件系统上进行文件系统的备份。

使用fssnap命令
你可以使用fssnap命令创建,查询或者删除临时的只读ufs文件系统的snapshots。

Fssnap命令格式
/usr/sbin/fssnap -F        FSType -V -o special_option(s) mount-point | special

fssnap命令的一些选项

-d                  删除给予文件系统想关联的snapshot。
-F FSType           指定使用的文件系统类型。
-i                  显示FSType snapshot状态。
-v                  显示完整的命令行但是并不执行命令
-o                  使得你能够指定选项。比如back-store(bs)文件的位置和大小。

创建一个UFS snapshot,指定backing-store路径和确切的文件系统的定位。下面是命令格式:
#        fssnap -F ufs -o bs=backing_store_path /file-system

backing_store_path可以是裸设备,存在的目录名,或者是并不存在的文件名。

下面的例子是使用fssnap命令创建/export/home文件系统的snapshot:
#        fssnap -F ufs -o bs=/var/tmp /export/home
/dev/fssnap/0

snapshot子系统保存文件系统数据的文件被称为backing-store文件,之前的一些数据会被覆盖。backing-store文件的一些重要的方面是:

backing-store文件是一个占用磁盘空间bit-mapped(比特图表)文件直到你删除UFS snapshot。

backing-store文件的大小是随着你所备份的活动的文件系统的大小而变化的。

你能够通过fssnap命令行指定一个有足够的空余空间的目的路径存放backing-store文件。
backing-store文件的位置必须和你想要备份的UFS snapshot文件系统不同。

backing-store文件可以存放在不同类型的文件系统上,包括其他ufs文件系统或者挂接的NFS文件系统。

Fssnap命令创建backing-store文件和2个只读的虚拟设备。虚拟块设备,/dev/fssnap/0,能够挂接象一个只读文件系统。裸虚拟设备,/dev/rfssnap/0,能够被作为一个裸的只读的被访问文件系统。
这些虚拟设备能够通过Solaris OS上的备份命令进行备份。当UFS snapshot启动的时候从虚拟设备创建的备份是原始的文件系统。
(当UFS snapshot是第一次被创建,文件系统临时锁定。用户会发现当写文件系统的时候会有轻微暂停。当文件系统大小会暂停增加。当用户从文件系统读操作不受影响。)

限制backing-store文件的大小
当创建UFS snapshot之间,使用df –k命令检查backing-store文件增加需要的足够的磁盘空间。backing-store文件的大小依靠自上次snapshot后有多少数据更改发生。

通过使用fssnap 命令的-o maxsize=n选项来限制backing-store文件的大小。当n (k, m, or g)指定backing-store文件的大小为Kbytes, Mbytes, 或者 Gbytes。
(如果backing-store文件运行超过了磁盘空间则系统会自动删除UFS snapshot,这会引起备份失败。但是活动的UFS文件系统 不受影响。检查/var/adm/messages文件会有UFS snapshot错误。)
(你能够强行unmount活动的ufs文件。如果snapshot存在(比如执行了umount –f命令)。这个活动会自动删除合适的snapshot.)
下面的例子创建一个snapshot文件为/export/home文件系统,限制backing-store文件为500 Mbytes。
#        fssnap -F ufs -o bs=/var/tmp,maxsize=500m /export/home
/dev/fssnap/0

显示ufs文件系统的snapshot信息
你能够使用fssnap命令显示UFS snapshot信息。
下面的例子显示关于当前系统中所有的UFS snapshot。这个列表也显示snapshot相对应的虚拟设备。
#fssnap -i
0    /export/home            
1    /usr               
2    /database

你也能够使用/usr/lib/fs/ufs/fssnap命令的-i选项来显示通过fssnap命令创建的UFS snapshot的详细信息。
下面的例子显示了/export/home snapshot的详细输出
#        /usr/lib/fs/ufs/fssnap -i /export/home
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/snapshot0
Backing store size            : 0 KB
Maximum backing store size    : 512000 KB
Snapshot create time          : Mon Oct 11 08:58:33 2004
Copy-on-write granularity     : 32 KB

备份UFS Snapshot文件
包含UFS snapshot的虚拟设备可以被作为标准的只读设备。你可以用备份文件系统的方法来备份虚拟设备。

执行UFS Snapshot备份
你可以使用tar命令或者ufsdump命令来备份UFS Snapshot。

使用tar命令来备份Snapshot文件
如果你使用 tar命令来备份UFS snapshot,在备份之间先mount snapshot.下面的过程演示,如何操作。
创建块虚拟设备的mount点。
#        mkdir -p /backups/home.bkup
mount虚拟块设备到mount点上
#        mount -F ufs -o ro /dev/fssnap/0 /backups/home.bkup
更改mount点目录。
#        cd /backups/home.bkup
使用tar命令写数据到磁带。
#        tar cvf /dev/rmt/0 .

使用ufsdump命令
如果你使用ufsdump命令备份UFS snapshot,你能够指定裸虚拟设备。
#        ufsdump 0uf /dev/rmt/0 /dev/rfssnap/0
检查UFS snapshot备份。
#        ufsrestore tf /dev/rmt/0

执行UFS snapshot的增量备份
Snapshots文件的增量备份包含的文件是自从上次UFS snapshot修改后的文件。你使用ufsdump命令的N选项来创建UFS snapshot的增量备份,写入的备份设备名在/etc/dumpdates文件中。
下面的例子显示如何使用ufsdump命令来创建文件系统的增量备份。
在备份Snapshots的时候时候N选项是十分重要的。因为这个选项可以确保在/etc/dumpdates文件中的合适更新。
# ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c1t0d0s0 /dev/rfssnap/0
检查UFS snapshot的备份磁带。
#        ufsrestore tf /dev/rmt/0
理解snapshots的增量备份的演示如下:
为/extra文件系统创建snapshot,备份的文件系统是mount的。
#        fssnap -o bs=/var/tmp /extra
/dev/fssnap/0
#
检查snapshot是否成功并看snapshot的详细信息。
#        fssnap -i
   0    /extra
#        /usr/lib/fs/ufs/fssnap -i /extra
Snapshot number               : 0
Block Device                  : /dev/fssnap/0
Raw Device                    : /dev/rfssnap/0
Mount point                   : /extra
Device state                  : idle
Backing store path            : /var/tmp/snapshot0
Backing store size            : 0 KB
Maximum backing store size    : Unlimited
Snapshot create time          : Mon Oct 11 10:34:21 2004
Copy-on-write granularity     : 32 KB

建立一个目录用于mount和查看snapshot数据。
#        mkdir /extrasnap
#
Mount snapshot到新的mount点上并且对比文件系统和snapshot设备的大小。
#        mount -o ro /dev/fssnap/0 /extrasnap
#        df -k |grep extra
/dev/dsk/c1t0d0s0    1294023       9 1242254     1%    /extra
/dev/fssnap/0        1294023       9 1242254     1%    /extrasnap

编辑/extra目录下的一个文件使它变大,对比文件系统和snapshot之间的大小。
#        vi file1
(yank and put text, or read text in from another file)
#        df -k |grep extra
/dev/dsk/c1t0d0s0    1294023      20 1242243     1%    /extra
/dev/fssnap/0        1294023       9 1242254     1%    /extrasnap
观察文件系统增长,snapshot文件不变。
使用ufsdump命令的N选项进行全备。
#        ufsdump 0ufN /dev/rmt/0 /dev/rdsk/c1t0d0s0 /dev/rfssnap/0
  DUMP: Writing 32 Kilobyte records
  DUMP: Date of this level 0 dump: Mon Oct 11 10:49:38 2004
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/rfssnap/0 (sys41:/extrasnap) to /dev/rmt/0.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Estimated 262 blocks (131KB).
  DUMP: Dumping (Pass III) [directories]
  DUMP: Dumping (Pass IV) [regular files]
  DUMP: Tape rewinding
  DUMP: 254 blocks (127KB) on 1 volume at 1814 KB/sec
  DUMP: DUMP IS DONE
  DUMP: Level 0 dump on Mon Oct 11 11:03:46 2004

检查备份
#        ufsrestore tf /dev/rmt/0
         2      .
         3      ./file1
         4      ./file2
         5      ./file3
         6      ./file4
#
Unmount备份设备和删除snapshot。
#        umount /extrasnap
#        fssnap -d /extra
#        rm /var/tmp/snapshot0
#

对/extra文件系统做一些改变,比如,复制一些文件,然后在重新建立snapshot。
#        cp file1 file5
#        cp file1 file6
#        fssnap -o bs=/var/tmp /extra
/dev/fssnap/0
#

重新mount snapshot设备,然后对比文件系统和snapshot设备的大小。
#        mount -o ro /dev/fssnap/0 /extrasnap
#        df -k |grep extra
/dev/dsk/c1t0d0s0    1294023      46 1242217     1%    /extra
/dev/fssnap/0        1294023      46 1242217     1%    /extrasnap
#

使用ufsdump命令的N选项执行增量备份
#        ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c1t0d0s0 /dev/rfssnap/0
  DUMP: Writing 32 Kilobyte records
DUMP: Date of this level 0 dump: Mon Oct 11 13:13:03 2004
  DUMP: Date of last level 0 dump: Mon Oct 11 12:30:44 2004
  DUMP: Dumping /dev/rfssnap/0 (sys41:/extrasnap) to /dev/rmt/0.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Estimated 294 blocks (147KB).
  DUMP: Dumping (Pass III) [directories]
  DUMP: Dumping (Pass IV) [regular files]
  DUMP: Tape rewinding
  DUMP: 254 blocks (127KB) on 1 volume at 1693 KB/sec
  DUMP: DUMP IS DONE
  DUMP: Level 1 dump on Mon Oct 11 13:22:36 2004
#

检查备份
#        ufsrestore tf /dev/rmt/0
         2      .
         7      ./file5
         8      ./file6
#

从UFS Snapshot备份中恢复数据
当UFS snapshot启动备份在虚拟设备上创建源文件系统的备份。
从备份磁带上恢复UFS snapshot的方法和从备份源文件恢复一样。
下面演示以下恢复/usr文件系统snapshot备份的步骤:
将有/usr文件系统的snapshot备份的磁带放入磁带驱动器。
进入/usr文件系统
#        cd /usr
执行ufsrestore恢复命令
#        ufsrestore if /dev/rmt/0
ufsrestore >        add demo
ufsrestore >        extract
Specify next volume #:        1
set owner/mode for ’.’? [yn]        n
ufsrestore >        quit

检查目录,退出磁带。

删除UFS Snapshot
在系统是多用户下删除UFS snapshot,首先先umount snapshot设备,然后删除snapshot,最后在删除backing-store文件。
#        umount /dev/fssnap/0
#        fssnap -d /export/home
#        rm /backing_store_file
阅读(2838) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~