免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2857 | 回复: 0
打印 上一主题 下一主题

[VTL与磁带系统] 磁带机的简单使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-07 12:46 |只看该作者 |倒序浏览
基本概念
  • 磁带是线性存储设备,没有什么分区表的概念,磁头在哪里,就从哪里开始读。
  • 磁带机好像只能用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)。

由于磁带机本身具有压缩功能,所以添加文件的时候不建议指定zip或者bz2压缩,因为如果一点点压缩后的数据损坏,会导致全部内容不可识别;如果的确需要压缩的话,可以压缩成本地文件再存储到磁带上,减少对其他文件的影响。
自动回卷的使用方式
这种方式比较简单,用tar直接操作即可,基本上和tar操作本地文件相同。
往新磁带上存储文件,注意如果磁带上已有文件,会被覆盖掉:
[color="#ff6633"]tar cvf /dev/st0 file_to_store

向磁带上添加文件:
[color="#ff6633"]tar rvf /dev/st0 file_to_store

更新磁带上的同名文件:
[color="#ff6633"]tar uvf /dev/st0 file_to_store

列出磁带上的现有文件:
[color="#ff6633"]tar tvf /dev/st0

删除磁带上的文件:
[color="#ff6633"]tar vf /dev/st0 --delete file_to_delete

但我使用这个命令的时候总是提示错误,文件倒是删掉了,可查看的时候也总有错误信息,难道是无法删除,或者只能全部xvf出来再存到磁带上?不过我们也应当养成一个好的习惯,每次向磁带机存储文件的时候一定要在文件名中带上日期标记。
非自动回卷的使用方式
一般这样使用,都是用到多个存储空间file number的时候;如果还是一个存储段,只是手工移动文件指针就没有什么意义了。
在操作上,文件的存储方式和自动回卷是基本相同的,不同之处在于要注意磁头的位置,并且手工进行必要的位移,以一个新磁带的操作为例来说明(status我只截取有用的部分显示):
[color="#ff6633"]# mt -f /dev/nst0 status
file number = 0
block number = 0
General status bits on (41010000):
BOT ONLINE IM_REP_EN

存入一个新的文件A:
[color="#ff6633"]# 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

注意这时磁头已经移动到了第二段存储空间了,现在再存入一个新的文件B,当然B和A是不在一个存储空间中的:
[color="#ff6633"]# 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

磁头又移动到第三段存储空间了,如果要查看刚才存的第二段存储空间中的内容,需要先移动磁头:
[color="#ff6633"]# 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

由于有存储空间结束标记,所以这里采用退2进1的方式,详细的磁头移动方式可以看man mt。然后查看文件列表:
[color="#ff6633"]# 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

列出文件列表之后,磁头停在了文件结束的位置,但不是存储空间的结尾。现在移动磁头到本段存储空间的开始,并且添加文件C:
[color="#ff6633"]# 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的fsf和bsf的规律了,fsf是磁头向前移动,并且总是停留在block number =
0的位置,而bsf是磁头向后移动,总是停留在 block number =
-1的位置。添加完成文件之后,磁头又定位到了第三个存储空间(下一个)的开始。现在我们依然是移动磁头到第二段存储空间开始,并且用覆盖方式添加文件
D:
[color="#ff6633"]# 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

文件D是用覆盖方式添加的,所以刚才添加的文件B和C现在应该都消失了:
[color="#ff6633"]# 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

完成,回卷磁带,从开始一直tvf:
[color="#ff6633"]# 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

现在,能看懂这个了么?我用空行隔开的位置正好是block number为0的位置。还有一些其他的操作就比较简单了:
[color="#ff6633"]出带,将磁带卷至初始位置然后从磁带机内弹出
# mt –f /dev/nst0 offline
清除磁带中的所有内容,特慢,还伤带,轻易不要用
# mt –f /dev/nst0 erase

我的几个疑问
  • 如何删除file number?
  • 既然磁带是线性存储,如果向前面一个file number中添加中间,存储空间不够怎么办?
  • 如何查看磁带剩余空间?

小结
搞明白磁带机的存储方式和基本操作,用起来就简单了。个人感觉如果要存的文件数量不多,尤其是只需要存几个大文件的情况,直接用自动回卷方式,只使
用一个存储空间就可以了,这样操作比较简单。如果一定要用磁带存储复杂结构的数据,可以考虑手工在各个存储空间之间来回切换的方式,原理都是一样,只是更
高一点点的技巧和小心。
参考
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1604/showart_2047105.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP