为何使用 Snapshot
为何使用 snapshot 而不是 tar 或 copy 实用工具?使用 snapshot 时,文件系统被冻结,确保您能获得完整的副本,并且可避免“打开文件”、“正在运行进程”或“文件未找到”等问题。另外,通常无需关闭应用程序,尽管我通常在制作快照前会让应用程序进入静态状态;之后再取消静态状态。
您最多可拥有 JFS2 文件系统的 15 个连续外部快照。在测试环境中升级应用程序时,常见的做法是每次更新文件系统中包含的环境后,都制作一个快照。
进行 JFS2 在线备份是一件非常好的事情,但还需要能够在出现错误时恢复内容。使用 rollback 实用工具,通过指定快照所驻留的设备,可将外部快照回滚到制作快照时的那个点。没有什么比这个功能更好了。要回滚备份快照,可使用 restore 命令。
个人***项
使用哪种方法来创建快照取决于您最喜欢哪种方法。所以让我们介绍一下各种快照类型:
外部快照
- 在现有的 JFS2 文件系统上创建
- 其存储空间位于不同的逻辑卷上
- 可作为单独的文件系统来挂载
- 有一个只读的数据区域
备份快照
- 主要是 snapshot 命令的一个接口
- 执行所有快照工作
- 在存档文件或磁带上保存最终得到的文件系统备份
如果某个快照遇到空间不足问题,该文件系统的所有快照都将变为无效的 — 换言之,都不可用。在我自己的工作中,我更喜欢外部快照,主要是因为可以根据需要挂载它们,以便更好地查看。
外部快照
在本演示中,文件系统名为 /opt/portal。其大小是 512M,数据文件 281M 多。
- # lsfs |grep -w portal
- /dev/fslv02 -- /opt/portal jfs2 1048576 rw yes no
- # df -m |grep portal
- /dev/fslv02 512.00 231.60 55% 7 1% /opt/portal
- # pwd
- /opt/portal
- # ls
- app_be app_fr app_nl lost+found
要创建外部快照,作为一条规则,我用约原始文件系统大小的一半来创建该快照。IBM 文档建议的快照大小是源文件系统的 10 % 到 15 %。但是,我喜欢为快照提供充足的空间,并且从安全性方面来看也是有好处的。在本例中,50 % 的空间相当于 250M。创建快照的常见格式为:
snapshot -o snapfrom= -o size= |
现在创建外部快照:
- # snapshot -o snapfrom=/opt/portal -o size=250M
- Snapshot for file system /opt/portal created on /dev/fslv04
自动创建一个逻辑卷来保存快照。为了确认已创建了快照,使用 snapshot 命令查询相关文件系统的快照,如:
- # snapshot -q /opt/portal
- Snapshots for /opt/portal
- Current Location 512-blocks Free Time
- * /dev/fslv04 524288 523520 Sun Nov 4 10:57:46 GMT 2012
现在,我可以挂载快照,查看已复制的数据,但首先需要创建挂载快照所需的目录:
- # mkdir /snap_portal
- # mount -v jfs2 -o snapshot /dev/fslv04 /snap_portal
- # df -m |grep portal
- /dev/fslv02 512.00 231.60 55% 7 1% /opt/portal
- /dev/fslv04 256.00 255.62 1% - - /snap_portal
现在,我可用 cd 命令进入该快照 (/snap_portal) 文件夹并查看已复制的文件;注意,文件系统是只读的,不允许写入数据:
- # cd /snap_portal
- # ls
- app_be app_fr app_nl lost+found
- # ls >file1
file1:The file system has read permission only.
现在,我可以进一步将快照文件系统备份到磁带或 SAN。假设我已对 /opt/portal 执行了某些数据维护操作并且误删除了一个文件,那么只需从已挂载的快照中将被删除的文件复制到 /opt/portal 中。但是,现在我们来创建 /opt/portal 的另一个快照:
- # snapshot -o snapfrom=/opt/portal -o size=250M
- Snapshot for file system /opt/portal created on /dev/fslv05
和前面类似,查询 /opt/portal 的快照:
- # snapshot -q /opt/portal
- Snapshots for /opt/portal
- Current Location 512-blocks Free Time
- /dev/fslv04 524288 523520 Sun Nov 4 10:57:46 GMT 2012
- * /dev/fslv05 524288 523520 Sun Nov 4 11:00:53 GMT 2012
在上面的输出中,* 代表***的快照。如果以后不再需要使用某个快照,可使用 snapshot 命令删除该快照。删除快照的通用格式为:
- snapshot -d
例如,要删除 fslv04,我可使用以下命令:
- # snapshot -d /dev/fslv04
假设由于某些更新导致 /opt/portal 上出现错误,因此需要恢复整个文件系统。我可以选择要回滚哪个快照。对我而言,这是快照的主要卖点之一。如果已经制作了多个快照,那么就有多个恢复点。在我们的演示中,我将回滚在 10:57 制作的快照,即 /dev/fslv04。首先我要卸载所有快照(如果已挂载的话),然后卸载 /opt/portal,之后执行 rollback 命令。在这个例子中,时间点是 Sunday, Nov. 4 的 10:57。rollback 命令的常见格式为:
- rollback -v
进行回滚时,会删除该文件系统的所有快照。要回滚并恢复到原始文件系统 /opt/portal,我可使用:
- # umount /opt/portal
- # rollback -v /opt/portal /dev/fslv04
- Restoring block 1
- Restoring block 1000
- Restoring block 2000
- ...
- Restoring block 12000
- Total blocks restored = 12809
- rmlv:Logical volume fslv04 is removed.
- rmlv:Logical volume fslv05 is removed.
- Rollback complete
要确认没有留下任何快照,可列出快照:
- # snapshot -q /opt/portal
- /opt/portal has no snapshots.
现在,我可以重新挂载 /opt/portal,并且已恢复了文件系统的原始内容!
- # mount /opt/portal
#p#
备份快照
backsnap 在后台为您完成大部分的工作。它创建逻辑卷来保存快照,然后将内容复制到一个存档文件中或磁带设备上。然后可使用 restore 命令来恢复已备份的文件。使用 /opt/portal 文件系统创建备份快照,让我们看看它是如何工作的。backsnap 命令的常见格式为:
- backsnap -m -s size -f
在这个例子中,我将使用以下值:/backsnap_portal 是临时挂载点;250M 是大小;/opt/dump/backup_portal 是存档文档;/opt/portal 是源文件系统。
- # backsnap -m /backsnap_portal -s size=250M -f /opt/dump/backup_portal /opt/portal
- Snapshot for file system /opt/portal created on /dev/fslv05
- backup:Backing up /dev/rfslv05 to /opt/dump/backup_portal.
- backup:There are an estimated 286768 1k blocks.
- backup:There are 287321 1k blocks on 1 volumes.
- backup:The backup is complete.
现在我们有了一个存档文件 backup_portal,它位于目录 /opt/dump 中。看看存档的大小,是 280M:
- # du -ms /opt/dump/backup_portal
- 280.56 backup_portal
要确认文件已位于存档中,我可使用 restore 命令列出各个文件:
- # restore -tvf /opt/dump/backup_portal
要从存档文件中将文件 app_be 恢复到 /opt/portal,我可使用:
- # cd /opt/portal
- # restore -xvf /opt/dump/backup_portal app_be.
- Extracting directories from media.
- Initializing the symbol table.
- Extracting requested files..
- Specify the next volume number:1
- Extracting file ./app_be.
要制作一个快照并将文件置于磁带 rmt0,同时使用以前的备份快照的属性,我可使用:
- # backsnap -m /backsnap_portal -s size=250M -f /dev/rmt0 /opt/portal
如果您已制作了快照并且已将内容发送到磁带,可使用 restore 命令列出磁带,如:
- # restore -tvf /dev/rmt0
也可使用以下命令列出已制作的快照:
- # snapshot -q /opt/portal
- Snapshots for /opt/portal
- Current Location 512-blocks Free Time
- * /dev/fslv08 524288 522496 Sun Nov 4 11:30:25 GMT 2012
如果决定要删除快照,已发送到磁带的已存档文件不会发生任何变化,这与删除外部快照不同。也就是,除非您以前将该快照的其他备份发送到某些介质上。
注意空间
作为系统管理员,我相信快照是进行在线备份的出色方式,并且如果出现了错误,还能恢复内容。但是要记住,一定要注意文件系统中已用的空间;您可不想因为空间不足导致最终得到无效的快照吧。