目前市场上有很多自称是“完美的系统备份选择”的设备,包括磁带机,便携式磁盘驱动器,甚至还有一些神秘的Internet备份系统。对于备份操作来说, 还是磁带机提供了最可信的存储方式。为什么是磁带机呢?当然,Iomega公司的Jaz或Zip驱动器看上去是令人感兴趣的备份工具,但是它们易于在硬盘 驱动器崩溃的情况下因为文件系统的原因而出现问题。对于Internet备份来说,当你因为系统崩溃而不能访问互联网时,就不能恢复系统的数据。同样,你 能真正信任你的数据存放在别人的远程系统中么?因此,我们选择了磁带机,但是如何访问磁带机呢?正如Linux、UNIX系统的设备一样,在Linux、 UNIX系统中,从用户的角度来看,任何设备都可以看做是文件。因此,可以“打开”合适的磁带驱动器文件来进行写入操作,将要备份的数据写入到文件中去。 虽然这听上去过于简单了,但是实际情况就是这样。Linux、UNIX环境下根文件系统的/dev目录包含了所有和物理设备关联的文件。当对这些文件进行 操作时,实际上是在操作下层的物理设备。
下表举例说明了在Linux环境下设备文件是如何和物理设备关联起来的。
正如表中看到的那样,设备名是基于位于针对这种设备类型的分层结构的设备的逻辑数字,而不是其物理ID(SCSI)或者IDE通道(ATAPI)。因此, 即使某个SCSI磁带机被分配为SCSI设备的ID4,如果它是SCSI链的第一个磁带设备,则它将是 /dev/st0, 而不是/dev/st4,这种命名惯例有利于跟踪系统中的磁带设备时也适用,甚至在拥有多个驱动类型的磁带设备时也适用。同样,在2.0.X内核下,只支 持单个ATAPI设备,2.2版本的内核可以使用多个ATAPI驱动(例如ht0, ht1,...等)。
现在我们来看看这些文件是如何被命名的,回卷和不回卷的区别在哪里呢?简单的说,回卷设备允许在结束操作以后,自动将磁带回卷到开始处,而不回卷设备在操 作结束以后,将磁带机停留在当时的位置而不进行回卷操作。对于大多数简单备份操作,回卷设备更适合一些,因为在备份操作结束以后其自动回卷以准备取出磁 带。而对于那些复杂的备份操作(如附加备份,逻辑搜索及那些高端备份工具的操作),不回卷设备更适合一些。
在UNIX环境下,磁带机设备文件和物理设备关联的情况就比较复杂了,要和磁带机的类型以及UNIX系统的类型而变,下表只举例说明常用的Sun Solaris操作系统下磁带机设备文件和物理设备关联的情况。
下面介绍一下磁带机的读写命令和操作管理命令,最常用的磁带机读写命令是tar, 它可以对磁带进行列目录、读和写目录文件,下面是对磁带机读写命令的介绍:
列磁带目录:tar tvf 磁带机设备文件名
首次写入磁带:tar cvf 磁带机设备文件名 欲记录的文件或目录名
增量写入磁带:tar rvf 磁带机设备文件名 欲记录的文件或目录名
读磁带: tar xvf 磁带机设备文件名 欲读出的文件或目录名
注:上面的磁带机设备文件名即指磁带机设备在Linux、UNIX系统中的关联缩写。磁带机的其他操作命令和更详细的使用说明可参考tar的man page。
磁带机读写命令举例:
$ tar tvf /dev/rmt/0h/* 列磁带目录*/
$ tar cvf /dev/rmt/0h/usr2/ora_bak/full01.dmp.gz /* 首次写入磁带 */
$ tar rvf /dev/rmt/0h/usr2/ora_bak/full02.dmp.gz /* 增量写入磁带 */
$ tar xvf /dev/rmt/0h /usr2/ora_bak/full02.dmp.gz /* 读磁带 */
最常用的磁带机操作管理命令是mt, mt命令是操作磁带机的一个很常用的命令, 利用它可以十分方便地管理磁带机设备,下面是对磁带机操作管理命令的介绍:
拉紧磁带:mt -f 磁带机设备文件名 retension
倒带: mt -f 磁带机设备文件名 rewind
列出磁带机状态:mt -f 磁带机设备文件名 status
擦掉数据:mt -f 磁带机设备文件名 erase
注:关于mt命令更详细的使用说明可参考mt的man page。
磁带机操作管理命令举例:
$ mt -f /dev/rmt/0h retension /* 拉紧磁带 */
$ mt -f /dev/rmt/0h rewind /* 倒带 */
$ mt –f /dev/rmt/0h status /* 列出磁带机状态 */
$ mt -f /dev/rmt/0h erase /* 擦掉磁带数据 */
这样,在Linux、UNIX系统下对磁带机进行管理和使用的方法就给大家介绍完了,磁带机设备是网络和系统管理员经常使用的设备,关于这方面的资料也比 较少,所以针对这个现象,撰写此搞供大家阅读。
设备(Device) 回卷(Rewinding) 不回卷(No-Rewind)
1st SCSI tape drive /dev/st0 /dev/nst0
2nd SCSI tape drive /dev/st1 /dev/nst1
nth SCSI tape drive /dev/st[n-1] /dev/nst[n-1]
1st ATAPI tape drive /dev/ht0 /dev/nht0
2nd ATAPI tape drive /dev/ht1 /dev/nht1
nth ATAPI tape drive /dev/ht[n-1] /dev/nht[n-1]
Amanda是提供了远程集中备份的功能,通过分别设置客户端、
安装
对于目前厂家的HP DAT24/40系列外置SCSI磁带机,都带有自动
blk: queue ef0d7a14, I/O limit 4095Mb (mask
装入磁带后,可执行如下操作:
mt -f /dev/st0 rewind
mt -f /dev/st0 erase
注意:擦除工作非常慢,并且对磁带有损伤,最好不要执行,
mt –f /dev/st0 offline
数据操作
基本操作如下:
1. 列目录操作tar tvf /dev/st0
假如磁带上没有任何文件,则列目录会报错,这个错误没有关
写入数据的方法有两种:不打包直接写入文件和打包压缩后写
tar cvf /dev/st0 test1.tar.gz
磁带机的传输速度比较慢,对于不是很大的文件备份,稍等几
磁带存储是线性存储,所有数据是依次写入的。为了不覆盖前
tar rvf /dev/st0 test2.tar.gz
tar rvf /dev/st0 test3.tar.gz
tar rvf /dev/st0 test3.tar.gz
读取数据前,首先查看磁带上的内容,获取要恢复的文件名。
tar xvf /dev/st0 test3.tar.gz
假设我们的系统里面只有一个磁带机设备,那么就有两个设备文件:/dev/st0和/dev/nst0。这两个设备都是这台磁带机的设备名,/dev /st0是回卷设备,每次操作完成之后,磁带机都会自动回卷到磁带的开头。这时候如果进行备份操作则会覆盖磁带中的数据信息,而不是将新数据附在磁带数据 结束处。/dev/nst0是非回卷设备,每次操作完成之后,磁带机的磁头都会停留在当前位置,随后的备份操作将被添加到上次备份结束以后的地方。但是用 非回卷设备是无法自动回卷磁带的,如果要完成备份和恢复的操作还需要使用mt命令来对磁带进行操作。下面分别对两种设备的操作方法做简单的介绍。
一.回卷设备/dev/st0
由于回卷设备会自动回卷磁带,所以使用/dev/st0只能保存一个归档文件,任何新写入的文件都会覆盖原来的文件,但是这种设备的使用方法比较简单。磁 带备份主要使用tar命令
1.备份文件到磁带
#tar cvf /dev/st0 filename1 filename2
例:备份/etc下的文件到磁带机
#tar cvf /dev/st0 /etc/*
2.查看磁带中备份文件
#tar tvf /dev/st0
3.恢复磁带中备份文件
#tar xvf /dev/st0
二.非回卷设备/dev/nst0
非回卷设备不会自动回卷磁带,所以使用/dev/nst0可以在磁带上保存多个归档文件,但是备份必须使用mt命令来控制磁带转动来结合tar命令使用, 操作上相对比较复杂。
mt命令最重要的功能就是定位磁带,在使用非回卷设备的时候需要使用mt命令来定位磁带才能正常的使用tar命令进行备份和恢复。mt详细的用法可以参考 man手册,下面介绍几个最常用的用法。mt的命令格式:
mt -f 设备名 操作
-f 参数后面跟着一个设备名,就是磁带设备的名字,例如/dev/nst0。
除了设备名这个参数外,mt有一个必须有的参数,就是操作,最常用的操作有:
status 检查磁带机状态
fsf n 前进n个文件
bsf n 后退n个文件
磁带机的简单使用
基本概念
- 磁带是线性存储设备,没有什么分区表的概念,磁头在哪里,就从哪里开始读。
- 磁带机好像只能用root用户操作。
- 磁带上可以划分存储空间,每个存储空间有一个file number,从0开始顺序排列。
- 磁头在存储空间中的位置用block number来表示,0代表开始,大于0的整数代表块,比如39代表磁头在本file number的第39块的位置,而-1则代表磁头位于本file number的结尾。
- 同样一部磁带机,用/dev/st0时是当自动回卷设备使用,每次操作完成之后,磁头都返回file number=0, block number=0, BOT的位置;而用/dev/nst0调用时,操作完成时磁头就停在那个位置,不会回到开头。
- 使用nst非回卷方式,用tar tvf列文件,只有当block number=0时才能出内容,并且列完之后block number为大于0的整数,注意这并不代表本段存储空间的结尾(-1)。
自动回卷的使用方式
tar cvf /dev/st0 file_to_store
tar rvf /dev/st0 file_to_store
tar uvf /dev/st0 file_to_store
tar tvf /dev/st0
tar vf /dev/st0 --delete file_to_delete
非自动回卷的使用方式
# mt -f /dev/nst0 status
file number = 0
block number = 0
General status bits on (41010000):
BOT ONLINE IM_REP_EN
# tar cvf /dev/nst0 A
A
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar cvf /dev/nst0 B
B
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 status
file number = 0
block number = -1
General status bits on (1010000):
ONLINE IM_REP_EN
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar tvf /dev/nst0
-rw-r--r-- root/root 21194792 2007-10-24 11:37 B
# mt -f /dev/nst0 status
file number = 1
block number = 2070
General status bits on (1010000):
ONLINE IM_REP_EN
# mt -f /dev/nst0 bsf 1
# mt -f /dev/nst0 status
file number = 0
block number = -1
General status bits on (1010000):
ONLINE IM_REP_EN
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar rvf /dev/nst0 C
C
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar cvf /dev/nst0 D
D
# mt -f /dev/nst0 status
file number = 2
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 fsf 1
# mt -f /dev/nst0 status
file number = 1
block number = 0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
# tar tvf /dev/nst0
-rw-r--r-- root/root 34201298 2007-10-24 11:57 D
# mt -f /dev/nst0 status
file number = 1
block number = 3341
General status bits on (1010000):
ONLINE IM_REP_EN
# mt -f /dev/nst0 rewind
# tar tvf /dev/nst0
-rw-r--r-- root/root 341054 2007-10-24 11:37 A
# tar tvf /dev/nst0
# tar tvf /dev/nst0
-rw-r--r-- root/root 34201298 2007-10-24 11:57 D
# tar tvf /dev/nst0
# tar tvf /dev/nst0
# tar tvf /dev/nst0
tar: /dev/nst0: Cannot read: Input/output error
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
# mt -f /dev/nst0 status
file number = 2
block number = -1
General status bits on (9010000):
EOD ONLINE IM_REP_EN
出带,将磁带卷至初始位置然后从磁带机内弹出
# mt –f /dev/nst0 offline
清除磁带中的所有内容,特慢,还伤带,轻易不要用
# mt –f /dev/nst0 erase
我的几个疑问
- 如何删除file number?
- 既然磁带是线性存储,如果向前面一个file number中添加中间,存储空间不够怎么办?
- 如何查看磁带剩余空间?