Автозагрузчик, смена картриджей

133 views
Skip to first unread message

metallic

unread,
Mar 29, 2010, 3:27:02 AM3/29/10
to ru-bacula
Имеется сервер бекапов на FreeBSD 8.0 и Bacula 5.0.0
На сервере установлен стример HP StorageWorks 1/8 G2 Tape Autoloader с
приводом LTO3, подключенный к серверу через SCSI.
На него и бекапятся клиенты. В нем один привод и 8 слотов для
картриджей (автозагрузчик). Вот конфиг stogare daemon:

Autochanger {
Name = Autoloader
Device = Autoloader-drive0
Changer Command = "/usr/local/share/bacula/mtx-changer %c %o %S %a
%d"
Changer Device = /dev/pass1
}

Device {
Name = Autoloader-drive0
Media Type = LTO3
Archive Device = /dev/nsa0.0
Autochanger = yes
Autoselect = yes
Random Access = no;
AutomaticMount = yes;
RemovableMedia = yes;
AlwaysOpen = yes;
}

У меня для большого бекапа используется порядка 24 картриджей (все
добавлены в пул и размечены(label)). В документации по бакуле
написано, что менять картриджи надо следующим образом:

unmount
(remove magazine)
(insert new magazine)
update slots
mount


Суть проблемы:
Загружаю первые 8 картриджей, запускаю бекап, самый первый картридж
приходится монтировать вручную (это нормально?), т.к. бакула ждет,
пока ей его примонтируют. После этого начинается запись и далее все
идет отлично, последующие картриджи бакула меняет сама. Собственно
проблема в том, что когда заканчивается последний 8-ой картридж,
бакула его выгружает и пытается монтировать следующий, 9-ый картридж
из пула(его имя SJ8599L3), но он-то еще не вставлен в автозагрузчик,
отсюда проблема:

*status sd
The defined Storage resources are:
1: baculasrv-Autoloader
2: baculasrv-filedevice1
Select Storage resource (1-2): 1
Connecting to Storage daemon baculasrv-Autoloader at bacula.domain.net:
9103

baculasrv-sd Version: 5.0.0 (26 January 2010) amd64-portbld-freebsd8.0
freebsd 8.0-RELEASE-p2
Daemon started 19-Mar-10 06:54, 34 Jobs run since started.
Heap: heap=0 smbytes=357,741 max_bytes=460,456 bufs=120 max_bufs=151
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8

Running Jobs:
Writing: Full Backup job SeadevilAllBJob JobId=21 Volume="SJ8599L3"
pool="AllBackupPool2" device="Autoloader-drive0" (/dev/nsa0.0)
spooling=0 despooling=0 despool_wait=0
Files=1,616,722 Bytes=12,729,514,744,699 Bytes/sec=26,237,441
FDReadSeqNo=202,909,398 in_msg=199713337 out_msg=5 fd=6
====

Jobs waiting to reserve a drive:
====

Terminated Jobs:
JobId Level Files Bytes Status Finished Name
===================================================================
...
====

Device status:
Autochanger "Autoloader" with devices:
"Autoloader-drive0" (/dev/nsa0.0)
Device "Autoloader-drive0" (/dev/nsa0.0) open but no Bacula volume is
currently mounted.
Device is being initialized.
Drive 0 status unknown.
Total Bytes Read=0 Blocks Read=0 Bytes/block=0
Positioned at File=0 Block=0
Device "FileDevice1" (/data/backups) is not open.
====

Used Volume status:

SJ8599L3 on device "Autoloader-drive0" (/dev/nsa0.0)
Reader=0 writers=1 devres=0 volinuse=1
====

====

*
*unmount
The defined Storage resources are:
1: baculasrv-Autoloader
2: baculasrv-filedevice1
Select Storage resource (1-2): 1
3901 Device "Autoloader-drive0" (/dev/nsa0.0) is already unmounted.
*

Т.е. даже размонтировать не могу, т.к. привод у стримера находится в
состоянии:
Drive Status Loading
(это видно через веб-панель управления стримером, она встроена в сам
стример)

При том, что у него статус Loading, в самом приводе картриджа нет, все
картриджи выгружены в карзины и ничего с ними не происходит. Из-за
этого смена картриджей превращается в пляски с бубном. После замены
левой корзины(магазина), стример некоторое время (пару минут) не
отдает правую корзину, потом отдает, после замены карзин, бакула,
похоже, понимает, что появились новые картриджи и пытается что-то
делать, о чем есть сообщения:

