AIX系统的备份与恢复 | 周末送文档
社区会员黄建亮分享
本文档介绍了AIX常用的针对vg、lv、以及使用不同介质时的备份
备份需要考虑的问题
在设计系统备份方案时,要考虑系统的各个组成部件和运行特征,并设计与之对应的、符合现场实施情况的备份方案。
备份的目标是文件及数据,他们存储在AIX的存储结构中。AIX的存储体系结构有下面几个层次:
a.物理硬盘是底层的物理存储单元,它们最终存储数据
b.卷组是由n块物理磁盘组成的存储集合,被LVM分区化处理,划分为等尺寸的物理分区
c.一个vg中的若干空闲pp组合为一个集合,即为lv
d.lv可以创建文件系统,或直接作为裸设备使用
从文件系统角度来看存储问题时,AIX整个系统的存储框架可用下图来描述:
AIX中备份操作命令汇总
命令 | 功能简述 | 备份功能 |
tar | 将备份的文件目录写入备份介质中,或从备份存储介质中取出已备份文件来完成恢复,该命令即可指向文件,也可指向一个目录,若是目录,则该目录及其中的所有文件和目录都会被备份引用 | 文件和目录局部备份 |
cpio | 备份文件和目录到备份的存储介质中,或从备份介质中取出已备份文件来完成操作。但注意,当文件的大小超过2GB时,cpio命令不启用(可用pax替换) | 文件和目录局部备份 |
dd | 读取infile参数或标准输入,并执行指定的转换,然后将被转换的数据输出到outfile参数指定的存储位置或标准输出中。该命令可指定输入和输出的块大小和数量,可以利用裸物理I/O的性能优势 | 设备硬拷贝 |
pax | 备份文件和目录,列出已备份文件的列表,恢复已备份文件,AIX中转储2GB以上备份文件的首选方法,而且pax还可用来查看和修改tar文件和cpio文件的内容 | 文件和目录局部备份 |
mksysb | 为rootvg创建可用于恢复性安装的备份映像。最典型的特征是,备份可通过磁带和光盘完成,且这些设备可用于AIX系统的恢复性启动和安装 | 系统备份 |
savevg | 备份用户自定义vg(非根vg)的定义和数据 | 系统备份 |
backup | 备份文件和目录到指定的备份介质上,如磁带和软盘。备份操作可按如下两种方式进行:1.按文件备份(使用-i标记) 2.按索引节点对完整的文件系统进行备份 | 文件和目录局部备份、文件系统备份 |
restore | 用来读取backup命令创建的备份档案文件并提取其中已备份的文件,这里的备份文件既可以是指定文件的备份格式,也可以是完整文件系统的备份格式 | 文件和目录局部恢复、文件系统恢复 |
restvg | restvg是savevg的反向命令,用于恢复一个卷组的定义和数据 | 系统恢复 |
tctl | 用来控制磁带设备的操作,如进带、倒带、张紧等 | 磁带操作 |
tcopy | 复制磁带,其衍生用途是可以查看磁带内容 | 磁带操作 |
压缩命令 | compress、uncompress、pack、unpack、gzip、gunzip、zcat等 | 文件压缩 |
备份rootvg
mksysb:该命令备份rootvg卷组上已安装的文件系统、换页空间的定义、lv的分配策略,以及最关键的一项——备份中会包含的AIX启动映像。备份介质可以是磁带和光盘,也可以是网络(NIM)服务器。
rootvg备份磁带的一个特别的支出是可以用其引导AIX系统启动,并在启动后执行恢复式系统安装。
上图中的rootvg才是rootvg真正的数据备份区域,这里包含了在rootvg中全部“可看到的”数据,包括全部已挂载文件系统的内容(不包括未挂载lv或裸设备上的内容,数据库一般倾向于采用裸设备方式存数据,而这部分数据不会被mksysb备份下来)
一般来说,需要备份rootvg时的情况有下面这些:
a.系统完成应用安装后,上线前
b.系统进行了某种再配置,包括挂接新设备和更改设备的属性
c.系统中子服务设置被调整,如增减子系统服务和服务属性改变等
d.系统中某种运行特征发生了改变,如增减用户和调整用户权限等
e.安装AIX升级程序和修补程序等
f.其他涉及到rootvg更改的管理行为发生前后
g.定期执行,如每年两次
在smit中备份
#smit mksysb
backup device or FILE:指定备份的目标备份介质,一般为光盘或磁带
Create MAP files:指定是否要创建映射文件,若这个备份用于安装其他的及其,可选yes
EXCLUDE files:备份时要排除的文件(已经存储在rootvg上)
List files as they are backed up:备份时是否查看备份过程信息,选择no可略微提升备份速度
Verify readability if tape device:若备份介质是磁带,此处需要yes,一遍对磁带进行检查,确保磁带能够读取
Expand /tmp if need:设为yes,以避免因/tmp目录不够大而导致备份失败
Generate new/image.data file:/image.data包含了AIX安装过程中创建rootvg所需的参数,一般不推荐用户自己编辑这个文件,smit菜单进行mksysb时,该选项默认yes
选项 | 说明 |
-e | 备份时删除/etc/exclude.rootvg文件中列出的目录和文件 |
-i | 备份过程中自动生成/image.data文件 |
-m | 调用mkszfile命令以生成映射文件 |
-X | 在需要时自动扩展/tmp |
mksysb命令的选项
#mksysb -m -i -X /dev/rmt0
如有多台AIX系统需要备份,则可以采用网络备份的方式进行rootvg备份,即采用NIM方式进行rootvg备份。
备份中的文件排除
编辑一个排除文件,如不希望在mksysb备份中包含文件系统/db和/tmp,则可以创建并编辑/etc/exclude.rootvg文件,在其中加入不备份的文件系统和目录(不能有空行),示例:
/db/
/tmp/
接下来在通过smit菜单进行备份时,选EXCLUDE files为yes即可,或者通过高级命令加参数“-e”,#mksysb -e /dev/rmt0
用户类vg备份
savevg命令可实现对AIX系统中非rootvg,如安装数据库的vg或者安装中间件系统的vg的备份。savevg将备份属于指定vg的所有文件,且vg必须激活(varyon),而且vg中需要参与备份的文件系统必须处于挂载状态。
通过smit菜单
#smit savevg
通过高级命令
#savevg -if /dev/rmt0 datavg
备份文件黑名单:/etc/exclude.vgname 处于该名单中的文件将不会备份
若datavg中存放了Oracle系统,其中,目录/home/oracle/product/data/orcl/中存放了Oracle数据库orcl的数据库文件(如,数据文件、控制文件、日志文件等),如果当前Oracle数据库处于启动打开状态,则使用savevg命令不会对该目录进行备份(事实上不应备份,在某些平台上,这样做会造成Oracle运行错误,导致Oracle宕机)。编辑/etc/exculde.datavg文件:
#vi /etc/exclude.datavg
输入下面内容,并保证其中没有其他空行,然后保存
/home/oracle/produce/data/orcl/
文件系统备份操作
除了mksysb和savevg进行vg级的备份外,管理员还可以用若干AIX命令进行文件系统和文件级的局部备份。如:backup,有两种使用方式
按指定文件备份
#backup 选项
安索引节点备份
#backup 选项
选项 | 说明 |
-f | 指定用于备份的设备名称,如/dev/rmt0 |
-i | 指定按名称从标准输入和存档中读取文件 |
-p | 指定在存档前对文件进行打包或压缩,支队2GB以下文件打包 |
-q | 指定备份介质已准备就绪,指定-q选项时,backup将不提示准备备份介质,而是继续执行,该选项多用于非交互式备份 |
-u | 设定backup在/etc/dumpdates中记录备份的时间和级数,/etc/dumpdates文件保留了backup命令的备份信息,包括所备份的文件系统、上次备份级数和进行增量备份的日期 |
-v | 指定backup命令显示有关备份过程中的附加信息,使backup命令在标准输出设备上输出所备份文件的文件名 |
常和find命令配合使用,如:备份/db/oracle/product中的所有目录和文件,可先采用find查找/db/oracle/product下的所有文件和目录,然后通过管道命令继续执行backup备份命令:
#cd /db/oracle/product
#find .-depth | backup -i -f /dev/rmt0
backup命令的另一个亮点是可以直接备份文件系统,备份介质不仅可以是磁带、软盘,还可以是某个文件系统。如:文件系统/db处于挂在状态
#backup -f /db/backup.file -0(数字零) -u/db 将文件系统/db备份到文件/db/backup.file中
注意:若backup使用的是相对命令执行备份,则,未来在使用restore命令进行文件恢复时,需要在同样的目录下执行restore操作,否则文件可能会被恢复到其他目录中
可用于备份的命令
1.tar 传统的UNIX磁带存档命令,使用tar可通过磁带或磁盘介质备份文件和目录树
选项 | 说明 |
-e | 创建一个新的压缩备份 |
-f | 指定备份设备名称 |
-v | 列出每个被处理的文件名称 |
-x | 从压缩备份中取出一个或多个文件 |
-t | 显示压缩备份中包含的文件 |
tar命令的常用选项
示例:#tar -cvf /dev/rmt0/db/oracle 该方法会将/db/oracle备份到磁带上
#tar -tvf /dev/rmt0|more 查询磁带上备份的文件列表
从tar备份中恢复文件
#tar -xvf /dev/rmt0 /db/oracle 将备份文件恢复到/db/oracle中
#rm /db/oracle/admin/orcl/pfile/init.ora.26200993244
#tar -xvf /dev/rmt0/db/oracle/admin/orcl/pfile/init.ora.26200993244
以上两条命令实现了用备份中的文件来替换当前文件(局部恢复)
2.cpio 多用于Linux环境中的已被压缩备份命令,管理员可以使用磁带、磁盘等存储设备进行文件及目录的备份和恢复
选项 | 说明 |
-c | 以ASCII字符的形式读写头信息 |
-d | 按需创建目录 |
-i | 读取标准输入,有cpio创建一个压缩备份文件 |
-p | 从标准输入中读取文件路径名称,将这些文件复制到用目录参数命名的目录中 |
-m | 保留以前的修改时间 |
-o | 从标准输入中读取文件路径名称,把这些文件连同路径名和状态信息一起复制到标准输出中 |
-v | 列出文件名称 |
-t | 创建一个目录 |
cpio命令的常用选项
采用列表方式显示磁带上的备份文件内容
#cpio -itv < /dev/rmt0 |more
采用cpio方式备份的文件需要使用cpio命令进行恢复下面的示例将磁带上的文件恢复到/db/oracle目录中
#cd /db/oracle
#cpio -idmv < /dev/rmt0
cpio备份被用来恢复一个数据库的参数文件(Oracle参数文件)
#rm/db/oracle/admin/orcl/pfile/init.ora.26200993244
#cpio -idmv < /dev/rmt0 “/db/oracle/admin/orcl/pfile/init.ora.26200993244”
3.dd 用于从输入处读取数据,并将数据转换格式后输出到指定设备中,主要用于对裸设备形式数据库形式文件的备份和迁移。
将Sybase数据库的裸设备存储迁移到文件系统的过程
a.在Sybase的ISQL环境下关闭数据库系统
b.将数据库所使用的裸设备(使用命令创建裸设备时带有-T选项,设置裸设备的偏移量为0)复制到文件系统中
1>shutdown with nowait
2>go
c.执行裸设备备份(将ASE数据库的设备ASE_DEV_1所对应的裸设备/deb/asedev101备份到备份目录文件/backup/asedev101.back中)
#dd if=/dev/asedev101of=/backup/asedev101.new
d.删除裸设备(/dev/asedev101)
e.创建一个指向输出文件(/backup/asedev101.new)的链接文件(如/dev/asedev101)
f.将链接文件的属主关系授予Sybase用户
g.重启Sybase ASE系统,完成设备的迁移
4.pax 用于备份、读取文件、列出备份文件列表等。与tar相似,是AIX一个特定备份命令
常用选项:
-a:指定将文件附加到归档末尾
-r:指定读取备份归档文件
-w:指定创建备份归档文件
将当前目录的内容复制到磁带设备/dev/rmt0中
#pax -wf /dev/rmt0
复制/db/db2和/db/oracle到磁带设备/dev/rmt0
#pax -wvf /dev/rmt0 -x pax /db/db2 /db/oracle
列出磁带/dev/rmt0的内容
#pax -vf /dev/rmt0 -x pax
5.find 通过shell的管道符,配合find命令来实现对那些“需要找出来的”某些“指定文件”的备份 常用的备份命令为backup和cpio
使用backup针对DB2的安装文件进行备份,备份介质是磁带
#cd /db/db2
#find . -depth | backup -i -f /dev/rmt0
6.增量备份方式
基于全部内容的备份:完全备份
基于改变内容的备份:增量备份
backup在指定使用-u选项的情况下可以通过指定备份级别来完成增量备份,支持的最大增量级别是9。
增量备份级别解释:
0级备份(level 0):备份一个指定文件系统中的所有数据。0级备份以后的所有后续备份级别,只会将前一级备份完成后所发生的修改进行备份,如2级备份,将只备份在1级备份完成后再次发生变化的数据。
增量级别非范围是0-9。对大型文件系统,可采用如下备份方案:
a.每月指定一天执行0级备份
b.每周指定一天完成1级备份
c.每天指定时间完成2级备份
对应的命令分别为:
a.#backup -0 -uf /dev/rmt0 /db/db2
b.#backup -1 -uf /dev/rmt0 /db/db2
c.#backup -2 -uf /dev/rmt0 /db/db2
AIX维护增量备份信息的文件时/etc/dumpdates文件,backup在采用文件系统方式备份时(采用按索引节点进行备份的方式)记载增量备份信息的一个日志。
7.数据库系统备份
如果AIX用于提供数据库系统运行环境,如Oracle、DB2等数据库系统,那么需要注意:数据库系统的备份恢复方法和AIX的备份恢复方法时完全不同的,切不可按AIX的方法进行数据库的备份。
数据库系统安装完成后,从启动到处于运行状态,数据库软件可能会使用下面4种操作系统的存储资源:
a.数据库系统软件,也就是数据库系统的可执行程序和库文件等。如有可能,需在系统存储布局之初尽量把这部分内容放置在单独的vg中
b.数据库运行环境文件,如Oracle数据库所需的/etc/oratab、/etc/oracle/ocr.loc、/etc/oralnst.loc、/usr/local/bin等文件和目录,这些文件一定会存在rootvg卷组上
c.与数据库数据存储相关的文件,包括数据库的数据文件(Oracle)、设备文件(Sybase)、容器文件(DB2)、日志文件(MySQL)等,他们是应用数据的存储介质。处于存储独立性方面的考虑,这部分内容也最好放置在单独的vg存储区域上。
d.数据库备份文件,如Oracle的RMAN备份,Sybase、MySQL的DUMP备份等。这些文件是数据库可恢复性的前提和保证,因此,这部分内容也最好放在单独的vg存储区域上。
注意:上面a、b、d三种内容可用AIX UNIX的备份手段。但c(与数据库存储相关的文件)的备份则“一定不能”采用AIX的操作系统级备份手段,应采用数据库自身的备份模块,如Oracle的RMAN,Sybase的Backup Server等,其实施方法和过程请参见两本技术书籍《Oracle大型数据库系统在AIX/UNIX上的实战详解》、《Sybase数据库在UNIX、Windows上的实施和管理》
恢复崩溃的系统
系统出现错误甚至是崩溃,往往有多重原因:
a.AIX BOS系统崩溃
b.存储介质失败
c.应用系统、数据库系统崩溃
d.认为错误会导致故障
e.Bugs因素
单就AIX而言,其失败可能发生在如下几个层面:
a.AIX系统崩溃从而导致系统不可启动
b.AIX物理盘损、vg失败不可用
c.AIX文件系统不可访问
d.AIX中文件的损坏或丢失
e.其他AIX错误
rootvg失败的恢复
rootvg的备份时专门用来恢复AIX操作系统的备份。重启系统,设置系统采用磁带(rootvg备份一般采用磁带方式)作为引导设备来启动。之后进入维护模式,选择对应选项进行rootvg的恢复。
由于AIX具有vg数据独立性,rootvg的恢复安装不会影响到其他vg的状态和数据,也就是说,AIX系统中其他vg的可用状态是不会受到影响的。
根vg文件的恢复
如果rootvg并未损坏,只是其中某些文件损坏或丢失了,这时管理员不必执行根vg失败的恢复操作,仅需从mksysb备份中恢复某些文件即可,过程如下:
1.将mksysb备份插入磁带机,操纵磁带(如/dev/rmt0)使之倒回至头部
#tctl -f /dev/rmt0 rewind
2.rootvg备份分为4个片段,其中前三个备份片段分别是基本操作系统BOS启动映像数据、基于操作系统安装映像和虚拟目录TOC,第四个片段是rootvg的数据备份。因此这里需要将磁带前进3个备份标记,倒回第四个剪短的起始处。注意,这里使用的磁带(如/dev/rmt0设备)设备文件时/dev/rmt0.1。
#tctl -f/dev/rmt0.1 fsf 3
3.从mksysb镜像上恢复文件(本例中恢复/etc/hosts文件),以完成恢复
#restore -xqvf/dev/rmt0.1 /etc/hosts
注意:若rootvg出现某种问题,且系统当前还在运行,这时不建议立即重启AIX,因为一旦关闭,AIX可能无法再次成功启动,因为系统中还存在这个“损坏”。
非根vg的恢复
假设非根vg(如datavg)上定义了一个lv(lv_data),在lv_data上存在一个JFS2文件系统。
对datavg采用的备份方式:
#savevg -f ‘/datavg.backup’-vimX datavg
如需确定一个备份文件的内容,可使用下面命令查看其中文件列表:
#listvgbackup -l-f /datavg.backup
对这个备份进行恢复。首先,确定这个vg(中的数据)要恢复到什么位置,通过smit菜单:
#smit restvg
卷组文件恢复
vg备份不仅可以用来恢复vg,还可以用来恢复其中的局部文件,通过restore命令实现。下面使用卷组备份(文件)来恢复卷组数据,在示例中,datavg上有一个文件系统/data,此文件系统中有一个文件testfile0,但该文件已经丢失。
#ls/data/testfile0 提示文件不存在
从卷组备份(savevg备份)中恢复文件testfile0到其原始位置上:
#cd /
#restore -xdvqf/datavg.backup ./data/testfile0
#ls/data/testfile0 发现文件得到恢复
文件系统的恢复
文件系统可能会遇到如下问题:
1.超级块损坏
2.inode数据错误
3.某种原因下的文件错误
4.文件丢失等
用于恢复的命令为:restore
常用选项如下:
-d:恢复所有文件和子目录
-M:设置访问权,并将被恢复文件的修改时间设置为恢复时间
-i: 采用交互式的方式从文件系统备份中恢复指定文件
-q:表明介质是否已经准备完成
-v:恢复以详细模式进行,恢复时提供细节
-x:恢复单独的文件
-f:指定备份所在的输入设备或文件名
将备份到磁带设备/dev/rmt0的整个文件系统恢复到原始位置
#restore -rvqf/dev/rmt0
从磁带备份中恢复一个特定目录
#restore -xdvqf/dev/rmt0 /Dir/mydirectory
恢复一个指定文件
#restore -xvqf/dev/rmt0 /Dir/myfile
点击阅读原文可下载原文档
长按二维码关注“AIX专家俱乐部”公众号