Device busy when reading from tape drive with tar

Когда я пытаюсь прочитать 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
задан 1 April 2016 в 14:13
1 ответ
  • Вы также писали с тем же размером блока?
  • Перематывали ли вы перед чтением?
  • Работает ли mt -f /dev/nst0 status?
  • Вы связываете dd с tar или просто используя tar, как вы написали? При использовании tar piping и переменной окружения $TAPE есть причуда. увидеть ниже.

Иногда вы даете команду, она терпит неудачу, нет шума от дисковода, но лента больше не находится в состоянии «перемотан». Попробуйте неявную перемотку назад перед каждой командой.

Проведите тест с другой лентой (запустите команды сразу друг за другом: cd /путь/к файлам mt -f /dev/nst0 перемотать назад; tar -b 2048 -c -f /dev/nst0 * mt -f /dev/nst0 перемотать назад; 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 

Также я не уверен, что этот размер блока будет работать хорошо. В этом документе вы можете прочитать:

Размер блока не больше 256 КБ (262144 байт) строго рекомендуется при работе с HP-UX и ленточными или VTL-устройствами.

Поэтому попробуйте уменьшить размер блока до 256 КБ или даже 128 КБ (это tar -b 512 или -b 256 соответственно).

1
ответ дан 13 March 2021 в 18:33

Теги

Похожие вопросы