29-Mar 08:09 baculasrv-sd JobId 21: Invalid slot=0 defined in catalog
for Volume "SJ8599L3" on "Autoloader-drive0" (/dev/nsa0.0). Manual
load may be required.
29-Mar 08:09 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:09 baculasrv-sd JobId 21: 3991 Bad autochanger "loaded?
drive 0" command: ERR=Child exited with code 1.
Results=mtx: Request Sense: Long Report=yes
mtx: Request Sense: Valid Residual=no
mtx: Request Sense: Error Code=70 (Current)
mtx: Request Sense: Sense Key=Unit Attention
mtx: Request Sense: FileMark=no
mtx: Request Sense: EOM=no
mtx: Request Sense: ILI=no
mtx: Request Sense: Additional Sense Code = 28
mtx: Request Sense: Additional Sense Qualifier = 00
mtx: Request Sense: BPV=no
mtx: Request Sense: Error in CDB=no
mtx: Request Sense: SKSV=no
Mode sense (0x1A) for Page 0x1D failed
mtx: Request Sense: Long Report=yes
mtx: Request Sense: Valid Residual=no
mtx: Request Sense: Error Code=70 (Current)
mtx: Request Sense: Sense Key=Not Ready
mtx: Request Sense: FileMark=no
mtx: Request Sense: EOM=no
mtx: Request Sense: ILI=no
mtx: Request Sense: Additional Sense Code = 04
mtx: Request Sense: Additional Sense Qualifier = 01
mtx: Request Sense: BPV=no
mtx: Request Sense: Error in CDB=no
mtx: Request Sense: SKSV=no
READ ELEMENT STATUS Command Failed

29-Mar 08:10 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:10 baculasrv-sd JobId 21: 3302 Autochanger "loaded? drive
0", result: nothing loaded.
29-Mar 08:11 baculasrv-sd JobId 21: Warning: mount.c:227 Open device
"Autoloader-drive0" (/dev/nsa0.0) Volume "SJ8599L3" failed: ERR=dev.c:
491 Unable to open device "Autoloader-drive0" (/dev/nsa0.0):
ERR=Device not configured

29-Mar 08:11 baculasrv-sd JobId 21: Invalid slot=0 defined in catalog
for Volume "SJ8599L3" on "Autoloader-drive0" (/dev/nsa0.0). Manual
load may be required.
29-Mar 08:11 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:11 baculasrv-sd JobId 21: 3302 Autochanger "loaded? drive
0", result: nothing loaded.

Также замечено, что сразу после смены картриджей, если сделать slots
update, то получаем информацию, что у стримера 0 слотов:

*update slots
The defined Storage resources are:
1: baculasrv-Autoloader
2: baculasrv-filedevice1
Select Storage resource (1-2): 1
Connecting to Storage daemon baculasrv-Autoloader at bacula.domain.net:
9103 ...
3306 Issuing autochanger "slots" command.
Device "Autoloader" has 0 slots.
No slots in changer to scan.

Еще спустя какое-то вреся (до 5 минут), снова появляются собообщения:

29-Mar 08:12 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:12 baculasrv-sd JobId 21: 3302 Autochanger "loaded? drive
0", result: nothing loaded.
29-Mar 08:14 baculasrv-sd JobId 21: Warning: mount.c:227 Open device
"Autoloader-drive0" (/dev/nsa0.0) Volume "SJ8599L3" failed: ERR=dev.c:
491 Unable to open device "Autoloader-drive0" (/dev/nsa0.0):
ERR=Device not configured

29-Mar 08:14 baculasrv-sd JobId 21: Invalid slot=0 defined in catalog
for Volume "SJ8599L3" on "Autoloader-drive0" (/dev/nsa0.0). Manual
load may be required.
29-Mar 08:14 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:14 baculasrv-sd JobId 21: 3302 Autochanger "loaded? drive
0", result: nothing loaded.
29-Mar 08:15 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:15 baculasrv-sd JobId 21: 3302 Autochanger "loaded? drive
0", result: nothing loaded.

интересно... бакула опять говорит, первый картридж сам замонтируй
(Manual load may be required)

Пробуем опять update slots

*update slots
The defined Storage resources are:
1: baculasrv-Autoloader
2: baculasrv-filedevice1
Select Storage resource (1-2): 1
Connecting to Storage daemon baculasrv-Autoloader at bacula.domain.net:
9103 ...
3306 Issuing autochanger "slots" command.
Device "Autoloader" has 8 slots.
Connecting to Storage daemon baculasrv-Autoloader at bacula.domain.net:
9103 ...
3306 Issuing autochanger "list" command.
Catalog record for Volume "SJ8588L3" updated to reference slot 1.
Catalog record for Volume "CLN005L1" updated to reference slot 2.
Catalog record for Volume "SJ8602L3" updated to reference slot 3.
Catalog record for Volume "CLN002L1" updated to reference slot 4.
Catalog record for Volume "SJ8599L3" updated to reference slot 5.
Catalog record for Volume "SJ8607L3" updated to reference slot 6.
Catalog record for Volume "SJ8603L3" updated to reference slot 7.
Catalog record for Volume "CLN003L1" updated to reference slot 8.
*

