使用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
阅读(1181) | 评论(0) | 转发(0) |