一个磁带库问题的解决过程

问题描述:
操作系统 redflag DC5  
问题:如何确认我的磁带库备份和恢复数据都没有问题?

问题解决及过程分析
收集的dmesg信息,其中有关信息如下:
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3 sda4 < sda5 >
Attached scsi disk sda at scsi0, channel 2, id 0, lun 0
62 [RAIDarray.mpp]Device 0x2a8d7780 is not an array
Attached scsi generic sg0 at scsi0, channel 2, id 0, lun 0,  type 0
QLogic Fibre Channel HBA Driver


62 [RAIDarray.mpp]Device 0x2b79aa40 is not an array
Attached scsi generic sg1 at scsi1, channel 0, id 0, lun 0,  type 1
  Vendor: IBM       Model: ULT3580-TD4       Rev: 89B2
  Type:   Sequential-Access                  ANSI SCSI revision: 03
qla2400 0000:01:00.0: scsi(1:0:1:0): Enabled tagged queuing, queue depth 32.
……
Attached scsi generic sg2 at scsi1, channel 0, id 1, lun 0,  type 1
  Vendor: IBM       Model: 3573-TL           Rev: 7.40
  Type:   Medium Changer                     ANSI SCSI revision: 05
qla2400 0000:01:00.0: scsi(1:0:1:1): Enabled tagged queuing, queue depth 32.
……
Attached scsi generic sg3 at scsi1, channel 0, id 1, lun 1,  type 8
MPP:No supported SCSI devices are discovered. Please run "hot_add" after supported storage arrays are attached to the Linux host.
……
st: Version 20040403, fixed bufsize 32768, s/g segs 256
Attached scsi tape st0 at scsi1, channel 0, id 0, lun 0
st0: try direct i/o: yes (alignment 512 B), max page reachable by HBA 4503599627370495
Attached scsi tape st1 at scsi1, channel 0, id 1, lun 0
st1: try direct i/o: yes (alignment 512 B), max page reachable by HBA 4503599627370495
inserting floppy driver for 2.6.9-42.7AXsmp

可以看到有关磁带机设备的信息为,st0和st1
由于磁带库是双控制器看到的就是st0和st1两个st的设备,磁带在第一个控制器上放着,所以可以针对st0做如下的测试:
# tar cvf /dev/st0 C17AQML.tar   (备份数据到磁带机)
C17AQML.tar
# tar tvf /dev/st0               (查看带库的信息)
-rw-r--r-- root/root 408473600 2009-04-15 14:21:37 C17AQML.tar
# tar xvf /dev/st0 C17AQML.tar    (恢复数据)
C17AQML.tar
操作都是正常的,证明系统操作磁带机没有问题了。

应该关于磁带机的一些常用操作:
1.复制文件到磁带
(1)切换到包含有需要复制文件的目录
(2)在磁带驱动器中插入可以写入的磁带
(3)输入 tar cvf /dev/nsth0-0c0i0l0 filenme filename ...
//注: c选项复制指定的文件,v选项显示复制文件的信息,f选项后面跟随的是tar文件写入的磁带设备名。指定的文件名复制到磁带,覆盖磁带上任何已存在的文件。
特别注意:使用c选项复制文件到磁带将破坏磁带上已有的任何文件。如果要保留这些文件,用r选项。

2.列出磁带上的文件
(1)插入磁带到磁带驱动器。
(2)输入 tar tvf /dev/nsth0-0c0i0l0
//注: t选项列出指定的文件,v选项显示文件的全部信息,f选项后面跟随的是tar文件写入的磁带设备名。

3.添加文件到磁带
(1)切换到包含有需要复制文件的目录。
(2)在磁带驱动器中插入可以写入的磁带
(3)输入 tar rvf /dev/nsth0-0c0i0l0 filename filename...指定的文件添加到磁带上已有文件的后面。
//注: 如果使用n选项做为磁带设备名的一部分,可以自制多个tar文件集到磁带。输入 tar cvf /dev/nsth0-0c0i0l0n filename ,当该文件自制完毕时磁带不回绕,下一次使
用磁带时,文件在当前文件集的结尾写入。

4.从磁带获取文件集的结尾写入
1)切换到包含有需要复制文件的目录。
2)在磁带驱动器中插入磁带。
3)输入 tar xvf /dev/nsth0-0c0i0l0  指定驱动器中磁带上的所有文件复制到当前目录中。
从磁带中获取单个文件,输入 tar xvf /dev/rmt/n filename filename ...    从磁带中展开指定的文件名,放入当前工作目录。

5.从磁带上递归读取目录和子目录
1)更换目录到要自制文件的父目录
tar xvf /dev/nsth0-0c0i0l0 filename 将恢复filename到当前目录。
2)输入 tar xvf /dev/nsth0-0c0i0l0 directory-name ,从磁带中递归复制该目录和它的所有子目录。

另外,想为什么我就一个磁带机,为什么看到4个sg设备为什么?
  sg(SCSI Generic)scsi通用设备,这个是一个驱动程序。 并不是某些资料上说的机械手。
从用的dmesg文件分析:
disk sda at scsi0, channel 2, id 0, lun 0    generic sg0 at scsi0, channel 2, id 0, lun 0,  type 0
根据从显示的scsi,channel, id,type号,这样判定sg0指的是本地硬盘sda
同理generic sg1 at scsi1, channel 0, id 0, lun 0,  type 1    tape st0 at scsi1, channel 0, id 0, lun 0判定sg1就是指的st0(磁带机)   sg2――――st1;    sg3――――机械手

同时/proc/scsi/scsi信息也能体现设备的信息
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 02 Id: 00 Lun: 00
  Vendor: LSI      Model: MegaRAID SAS RMB Rev: 1.12
  Type:   Direct-Access                  ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: IBM      Model: ULT3580-TD4      Rev: 89B2
  Type:   Sequential-Access                ANSI SCSI revision: 03
Host: scsi1 Channel: 00 Id: 01 Lun: 00
  Vendor: IBM      Model: ULT3580-TD4      Rev: 89B2
  Type:   Sequential-Access                ANSI SCSI revision: 03
Host: scsi1 Channel: 00 Id: 01 Lun: 01
  Vendor: IBM      Model: 3573-TL          Rev: 7.40
  Type:   Medium Changer             ANSI SCSI revision: 05

其中的scsi,Channel,id号也可以对应设备的信息。其中的能看到Medium Changer是指的机械手。

使用sg_map能看到sg和scsi设备的关系,只要是系统本身安装了sg的模块就可以使用这个命令
查看磁带机的设备需要加st的参数。
但是用户的显示的信息如下:
# sg_map -st
device /dev/st0 failed on scsi ioctl(idlun), skip: Inappropriate ioctl for device
/dev/sg0
/dev/sg1
/dev/sg2
/dev/sg3
没有找到st的对应关系,是因为ioctl(idlun)没有办法读取,所以不能看出。
如果想了解详情请man一下sg_map。
 

你可能感兴趣的:(职场,存储,休闲,st,磁带库)