Ага, на этот раз увидел картриджи, но сам ничего не замонтировал, как
я уже говорил. Нужный нам картридж находится в слоте 5, двигаю его сам
в автозагрузчик:
# mtx -f /dev/pass1 load 5
Drive 0 Full (Storage Element 0 loaded)

интересно, лезу смотреть в веб-интерфейс управления стримером, там не
смотря на то, что в приводе картрижа нет, написано, что привод full,
чудеса
Element Status Information
Drive (1) Full
Slot 1 (1) Full, Gen. 3 SJ8588L3
Slot 2 (1) Full, Gen. 1 CLN005L1
Slot 3 (1) Full, Gen. 3 SJ8602L3
Slot 4 (1) Full, Gen. 1 CLN002L1
Slot 5 (1) Full, Gen. 3 SJ8599L3
Slot 6 (1) Full, Gen. 3 SJ8607L3
Slot 7 (1) Full, Gen. 3 SJ8603L3
Slot 8 (1) Full, Gen. 1 CLN003L1

Что ж, придется перезагрузить стример. Полез перезагружать, опаньки,
статус привода сменился на idle, как будто в нем есть картридж,
запустил перезагрузку стримера и полез поглядеть, что там у нас с
бакула-директором. А бакула-директор тем временем прибил бекап,
сказал, что проблемы какие-то, смотрим сообщения:

*messages
29-Mar 08:16 baculasrv-sd JobId 21: Warning: mount.c:227 Open device
"Autoloader-drive0" (/dev/nsa0.0) Volume "SJ8599L3" failed: ERR=dev.c:
491 Unable to open device "Autoloader-drive0" (/dev/nsa0.0):
ERR=Device not configured

29-Mar 08:16 baculasrv-sd JobId 21: 3301 Issuing autochanger "loaded?
drive 0" command.
29-Mar 08:16 baculasrv-sd JobId 21: 3302 Autochanger "loaded? drive
0", result: nothing loaded.
29-Mar 08:16 baculasrv-sd JobId 21: 3304 Issuing autochanger "load
slot 5, drive 0" command.
29-Mar 08:21 baculasrv-sd JobId 21: Fatal error: 3992 Bad autochanger
"load slot 5, drive 0": ERR=Child died from signal 15: Termination.
Results=Program killed by Bacula (timeout)

29-Mar 08:21 baculasrv-sd JobId 21: Job write elapsed time =
135:36:44, Transfer rate = 26.07 M Bytes/second
29-Mar 11:17 seadevil-fd JobId 21: Fatal error: backup.c:1019 Network
send error to SD. ERR=Broken pipe
29-Mar 08:21 baculasrv-dir JobId 21: Error: Bacula baculasrv-dir 5.0.0
(26Jan10): 29-Mar-2010 08:21:32
Build OS: amd64-portbld-freebsd8.0 freebsd 8.0-RELEASE-
p2
JobId: 21
Job: SeadevilAllBJob.2010-03-23_15.29.37_55
Backup Level: Full
Client: "seadevil-fd" 5.0.0 (26Jan10) x86_64-unknown-
linux-gnu,ubuntu,8.04
FileSet: "SeadevilAll-FS" 2010-03-23 15:21:43
Pool: "AllBackupPool2" (From User input)
Catalog: "BaculaCatalog" (From Client resource)
Storage: "baculasrv-Autoloader" (From Job resource)
Scheduled time: 23-Mar-2010 15:29:20
Start time: 23-Mar-2010 15:29:39
End time: 29-Mar-2010 08:21:32
Elapsed time: 5 days 15 hours 51 mins 53 secs
Priority: 10
FD Files Written: 1,616,722
SD Files Written: 1,616,722
FD Bytes Written: 12,729,193,116,214 (12.72 TB)
SD Bytes Written: 12,729,514,744,699 (12.72 TB)
Rate: 26025.1 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s): SJ8604L3|SJ8587L3|SJ8584L3|CLN008L1|SJ8583L3|
SJ8585L3|SJ8606L3|CLN007L1
Volume Session Id: 20
Volume Session Time: 1268970843
Last Volume Bytes: 64,512 (64.51 KB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: Error
SD termination status: Error
Termination: *** Backup Error ***

Т.е. бакула увидела, что нужный картридж появился в слоте 5 и
попыталсь его замонтировать, но стрим счиал, что у него есть какой-то
картридж в приводе и операция не удалась, в итоге бакула прибила
бекап. Вот таким образом, если мне повезет, я успеваю заменить
картриджи и замонтировать, если нет - бекап останавливается.

Вобщем как сделать так, чтобы бакула после заполнения 8-ми картриджей
(или того кол-ва, которое в данный момент в стримере загружено),
терпеливо ждала пока загрузят следующие картриджи, а не терзала
стример?

П.С. если кто-то использует автозагрузчики, расскажите как это
происходит у вас (смена картриджей).

Reply all
Reply to author
Forward
0 new messages