当我尝试使用 从磁带读取 tar 时tar tvbf 2048 /dev/nst0
,它返回:
tar: /dev/nst0: Cannot read: Device or resource busy
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
并且lsof | grep st0
什么也不返回。
所有命令都可以与 mt 一起使用。如果我尝试使用 strace:
...
open("/dev/nst0", O_RDONLY) = 3
read(3, 0x7ff16eb8f000, 1048576) = -1 EBUSY (Device or resource busy)
...
磁带驱动器具有最新的固件。磁带驱动器是 IBM ULTRIUM-HH6,固件是 F9A1。
答案1
- 您是否也使用相同的块大小进行书写?
- 阅读之前你倒回去了吗?
- 有
mt -f /dev/nst0 status
工作嗎? - 您是
dd
使用tar 进行链接tar
还是仅使用 tar?使用 tar 管道和 $TAPE 环境变量时会出现一个怪癖。见下文。
有时您发出命令,它会失败,驱动器没有发出任何噪音,但磁带不再处于“倒带”状态。尝试在每个命令之前进行隐式倒带。
用另一盘磁带进行测试(立即运行以下命令:cd /path/to files mt -f /dev/nst0 rewind; tar -b 2048 -c -f /dev/nst0 * mt -f /dev/nst0 rewind; tar -b 2048 -t -f /dev/nst0
顺便说一句,如果您不想一直传递 -f /dev/nst0,请export TAPE=/dev/nst0
在您的 .bashrc 中添加。请记住,如果您有此变量,tar 将优先使用磁带驱动器而不是 stdin/stdout。因此这将返回“设备或资源繁忙”
export TAPE=/dev/nst0
mt rewind ; tar -b 128 -c *|dd of=$TAPE bs=64K
...因为 dd 和 tar 都试图打开磁带驱动器。管道 tar 的正确方法是传递-f -
:
mt rewind ; tar -b 128 -c -f - *|dd of=$TAPE bs=64K
另外我不确定这个块大小是否能正常工作。本文档内容你可以阅读:
块大小没有更大使用 HP-UX 和磁带或 VTL 设备时,强烈建议大于 256 KB(262144 字节)。
因此尝试将块大小降低到 256KiB 甚至 128KiB(分别是 tar -b 512 或 -b 256)。