Solaris操作系统是基于Unix SVR4版本,有很多传统Unix操作系统上做数据备份和恢复的方法,如ufsdump/ufsrestore、tar、cpio、和dd等命令,利用这些命令操作磁带机可对数据备份和恢复。这些方法好的地方是简单,属Unix基本操作,会Unix的人都会,而且磁带介质便宜和容量大,还能可异地分开存放,不好的地方是通常系统往往需离线,且磁带机操作需人工换带,常见系统管理员在夜深人静做系统备份时,睡眼惺忪地备完一盘又换一盘带,备份速度慢,如DAT磁带机是3MB/s、SDLT 600磁带机是36MB/s,LTO 3磁带机是80MB/s等,弄不好就备份到天亮了,多少系统管理员变成孤男寡女,当然少数企业级磁带机如T10000可达120MB/s,但价格较高,若想采用自动换带的设备,又能按备份策略自动的在线备份数据,则升级为企业级备份,需增加花费去购置磁带库及备份软件,如Sun StorageTek磁带库和Veritas Netbackup软件,当然这又能保护数据又能让系统管理员省下时间去追求人生真谛,只有关键业务的企业才会有这样的考虑,也是企业必花的代价。
Solaris中包含Solaris Volume Manager(SVM)卷管理软件和ZFS文件系统,都能做RAID组,都能提供数据的在线保护,例如使用SVM做2硬盘镜像d1:
# metadb -a -f -c 3 /dev/rdsk/c2t4d0s7
# metainit d11 1 1 c2t4d0s3
# metainit d12 1 1 c2t4d0s4
# metainit d1 -m d11
# metattach d1 d12
# mount /dev/md/dsk/d1 /data
使用Solaris ZFS文件系统做镜像简单些,一个命令完成,也更快,即时完成:
# zpool create -f data mirror c2t4d0s3 c2t4d0s4
SVM软件和ZFS文件系统二者都在实际企业中有应用,共同好处是都是Solaris中的功能,因Solaris开源而免费,不同是SVM是卷管理软件,需将硬盘组成逻辑卷,而文件系统建立在逻辑卷上,而传统UFS文件系统并不保证不会崩溃,因某些原因系统崩溃后重启需用修复文件系统,如用fsck命令,或设置时加日志做logging,而且应用对硬盘的操作是通过卷管理软件这个中间层进行的,性能会有而外的开销,另外既然是软件,也需系统管理员去学习,所有这些缺点却是ZFS文件系统所没有的,无卷管理层、硬盘总是有效,完全在线维护,
使用简单。二者共同的缺点也是明显的,就是都基于硬盘,数据保护都常在本地,如看到系统管理员提着一兜子沉甸甸的硬盘在两地间奔波,别人或许认为在运金条呢。
当然RAID保护可由服务器硬件和磁盘阵列硬件完成,此种情况又升级为企业级数据保护,如所有Sun x64服务器和Sun StorageTek磁盘阵列都有这样的特性,其它厂家也有类似的产品,需要硬件保护数据的企业应考虑这样的花费。
Solaris上有种软件可以动态的提供本地的数据保护 - 即时数据复制,和远程的数据拷贝 - 远程镜像,即Sun StorageTek Availability Suite,目前版本是4.0:
http://www.sun.com/storagetek/management_software/data_protection/availability/
安装简单:
1。检查Solaris操作系统版本:
# more /etc/release
Solaris 10 6/06 s10s_u2wos_09a SPARC
Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 09 June 2006
3。安装软件,只需回答两个问题,显示和接受软件许可:
s6a# ./install.sh -a
Display software license agreement [y,n,?] y
...
Do you agree to the terms and conditions stated in software license
agreement [y,n,?] y
...
装完重新启动:
# shutdown -y -i6 -g0
3。做本地硬盘数据的保护:
如保护data目录所对应的硬盘c0t2d0s3,可设c0t2d0s4为其即时复制的硬盘,再准备另一硬盘c0t2d0s5放变动的数据,即:
Master volume - c0t2d0s3
Shadow volume - c0t2d0s4
Bitmap volume - c0t2d0s5
# iiadm -e ind /dev/rdsk/c0t2d0s3 /dev/rdsk/c0t2d0s4 /dev/rdsk/c0t2d0s5
即对data目录(硬盘c0t2d0s3)的任何操作,都被实时的复制到第二个硬盘上(c0t2d0s4),如有一天第一个硬盘坏掉,第二个硬盘仍有全部的第一个硬盘的数据,其变化被记录在第三个硬盘(c0t2d0s5)上,与镜像的区别是,如做镜像,那第二个硬盘一定要至少和被保护的硬盘一样大,但即时复制的硬盘不一定,除非被保护的系统数据100%的变化,可看各硬盘实际需要的大小,如:
# dsbitmap -p /dev/rdsk/c0t2d0s3
Point in Time bitmap sizing
Data volume (/dev/rdsk/c0t2d0s3) size: 104004 blocks
Required bitmap volume size:
Independent shadow: 48 blocks
Full size dependent shadow: 48 blocks
Compact dependent shadow: 560 blocks
即显示出,被保护的盘上有104004数据块,记录的变化才48个数据块。
4。如做远程镜像,即本机硬盘数据实时复制到远方的服务器硬盘上:
本地被保护的服务器准备如下:
primary volume – c0t2d0s6 - 被保护本地数据硬盘
primary bitmap – c0t2d0s7 - 本地数据硬盘的变化记录
远端的服务器准备如下:
secondary volume – c0t0d0s6 - 远端数据硬盘
secondary bitmap – c0t0d0s7 - 远端数据硬盘的变化记录
在本地服务器上enable远程复制:
a# sndradm -e s6a /dev/rdsk/c0t2d0s6 /dev/rdsk/c0t2d0s7 /
s7a /dev/rdsk/c0t0d0s6 /dev/rdsk/c0t0d0s7 ip sync
Enable Remote Mirror? (Y/N) [N]: Y
在远端服务器上enable远程复制:
# sndradm -e s6a /dev/rdsk/c0t2d0s6 /dev/rdsk/c0t2d0s7 /
s7a /dev/rdsk/c0t0d0s6 /dev/rdsk/c0t0d0s7 ip sync
Enable Remote Mirror? (Y/N) [N]: Y
检查两地数据同步的状态:
s6a# sndradm -p
/dev/rdsk/c0t2d0s6 -> s7a:/dev/rdsk/c0t0d0s6
或干脆本地数据强行同步到远方服务器:
# sndradm -m s7a:/dev/rdsk/c0t0d0s6
Overwrite secondary with primary? (Y/N) [N]: Y
当然,如利用多地点的远程复制,还可继续远跳多点,以应付多地点同时故障:
或结合备份,做无中断远程备份:
或结合集群软件,提供不同级别的关于数据保护的服务,当然服务水平越高,保护数据的所需的花费越大: