]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/en/problems/tapetesting.tex
Update label for directives to use Component:Resource:Directive format
[bacula/docs] / docs / manuals / en / problems / tapetesting.tex
1 \chapter{Testing Your Tape Drive With Bacula}
2 \label{TapeTestingChapter}
3 \index[general]{Testing Your Tape Drive With Bacula}
4
5 This chapter is concerned with testing and configuring your tape drive to make
6 sure that it will work properly with Bacula using the {\bf btape} program.
7 \label{summary}
8
9 \section{Get Your Tape Drive Working}
10
11 In general, you should follow the following steps to get your tape drive to
12 work with Bacula. Start with a tape mounted in your drive. If you have an
13 autochanger, load a tape into the drive. We use {\bf /dev/nst0} as the tape
14 drive name, you will need to adapt it according to your system.
15
16 Do not proceed to the next item until you have succeeded with the previous
17 one.
18
19 \begin{enumerate}
20 \item Make sure that Bacula (the Storage daemon) is not running
21   or that you have {\bf unmount}ed the drive you will use
22   for testing.
23
24 \item Use tar to write to, then read from your drive:
25
26    \footnotesize
27 \begin{lstlisting}
28    mt -f /dev/nst0 rewind
29    tar cvf /dev/nst0 .
30    mt -f /dev/nst0 rewind
31    tar tvf /dev/nst0
32
33 \end{lstlisting}
34 \normalsize
35
36 \item Make sure you have a valid and correct Device resource corresponding
37    to your drive.  For Linux users, generally, the default one works.  For
38    FreeBSD users, there are two possible Device configurations (see below).
39    For other drives and/or OSes, you will need to first ensure that your
40    system tape modes are properly setup (see below), then possibly modify
41    you Device resource depending on the output from the btape program (next
42    item). When doing this, you should consult the \bsysxrlink{Storage Daemon
43    Configuration}{StoredConfChapter}{main}{chapter} of the \mainman{}.
44
45 \item If you are using a Fibre Channel to connect your tape drive to
46    Bacula, please be sure to disable any caching in the NSR (network
47    storage router, which is a Fibre Channel to SCSI converter).
48
49 \item Run the btape {\bf test} command:
50
51    \footnotesize
52 \begin{lstlisting}
53    ./btape -c bacula-sd.conf /dev/nst0
54    test
55
56 \end{lstlisting}
57 \normalsize
58
59    It isn't necessary to run the autochanger part of the test at this time,
60    but do not go past this point until the basic test succeeds.  If you do
61    have an autochanger, please be sure to read the \bsysxrlink{Autochanger
62    chapter}{AutochangersChapter}{main}{chapter} of the \mainman{}.
63
64 \item Run the btape {\bf fill} command, preferably with two volumes.  This
65    can take a long time. If you have an autochanger and it  is configured, Bacula
66    will automatically use it. If you do  not have it configured, you can manually
67    issue the appropriate  {\bf mtx} command, or press the autochanger buttons to
68    change  the tape when requested to do so.
69
70 \item FreeBSD users, if you have a pre-5.0 system run the {\bf tapetest}
71    program, and make sure your system is patched if necessary. The tapetest
72    program can be found in the platform/freebsd directory. The instructions
73    for its use are at the top of the file.
74
75 \item Run Bacula, and backup a reasonably small directory, say 60
76    Megabytes.  Do three successive backups of this directory.
77
78 \item Stop Bacula, then restart it.  Do another full backup of the same
79    directory.  Then stop and restart Bacula.
80
81 \item Do a restore of the directory backed up, by entering the  following
82    restore command, being careful to restore it to  an alternate location:
83
84
85 \footnotesize
86 \begin{lstlisting}
87    restore select all done
88    yes
89
90 \end{lstlisting}
91 \normalsize
92
93    Do a {\bf diff} on the restored directory to ensure it is identical  to the
94    original directory. If you are going to backup multiple different systems
95    (Linux, Windows, Mac, Solaris, FreeBSD, ...), be sure you test the restore
96    on each system type.
97
98 \item If you have an autochanger, you should now go back to the  btape program
99    and run the autochanger test:
100
101 \footnotesize
102 \begin{lstlisting}
103      ./btape -c bacula-sd.conf /dev/nst0
104      auto
105
106 \end{lstlisting}
107 \normalsize
108
109    Adjust your autochanger as necessary to ensure that it works  correctly. See
110    the Autochanger chapter of this manual  for a complete discussion of testing
111    your autochanger.
112
113 \item We strongly recommend that you use a dedicated SCSI
114    controller for your tape drives. Scanners are known to induce
115    serious problems with the SCSI bus, causing it to reset. If the
116    SCSI bus is reset while Bacula has the tape drive open, it will
117    most likely be fatal to your tape since the drive will rewind.
118    These kinds of problems show up in the system log. For example,
119    the following was most likely caused by a scanner:
120
121 \footnotesize
122 \begin{lstlisting}
123 Feb 14 17:29:55 epohost kernel: (scsi0:A:2:0): No or incomplete CDB sent to device.
124 Feb 14 17:29:55 epohost kernel: scsi0: Issued Channel A Bus Reset. 1 SCBs aborted
125 \end{lstlisting}
126 \normalsize
127
128 \end{enumerate}
129
130 If you have reached this point, you stand a good chance of having everything
131 work. If you get into trouble at any point, {\bf carefully} read the
132 documentation given below. If you cannot get past some point, ask the {\bf
133 bacula-users} email list, but specify which of the steps you have successfully
134 completed. In particular, you may want to look at the
135 \ilink{Tips for Resolving Problems}{problems1} section below.
136
137
138 \label{NoTapeInDrive}
139 \subsection{Problems When no Tape in Drive}
140 \index[general]{Problems When no Tape in Drive}
141 When Bacula was first written the Linux 2.4 kernel permitted opening the
142 drive whether or not there was a tape in the drive. Thus the Bacula code is
143 based on the concept that if the drive cannot be opened, there is a serious
144 problem, and the job is failed.
145
146 With version 2.6 of the Linux kernel, if there is no tape in the drive, the
147 OS will wait two minutes (default) and then return a failure, and consequently,
148 Bacula version 1.36 and below will fail the job.  This is important to keep
149 in mind, because if you use an option such as {\bf Offline on Unmount =
150 yes}, there will be a point when there is no tape in the drive, and if
151 another job starts or if Bacula asks the operator to mount a tape, when
152 Bacula attempts to open the drive (about a 20 minute delay), it will fail
153 and Bacula will fail the job.
154
155 In version 1.38.x, the Bacula code partially gets around this problem -- at
156 least in the initial open of the drive.  However, functions like Polling
157 the drive do not work correctly if there is no tape in the drive.
158 Providing you do not use {\bf Offline on Unmount = yes}, you should not
159 experience job failures as mentioned above.  If you do experience such
160 failures, you can also increase the {\bf Maximum Open Wait} time interval,
161 which will give you more time to mount the next tape before the job is
162 failed.
163
164 \subsection{Specifying the Configuration File}
165 \index[general]{File!Specifying the Configuration}
166 \index[general]{Specifying the Configuration File}
167
168 Starting with version 1.27, each of the tape utility programs including the
169 {\bf btape} program requires a valid Storage daemon configuration file
170 (actually, the only part of the configuration file that {\bf btape} needs is
171 the {\bf Device} resource definitions). This permits {\bf btape} to find the
172 configuration parameters for your archive device (generally a tape drive).
173 Without those parameters, the testing and utility programs do not know how to
174 properly read and write your drive. By default, they use {\bf bacula-sd.conf}
175 in the current directory, but you may specify a different configuration file
176 using the {\bf -c} option.
177
178 \subsection{Specifying a Device Name For a Tape}
179 \index[general]{Tape!Specifying a Device Name For a}
180 \index[general]{Specifying a Device Name For a Tape}
181
182 {\bf btape} {\bf device-name} where the Volume can be found. In the case of a
183 tape, this is the physical device name such as {\bf /dev/nst0} or {\bf
184 /dev/rmt/0ubn} depending on your system that you specify on the Archive Device
185 directive. For the program to work, it must find the identical name in the
186 Device resource of the configuration file. If the name is not found in the
187 list of physical names, the utility program will compare the name you entered
188 to the Device names (rather than the Archive device names).
189
190 When specifying a tape device, it is preferable that the "non-rewind"
191 variant of the device file name be given.  In addition, on systems such as
192 Sun, which have multiple tape access methods, you must be sure to specify
193 to use Berkeley I/O conventions with the device.  The
194 {\bf b} in the Solaris (Sun) archive specification {\bf /dev/rmt/0mbn} is
195 what is needed in this case.  Bacula does not support SysV tape drive
196 behavior.
197
198 See below for specifying Volume names.
199
200 \subsection{Specifying a Device Name For a File}
201 \index[general]{File!Specifying a Device Name For a}
202 \index[general]{Specifying a Device Name For a File}
203
204 If you are attempting to read or write an archive file rather than a tape, the
205 {\bf device-name} should be the full path to the archive location including
206 the filename. The filename (last part of the specification) will be stripped
207 and used as the Volume name, and the path (first part before the filename)
208 must have the same entry in the configuration file. So, the path is equivalent
209 to the archive device name, and the filename is equivalent to the volume name.
210
211
212 \section{btape}
213 \label{btape1}
214 \index[general]{Btape}
215
216 This program permits a number of elementary tape operations via a tty command
217 interface. The {\bf test} command, described below, can be very useful for
218 testing tape drive compatibility problems. Aside from initial testing of tape
219 drive compatibility with {\bf Bacula}, {\bf btape} will be mostly used by
220 developers writing new tape drivers.
221
222 {\bf btape} can be dangerous to use with existing {\bf Bacula} tapes because
223 it will relabel a tape or write on the tape if so requested regardless of
224 whether or not the tape contains valuable data, so please be careful and use
225 it only on blank tapes.
226
227 To work properly, {\bf btape} needs to read the Storage daemon's configuration
228 file. As a default, it will look for {\bf bacula-sd.conf} in the current
229 directory. If your configuration file is elsewhere, please use the {\bf -c}
230 option to specify where.
231
232 The physical device name or the Device resource name must be specified on the
233 command line, and this same device name must be present in the Storage
234 daemon's configuration file read by {\bf btape}
235
236 \footnotesize
237 \begin{lstlisting}
238 Usage: btape [options] device_name
239        -b <file>   specify bootstrap file
240        -c <file>   set configuration file to file
241        -d <nn>     set debug level to nn
242        -p          proceed inspite of I/O errors
243        -s          turn off signals
244        -v          be verbose
245        -?          print this message.
246 \end{lstlisting}
247 \normalsize
248
249 \subsection{Using btape to Verify your Tape Drive}
250 \index[general]{Using btape to Verify your Tape Drive}
251 \index[general]{Drive!Using btape to Verify your Tape}
252
253 An important reason for this program is to ensure that a Storage daemon
254 configuration file is defined so that Bacula will correctly read and write
255 tapes.
256
257 It is highly recommended that you run the {\bf test} command before running
258 your first Bacula job to ensure that the parameters you have defined for your
259 storage device (tape drive) will permit {\bf Bacula} to function properly. You
260 only need to mount a blank tape, enter the command, and the output should be
261 reasonably self explanatory. For example:
262
263 \footnotesize
264 \begin{lstlisting}
265 (ensure that Bacula is not running)
266 ./btape -c /usr/bin/bacula/bacula-sd.conf /dev/nst0
267 \end{lstlisting}
268 \normalsize
269
270 The output will be:
271
272 \footnotesize
273 \begin{lstlisting}
274 Tape block granularity is 1024 bytes.
275 btape: btape.c:376 Using device: /dev/nst0
276 *
277 \end{lstlisting}
278 \normalsize
279
280 Enter the test command:
281
282 \footnotesize
283 \begin{lstlisting}
284 test
285 \end{lstlisting}
286 \normalsize
287
288 The output produced should be something similar to the following: I've cut the
289 listing short because it is frequently updated to have new tests.
290
291 \footnotesize
292 \begin{lstlisting}
293 === Append files test ===
294 This test is essential to Bacula.
295 I'm going to write one record  in file 0,
296                    two records in file 1,
297              and three records in file 2
298 btape: btape.c:387 Rewound /dev/nst0
299 btape: btape.c:855 Wrote one record of 64412 bytes.
300 btape: btape.c:857 Wrote block to device.
301 btape: btape.c:410 Wrote EOF to /dev/nst0
302 btape: btape.c:855 Wrote one record of 64412 bytes.
303 btape: btape.c:857 Wrote block to device.
304 btape: btape.c:855 Wrote one record of 64412 bytes.
305 btape: btape.c:857 Wrote block to device.
306 btape: btape.c:410 Wrote EOF to /dev/nst0
307 btape: btape.c:855 Wrote one record of 64412 bytes.
308 btape: btape.c:857 Wrote block to device.
309 btape: btape.c:855 Wrote one record of 64412 bytes.
310 btape: btape.c:857 Wrote block to device.
311 btape: btape.c:855 Wrote one record of 64412 bytes.
312 btape: btape.c:857 Wrote block to device.
313 btape: btape.c:410 Wrote EOF to /dev/nst0
314 btape: btape.c:387 Rewound /dev/nst0
315 btape: btape.c:693 Now moving to end of media.
316 btape: btape.c:427 Moved to end of media
317 We should be in file 3. I am at file 3. This is correct!
318 Now the important part, I am going to attempt to append to the tape.
319 ...
320 === End Append files test ===
321 \end{lstlisting}
322 \normalsize
323
324 If you do not successfully complete the above test, please resolve the
325 problem(s) before attempting to use {\bf Bacula}. Depending on your tape
326 drive, the test may recommend that you add certain records to your
327 configuration. We strongly recommend that you do so and then re-run the above
328 test to insure it works the first time.
329
330 Some of the suggestions it provides for resolving the problems may or may not
331 be useful. If at all possible avoid using fixed blocking. If the test suddenly
332 starts to print a long series of:
333
334 \footnotesize
335 \begin{lstlisting}
336 Got EOF on tape.
337 Got EOF on tape.
338 ...
339 \end{lstlisting}
340 \normalsize
341
342 then almost certainly, you are running your drive in fixed block mode rather
343 than variable block mode. See below for more help of resolving fix
344 versus variable block problems.
345
346 It is also possible that you have your drive
347 set in SysV tape drive mode. The drive must use BSD tape conventions.
348 See the section above on setting your {\bf Archive device} correctly.
349
350 For FreeBSD users, please see the notes below for doing further testing of
351 your tape drive.
352
353 \subsection{Testing tape drive speed}
354 \label{sec:btapespeed}
355
356 To determine the best configuration of your tape drive, you can run the
357 \texttt{speed} command available in the \texttt{btape} program.
358
359 This command can have the following arguments:
360 \begin{itemize}
361 \item[\texttt{file\_size=n}] Specify the Maximum File Size for this test
362   (between 1 and 5GB). This counter is in GB.
363 \item[\texttt{nb\_file=n}] Specify the number of file to be written. The amount
364   of data should be greater than your memory ($file\_size*nb\_file$).
365 \item[\texttt{skip\_zero}] This flag permits to skip tests with constant
366   data.
367 \item[\texttt{skip\_random}] This flag permits to skip tests with random
368   data.
369 \item[\texttt{skip\_raw}] This flag permits to skip tests with raw access.
370 \item[\texttt{skip\_block}] This flag permits to skip tests with Bacula block
371   access.
372 \end{itemize}
373
374 \begin{lstlisting}
375 *speed file_size=3 skip_raw
376 btape.c:1078 Test with zero data and bacula block structure.
377 btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes.
378 ++++++++++++++++++++++++++++++++++++++++++
379 btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0)
380 btape.c:406 Volume bytes=3.221 GB. Write rate = 44.128 MB/s
381 ...
382 btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 43.531 MB/s
383
384 btape.c:1090 Test with random data, should give the minimum throughput.
385 btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes.
386 +++++++++++++++++++++++++++++++++++++++++++
387 btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0)
388 btape.c:406 Volume bytes=3.221 GB. Write rate = 7.271 MB/s
389 +++++++++++++++++++++++++++++++++++++++++++
390 ...
391 btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 7.365 MB/s
392
393 \end{lstlisting}
394
395 When using compression, the random test will give your the minimum throughput
396 of your drive . The test using constant string will give you the maximum speed
397 of your hardware chain. (cpu, memory, scsi card, cable, drive, tape).
398
399 You can change the block size in the Storage Daemon configuration file.
400
401 \label{SCSITricks}
402 \subsection{Linux SCSI Tricks}
403 \index[general]{Tricks!Linux SCSI}
404 \index[general]{Linux SCSI Tricks}
405
406 You can find out what SCSI devices you have by doing:
407
408 \footnotesize
409 \begin{lstlisting}
410 lsscsi
411 \end{lstlisting}
412 \normalsize
413
414 Typical output is:
415
416 \footnotesize
417 \begin{lstlisting}
418 [0:0:0:0]    disk    ATA      ST3160812AS      3.AD  /dev/sda
419 [2:0:4:0]    tape    HP       Ultrium 2-SCSI   F6CH  /dev/st0
420 [2:0:5:0]    tape    HP       Ultrium 2-SCSI   F6CH  /dev/st1
421 [2:0:6:0]    mediumx OVERLAND LXB              0107  -
422 [2:0:9:0]    tape    HP       Ultrium 1-SCSI   E50H  /dev/st2
423 [2:0:10:0]   mediumx OVERLAND LXB              0107  -
424 \end{lstlisting}
425 \normalsize
426
427 There are two drives in one autochanger: /dev/st0 and /dev/st1
428 and a third tape drive at /dev/st2.  For using them with Bacula, one
429 would normally reference them as /dev/nst0 ... /dev/nst2.  Not also,
430 there are two different autochangers identified as "mediumx OVERLAND LXB".
431 They can be addressed via their /dev/sgN designation, which can be
432 obtained by counting from the beginning as 0 to each changer.  In the
433 above case, the two changers are located on /dev/sg3 and /dev/sg5. The one
434 at /dev/sg3, controls drives /dev/nst0 and /dev/nst1; and the one at
435 /dev/sg5 controles drive /dev/nst2.
436
437 If you do not have the {\bf lsscsi}  command, you can obtain the same
438 information as follows:
439
440 \footnotesize
441 \begin{lstlisting}
442 cat /proc/scsi/scsi
443 \end{lstlisting}
444 \normalsize
445
446 For the above example with the three drives and two autochangers,
447 I get:
448
449 \footnotesize
450 \begin{lstlisting}
451 Attached devices:
452 Host: scsi0 Channel: 00 Id: 00 Lun: 00
453   Vendor: ATA      Model: ST3160812AS      Rev: 3.AD
454   Type:   Direct-Access                    ANSI SCSI revision: 05
455 Host: scsi2 Channel: 00 Id: 04 Lun: 00
456   Vendor: HP       Model: Ultrium 2-SCSI   Rev: F6CH
457   Type:   Sequential-Access                ANSI SCSI revision: 03
458 Host: scsi2 Channel: 00 Id: 05 Lun: 00
459   Vendor: HP       Model: Ultrium 2-SCSI   Rev: F6CH
460   Type:   Sequential-Access                ANSI SCSI revision: 03
461 Host: scsi2 Channel: 00 Id: 06 Lun: 00
462   Vendor: OVERLAND Model: LXB              Rev: 0107
463   Type:   Medium Changer                   ANSI SCSI revision: 02
464 Host: scsi2 Channel: 00 Id: 09 Lun: 00
465   Vendor: HP       Model: Ultrium 1-SCSI   Rev: E50H
466   Type:   Sequential-Access                ANSI SCSI revision: 03
467 Host: scsi2 Channel: 00 Id: 10 Lun: 00
468   Vendor: OVERLAND Model: LXB              Rev: 0107
469   Type:   Medium Changer                   ANSI SCSI revision: 02
470 \end{lstlisting}
471 \normalsize
472
473
474 As an additional example, I get the following (on a different machine from the
475 above example):
476
477 \footnotesize
478 \begin{lstlisting}
479 Attached devices:
480 Host: scsi2 Channel: 00 Id: 01 Lun: 00
481   Vendor: HP       Model: C5713A           Rev: H107
482   Type:   Sequential-Access                ANSI SCSI revision: 02
483 Host: scsi2 Channel: 00 Id: 04 Lun: 00
484   Vendor: SONY     Model: SDT-10000        Rev: 0110
485   Type:   Sequential-Access                ANSI SCSI revision: 02
486 \end{lstlisting}
487 \normalsize
488
489 The above represents first an autochanger and second a simple
490 tape drive. The HP changer (the first entry) uses the same SCSI channel
491 for data and for control, so in Bacula, you would use:
492 \footnotesize
493 \begin{lstlisting}
494 Archive Device = /dev/nst0
495 Changer Device = /dev/sg0
496 \end{lstlisting}
497 \normalsize
498
499 If you want to remove the SDT-10000 device, you can do so as root with:
500
501 \footnotesize
502 \begin{lstlisting}
503 echo "scsi remove-single-device 2 0 4 0">/proc/scsi/scsi
504 \end{lstlisting}
505 \normalsize
506
507 and you can put add it back with:
508
509 \footnotesize
510 \begin{lstlisting}
511 echo "scsi add-single-device 2 0 4 0">/proc/scsi/scsi
512 \end{lstlisting}
513 \normalsize
514
515 where the 2 0 4 0 are the Host, Channel, Id, and Lun as seen on the output
516 from {\bf cat /proc/scsi/scsi}. Note, the Channel must be specified as
517 numeric.
518
519 Below is a slightly more complicated output, which is a single autochanger
520 with two drives, and which operates the changer on a different channel
521 from from the drives:
522
523 \footnotesize
524 \begin{lstlisting}
525 Attached devices:
526 Host: scsi0 Channel: 00 Id: 00 Lun: 00
527   Vendor: ATA      Model: WDC WD1600JD-75H Rev: 08.0
528   Type:   Direct-Access                    ANSI SCSI revision: 05
529 Host: scsi2 Channel: 00 Id: 04 Lun: 00
530   Vendor: HP       Model: Ultrium 2-SCSI   Rev: F6CH
531   Type:   Sequential-Access                ANSI SCSI revision: 03
532 Host: scsi2 Channel: 00 Id: 05 Lun: 00
533   Vendor: HP       Model: Ultrium 2-SCSI   Rev: F6CH
534   Type:   Sequential-Access                ANSI SCSI revision: 03
535 Host: scsi2 Channel: 00 Id: 06 Lun: 00
536   Vendor: OVERLAND Model: LXB              Rev: 0106
537   Type:   Medium Changer                   ANSI SCSI revision: 02
538 \end{lstlisting}
539 \normalsize
540
541 The above tape drives are accessed on /dev/nst0 and /dev/nst1, while
542 the control channel for those two drives is /dev/sg3.
543
544
545
546 \label{problems1}
547 \section{Tips for Resolving Problems}
548 \index[general]{Problems!Tips for Resolving}
549 \index[general]{Tips for Resolving Problems}
550
551 \label{CannotRestore}
552 \subsection{Bacula Saves But Cannot Restore Files}
553 \index[general]{Files!Bacula Saves But Cannot Restore}
554 \index[general]{Bacula Saves But Cannot Restore Files}
555
556 If you are getting error messages such as:
557
558 \footnotesize
559 \begin{lstlisting}
560 Volume data error at 0:1! Wanted block-id: "BB02", got "". Buffer discarded
561 \end{lstlisting}
562 \normalsize
563
564 It is very likely that Bacula has tried to do block positioning and ended up
565 at an invalid block. This can happen if your tape drive is in fixed block mode
566 while Bacula's default is variable blocks. Note that in such cases, Bacula is
567 perfectly able to write to your Volumes (tapes), but cannot position to read
568 them.
569
570 There are two possible solutions.
571
572 \begin{enumerate}
573 \item The first and  best is to always ensure that your drive is in  variable
574    block mode. Note, it can switch back to  fixed block mode on a reboot or if
575    another program  uses the drive. So on such systems you  need to modify the
576    Bacula startup files  to explicitly set:
577
578 \footnotesize
579 \begin{lstlisting}
580 mt -f /dev/nst0 defblksize 0
581 \end{lstlisting}
582 \normalsize
583
584 or whatever is appropriate on your system. Note, if you are running a Linux
585 system, and the above command does not work, it is most likely because you
586 have not loaded the appropriate {\bf mt} package, which is often called
587 {\bf mt\_st}, but may differ according to your distribution.
588
589 \item The second possibility, especially, if Bacula wrote  while the drive was
590    in fixed block mode, is to turn  off block positioning in Bacula. This is done
591    by  adding:
592
593 \footnotesize
594 \begin{lstlisting}
595 Block Positioning = no
596 \end{lstlisting}
597 \normalsize
598
599 to the Device resource. This is not the recommended  procedure because it can
600 enormously slow down  recovery of files, but it may help where all else
601 fails. This directive is available in version 1.35.5  or later (and not yet
602 tested).
603 \end{enumerate}
604
605 If you are getting error messages such as:
606 \footnotesize
607 \begin{lstlisting}
608 Volume data error at 0:0!
609 Block checksum mismatch in block=0 len=32625 calc=345678 blk=123456
610 \end{lstlisting}
611 \normalsize
612
613 You are getting tape read errors, and this is most likely due to
614 one of the following things:
615 \begin{enumerate}
616 \item An old or bad tape.
617 \item A dirty drive that needs cleaning (particularly for DDS drives).
618 \item A loose SCSI cable.
619 \item Old firmware in your drive. Make sure you have the latest firmware
620       loaded.
621 \item Computer memory errors.
622 \item Over-clocking your CPU.
623 \item A bad SCSI card.
624 \end{enumerate}
625
626
627 \label{opendevice}
628 \subsection{Bacula Cannot Open the Device}
629 \index[general]{Device!Bacula Cannot Open the}
630 \index[general]{Bacula Cannot Open the Device}
631
632 If you get an error message such as:
633
634 \footnotesize
635 \begin{lstlisting}
636 dev open failed: dev.c:265 stored: unable to open
637 device /dev/nst0:> ERR=No such device or address
638 \end{lstlisting}
639 \normalsize
640
641 the first time you run a job, it is most likely due to the fact that you
642 specified the incorrect device name on your {\bf Archive Device}.
643
644 If Bacula works fine with your drive, then all off a sudden you get error
645 messages similar to the one shown above, it is quite possible that your driver
646 module is being removed because the kernel deems it idle. This is done via
647 {\bf crontab} with the use of {\bf rmmod -a}. To fix the problem, you can
648 remove this entry from {\bf crontab}, or you can manually {\bf modprob} your
649 driver module (or add it to the local startup script). Thanks to Alan Brown
650 for this tip.
651 \label{IncorrectFiles}
652
653 \subsection{Incorrect File Number}
654 \index[general]{Number!Incorrect File}
655 \index[general]{Incorrect File Number}
656
657 When Bacula moves to the end of the medium, it normally uses the {\bf
658 ioctl(MTEOM)} function. Then Bacula uses the {\bf ioctl(MTIOCGET)} function to
659 retrieve the current file position from the {\bf mt\_fileno} field. Some SCSI
660 tape drivers will use a fast means of seeking to the end of the medium and in
661 doing so, they will not know the current file position and hence return a {\bf
662 -1}. As a consequence, if you get {\bf "This is NOT correct!"} in the
663 positioning tests, this may be the cause. You must correct this condition in
664 order for Bacula to work.
665
666 There are two possible solutions to the above problem of incorrect file
667 number:
668
669 \begin{itemize}
670 \item Figure out how to configure your SCSI driver to  keep track of the file
671    position during the MTEOM  request. This is the preferred solution.
672 \item Modify the {\bf Device} resource of your {\bf bacula-sd.conf} file  to
673    include:
674
675 \footnotesize
676 \begin{lstlisting}
677 Hardware End of File = no
678 \end{lstlisting}
679 \normalsize
680
681 This will cause Bacula to use the MTFSF request to  seek to the end of the
682 medium, and Bacula will keep  track of the file number itself.
683 \end{itemize}
684
685 \label{IncorrectBlocks}
686 \subsection{Incorrect Number of Blocks or Positioning Errors}
687 \index[general]{Testing!Incorrect Number of Blocks or Positioning Errors}
688 \index[general]{Incorrect Number of Blocks or Positioning Errors}
689
690 {\bf Bacula's} preferred method of working with tape drives (sequential
691 devices) is to run in variable block mode, and this is what is set by default.
692 You should first ensure that your tape drive is set for variable block mode
693 (see below).
694
695 If your tape drive is in fixed block mode and you have told Bacula to use
696 different fixed block sizes or variable block sizes (default), you will get
697 errors when Bacula attempts to forward space to the correct block (the kernel
698 driver's idea of tape blocks will not correspond to Bacula's).
699
700 All modern tape drives support variable tape blocks, but some older drives (in
701 particular the QIC drives) as well as the ATAPI ide-scsi driver run only in
702 fixed block mode. The Travan tape drives also apparently must run in fixed
703 block mode (to be confirmed).
704
705 Even in variable block mode, with the exception of the first record on the
706 second or subsequent volume of a multi-volume backup, Bacula will write blocks
707 of a fixed size. However, in reading a tape, Bacula will assume that for each
708 read request, exactly one block from the tape will be transferred. This the
709 most common way that tape drives work and is well supported by {\bf Bacula}.
710
711 Drives that run in fixed block mode can cause serious problems for Bacula if
712 the drive's block size does not correspond exactly to {\bf Bacula's} block
713 size. In fixed block size mode, drivers may transmit a partial block or
714 multiple blocks for a single read request. From {\bf Bacula's} point of view,
715 this destroys the concept of tape blocks. It is much better to run in variable
716 block mode, and almost all modern drives (the OnStream is an exception) run in
717 variable block mode. In order for Bacula to run in fixed block mode, you must
718 include the following records in the Storage daemon's Device resource
719 definition:
720
721 \footnotesize
722 \begin{lstlisting}
723 Minimum Block Size = nnn
724 Maximum Block Size = nnn
725 \end{lstlisting}
726 \normalsize
727
728 where {\bf nnn} must be the same for both records and must be identical to the
729 driver's fixed block size.
730
731 We recommend that you avoid this configuration if at all possible by using
732 variable block sizes.
733
734 If you must run with fixed size blocks, make sure they are not 512 bytes. This
735 is too small and the overhead that Bacula has with each record will become
736 excessive. If at all possible set any fixed block size to something like
737 64,512 bytes or possibly 32,768 if 64,512 is too large for your drive. See
738 below for the details on checking and setting the default drive block size.
739
740 To recover files from tapes written in fixed block mode, see below.
741
742 \label{TapeModes}
743 \subsection{Ensuring that the Tape Modes Are Properly Set -- {\bf Linux
744 Only}}
745 \index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only}
746
747 If you have a modern SCSI tape drive and you are having problems with the {\bf
748 test} command as noted above, it may be that some program has set one or more
749 of your SCSI driver's options to non-default values. For example, if your
750 driver is set to work in SysV manner, Bacula will not work correctly because
751 it expects BSD behavior. To reset your tape drive to the default values, you
752 can try the following, but {\bf ONLY} if you have a SCSI tape drive on a {\bf
753 Linux} system:
754
755 \footnotesize
756 \begin{lstlisting}
757 become super user
758 mt -f /dev/nst0 rewind
759 mt -f /dev/nst0 stoptions buffer-writes async-writes read-ahead
760 \end{lstlisting}
761 \normalsize
762
763 The above commands will clear all options and then set those specified. None
764 of the specified options are required by Bacula, but a number of other options
765 such as SysV behavior must not be set. Bacula does not support SysV tape
766 behavior. On systems other than Linux, you will need to consult your {\bf mt}
767 man pages or documentation to figure out how to do the same thing. This should
768 not really be necessary though -- for example, on both Linux and Solaris
769 systems, the default tape driver options are compatible with Bacula.
770 On Solaris systems, you must take care to specify the correct device
771 name on the {\bf Archive device} directive. See above for more details.
772
773 You may also want to ensure that no prior program has set the default block
774 size, as happened to one user, by explicitly turning it off with:
775
776 \footnotesize
777 \begin{lstlisting}
778 mt -f /dev/nst0 defblksize 0
779 \end{lstlisting}
780 \normalsize
781
782 If you are running a Linux
783 system, and the above command does not work, it is most likely because you
784 have not loaded the appropriate {\bf mt} package, which is often called
785 {\bf mt\_st}, but may differ according to your distribution.
786
787 If you would like to know what options you have set before making any of the
788 changes noted above, you can now view them on Linux systems, thanks to a tip
789 provided by Willem Riede. Do the following:
790
791 \footnotesize
792 \begin{lstlisting}
793 become super user
794 mt -f /dev/nst0 stsetoptions 0
795 grep st0 /var/log/messages
796 \end{lstlisting}
797 \normalsize
798
799 and you will get output that looks something like the following:
800
801 \footnotesize
802 \begin{lstlisting}
803 kernel: st0: Mode 0 options: buffer writes: 1, async writes: 1, read ahead: 1
804 kernel: st0:    can bsr: 0, two FMs: 0, fast mteom: 0, auto lock: 0,
805 kernel: st0:    defs for wr: 0, no block limits: 0, partitions: 0, s2 log: 0
806 kernel: st0:    sysv: 0 nowait: 0
807 \end{lstlisting}
808 \normalsize
809
810 Note, I have chopped off the beginning of the line with the date and machine
811 name for presentation purposes.
812
813 Some people find that the above settings only last until the next reboot, so
814 please check this otherwise you may have unexpected problems.
815
816 Beginning with Bacula version 1.35.8, if Bacula detects that you are running
817 in variable block mode, it will attempt to set your drive appropriately. All
818 OSes permit setting variable block mode, but some OSes do not permit setting
819 the other modes that Bacula needs to function properly.
820
821 \label{compression}
822 \subsection{Tape Hardware Compression and Blocking Size}
823 \index[general]{Tape Hardware Compression and Blocking Size}
824 \index[general]{Size!Tape Hardware Compression and Blocking Size}
825
826 You should be able to verify the tape compression status with sysfs on Linux.
827 \begin{lstlisting}
828 cat /sys/class/scsi_tape/nst0/default_compression
829 \end{lstlisting}
830
831 You can, turn it on by using (on Linux):
832
833 \footnotesize
834 \begin{lstlisting}
835 become super user
836 mt -f /dev/nst0 defcompression 1
837 \end{lstlisting}
838 \normalsize
839
840 and of course, if you use a zero instead of the one at the end, you will turn
841 it off.
842
843 If you have built the {\bf mtx} program in the {\bf depkgs} package, you can
844 use tapeinfo to get quite a bit of information about your tape drive even if
845 it is not an autochanger. This program is called using the SCSI control
846 device. On Linux for tape drive /dev/nst0, this is usually /dev/sg0, while on
847 FreeBSD for /dev/nsa0, the control device is often /dev/pass2. For example on
848 my DDS-4 drive (/dev/nst0), I get the following:
849
850 \footnotesize
851 \begin{lstlisting}
852 tapeinfo -f /dev/sg0
853 Product Type: Tape Drive
854 Vendor ID: 'HP      '
855 Product ID: 'C5713A          '
856 Revision: 'H107'
857 Attached Changer: No
858 MinBlock:1
859 MaxBlock:16777215
860 SCSI ID: 5
861 SCSI LUN: 0
862 Ready: yes
863 BufferedMode: yes
864 Medium Type: Not Loaded
865 Density Code: 0x26
866 BlockSize: 0
867 \end{lstlisting}
868 \normalsize
869
870 where the {\bf DataCompEnabled: yes} means that tape hardware compression is
871 turned on. You can turn it on and off (yes|no) by using the {\bf mt}
872 commands given above. Also, this output will tell you if the {\bf BlockSize}
873 is non-zero and hence set for a particular block size. Bacula is not likely to
874 work in such a situation because it will normally attempt to write blocks of
875 64,512 bytes, except the last block of the job which will generally be
876 shorter. The first thing to try is setting the default block size to zero
877 using the {\bf mt -f /dev/nst0 defblksize 0} command as shown above.
878 On FreeBSD, this would be something like: {\bf mt -f /dev/nsa0 blocksize 0}.
879
880 On some operating systems with some tape drives, the amount of data that
881 can be written to the tape and whether or not compression is enabled is
882 determined by the density usually the {\bf mt -f /dev/nst0 setdensity xxx} command.
883 Often  {\bf mt -f /dev/nst0 status} will print out the current
884 density code that is used with the drive.  Most systems, but unfortunately
885 not all, set the density to the maximum by default. On some systems, you
886 can also get a list of all available density codes with:
887 {\bf mt -f /dev/nst0 densities} or a similar {\bf mt} command.
888 Note, for DLT and SDLT devices, no-compression versus compression is very
889 often controlled by the density code.  On FreeBSD systems, the compression
890 mode is set using {\bf mt -f /dev/nsa0 comp xxx} where xxx is the
891 mode you want.  In general, see {\bf man mt}  for the options available on
892 your system.
893
894 Note, some of the above {\bf mt} commands may not be persistent depending
895 on your system configuration. That is they may be reset if a program
896 other than Bacula uses the drive or, as is frequently the case, on reboot
897 of your system.
898
899 If your tape drive requires fixed block sizes (very unusual), you can use the
900 following records:
901
902 \footnotesize
903 \begin{lstlisting}
904 Minimum Block Size = nnn
905 Maximum Block Size = nnn
906 \end{lstlisting}
907 \normalsize
908
909 in your Storage daemon's Device resource to force Bacula to write fixed size
910 blocks (where you sent nnn to be the same for both of the above records). This
911 should be done only if your drive does not support variable block sizes, or
912 you have some other strong reasons for using fixed block sizes. As mentioned
913 above, a small fixed block size of 512 or 1024 bytes will be very inefficient.
914 Try to set any fixed block size to something like 64,512 bytes or larger if
915 your drive will support it.
916
917 Also, note that the {\bf Medium Type} field of the output of {\bf tapeinfo}
918 reports {\bf Not Loaded}, which is not correct. As a consequence, you should
919 ignore that field as well as the {\bf Attached Changer} field.
920
921 To recover files from tapes written in fixed block mode, see below.
922 \label{FreeBSDTapes}
923
924 \subsection{Tape Modes on FreeBSD}
925 \index[general]{FreeBSD!Tape Modes on}
926 \index[general]{Tape Modes on FreeBSD}
927
928 On most FreeBSD systems such as 4.9 and most tape drives, Bacula should run
929 with:
930
931 \footnotesize
932 \begin{lstlisting}
933 mt  -f  /dev/nsa0  seteotmodel  2
934 mt  -f  /dev/nsa0  blocksize   0
935 mt  -f  /dev/nsa0  comp  enable
936 \end{lstlisting}
937 \normalsize
938
939 You might want to put those commands in a startup script to make sure your
940 tape driver is properly initialized before running Bacula, because
941 depending on your system configuration, these modes may be reset if a
942 program other than Bacula uses the drive or when your system is rebooted.
943
944 Then according to what the {\bf btape test} command returns, you will probably
945 need to set the following (see below for an alternative):
946
947 \footnotesize
948 \begin{lstlisting}
949   Hardware End of Medium = no
950   BSF at EOM = yes
951   Backward Space Record = no
952   Backward Space File = no
953   Fast Forward Space File = no
954   TWO EOF = yes
955 \end{lstlisting}
956 \normalsize
957
958 Then be sure to run some append tests with Bacula where you start and stop
959 Bacula between appending to the tape, or use {\bf btape} version 1.35.1 or
960 greater, which includes simulation of stopping/restarting Bacula.
961
962 Please see the file {\bf platforms/freebsd/pthreads-fix.txt} in the main
963 Bacula directory concerning {\bf important} information concerning
964 compatibility of Bacula and your system. A much more optimal Device
965 configuration is shown below, but does not work with all tape drives. Please
966 test carefully before putting either into production.
967
968 Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 with an
969 autochanger set to variable block size and DCLZ compression, Brian McDonald
970 reports that to get Bacula to append correctly between Bacula executions,
971 the correct values to use are:
972
973 \footnotesize
974 \begin{lstlisting}
975 mt  -f  /dev/nsa0  seteotmodel  1
976 mt  -f  /dev/nsa0  blocksize  0
977 mt  -f /dev/nsa0  comp  enable
978 \end{lstlisting}
979 \normalsize
980
981 and
982
983 \footnotesize
984 \begin{lstlisting}
985   Hardware End of Medium = no
986   BSF at EOM = no
987   Backward Space Record = no
988   Backward Space File = no
989   Fast Forward Space File = yes
990   TWO EOF = no
991 \end{lstlisting}
992 \normalsize
993
994 This has been confirmed by several other people using different hardware. This
995 configuration is the preferred one because it uses one EOF and no backspacing
996 at the end of the tape, which works much more efficiently and reliably with
997 modern tape drives.
998
999 Finally, here is a Device configuration that Danny Butroyd reports to work
1000 correctly with the Overland Powerloader tape library using LT0-2 and
1001 FreeBSD 5.4-Stable:
1002
1003 \footnotesize
1004 \begin{lstlisting}
1005 # Overland Powerloader LT02 - 17 slots single drive
1006 Device {
1007   Name = Powerloader
1008   Media Type = LT0-2
1009   Archive Device = /dev/nsa0
1010   AutomaticMount = yes;
1011   AlwaysOpen = yes;
1012   RemovableMedia = yes;
1013   RandomAccess = no;
1014   Changer Command = "/usr/local/sbin/mtx-changer %c %o %S %a %d"
1015   Changer Device = /dev/pass2
1016   AutoChanger = yes
1017   Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
1018
1019   # FreeBSD Specific Settings
1020   Offline On Unmount = no
1021   Hardware End of Medium = no
1022   BSF at EOM = yes
1023   Backward Space Record = no
1024   Fast Forward Space File = no
1025   TWO EOF = yes
1026 }
1027
1028 The following Device resource works fine with Dell PowerVault 110T and
1029 120T devices on both FreeBSD 5.3 and on NetBSD 3.0.  It also works
1030 with Sony AIT-2 drives on FreeBSD.
1031 \footnotesize
1032 \begin{lstlisting}
1033 Device {
1034   ...
1035   # FreeBSD/NetBSD Specific Settings
1036   Hardware End of Medium = no
1037   BSF at EOM = yes
1038   Backward Space Record = no
1039   Fast Forward Space File = yes
1040   TWO EOF = yes
1041 }
1042 \end{lstlisting}
1043 \normalsize
1044
1045 On FreeBSD version 6.0, it is reported that you can even set
1046 Backward Space Record = yes.
1047
1048
1049
1050 \subsection{Finding your Tape Drives and Autochangers on FreeBSD}
1051 \index[general]{FreeBSD!Finding Tape Drives and Autochangers}
1052 \index[general]{Finding Tape Drives and Autochangers on FreeBSD}
1053
1054 On FreeBSD, you can do a {\bf camcontrol devlist} as root to determine what
1055 drives and autochangers you have. For example,
1056
1057 \footnotesize
1058 \begin{lstlisting}
1059 undef# camcontrol devlist
1060     at scbus0 target 2 lun 0 (pass0,sa0)
1061     at scbus0 target 4 lun 0 (pass1,sa1)
1062     at scbus0 target 4 lun 1 (pass2)
1063 \end{lstlisting}
1064 \normalsize
1065
1066 from the above, you can determine that there is a tape drive on {\bf /dev/sa0}
1067 and another on {\bf /dev/sa1} in addition since there is a second line for the
1068 drive on {\bf /dev/sa1}, you know can assume that it is the control device for
1069 the autochanger (i.e. {\bf /dev/pass2}). It is also the control device name to
1070 use when invoking the tapeinfo program. E.g.
1071
1072 \footnotesize
1073 \begin{lstlisting}
1074 tapeinfo -f /dev/pass2
1075 \end{lstlisting}
1076 \normalsize
1077
1078 \label{onstream}
1079
1080 \subsection{Using the OnStream driver on Linux Systems}
1081 \index[general]{Using the OnStream driver on Linux Systems}
1082 \index[general]{Systems!Using the OnStream driver on Linux}
1083
1084 Bacula version 1.33 (not 1.32x) is now working and ready for testing with the
1085 OnStream kernel osst driver version 0.9.14 or above. Osst is available from:
1086 \elink{http://sourceforge.net/projects/osst/}
1087 {http://sourceforge.net/projects/osst/}.
1088
1089 To make Bacula work you must first load the new driver then, as root, do:
1090
1091 \footnotesize
1092 \begin{lstlisting}
1093   mt -f /dev/nosst0 defblksize 32768
1094 \end{lstlisting}
1095 \normalsize
1096
1097 Also you must add the following to your Device resource in your Storage
1098 daemon's conf file:
1099
1100 \footnotesize
1101 \begin{lstlisting}
1102  Minimum Block Size = 32768
1103  Maximum Block Size = 32768
1104 \end{lstlisting}
1105 \normalsize
1106
1107 Here is a Device specification provided by Michel Meyers that is known to
1108 work:
1109
1110 \footnotesize
1111 \begin{lstlisting}
1112 Device {
1113   Name = "Onstream DI-30"
1114   Media Type = "ADR-30"
1115   Archive Device = /dev/nosst0
1116   Minimum Block Size = 32768
1117   Maximum Block Size = 32768
1118   Hardware End of Medium = yes
1119   BSF at EOM = no
1120   Backward Space File = yes
1121   Fast Forward Space File = yes
1122   Two EOF = no
1123   AutomaticMount = yes
1124   AlwaysOpen = yes
1125   Removable Media = yes
1126 }
1127 \end{lstlisting}
1128 \normalsize
1129
1130 \section{Hardware Compression on EXB-8900}
1131 \index[general]{Hardware Compression on EXB-8900}
1132 \index[general]{EXB-8900!Hardware Compression}
1133
1134 To active, check, or disable the hardware compression feature
1135 on an EXB-8900, use the exabyte MammothTool. You can get it here:
1136 \elink{http://www.exabyte.com/support/online/downloads/index.cfm}
1137 {http://www.exabyte.com/support/online/downloads/index.cfm}.
1138 There is a Solaris version of this tool. With option -C 0 or 1 you
1139 can disable or activate compression. Start this tool without any
1140 options for a small reference.
1141
1142 \label{fill}
1143 \subsection{Using btape to Simulate Filling a Tape}
1144 \index[general]{Using btape to Simulate Filling a Tape}
1145 \index[general]{Tape!Using btape to Simulate Filling}
1146
1147 Because there are often problems with certain tape drives or systems when end
1148 of tape conditions occur, {\bf btape} has a special command {\bf fill} that
1149 causes it to write random data to a tape until the tape fills. It then writes
1150 at least one more Bacula block to a second tape. Finally, it reads back both
1151 tapes to ensure that the data has been written in a way that Bacula can
1152 recover it. Note, there is also a single tape option as noted below, which you
1153 should use rather than the two tape test. See below for more details.
1154
1155 This can be an extremely time consuming process (here it is about 6 hours) to
1156 fill a full tape. Note, that btape writes random data to the tape when it is
1157 filling it. This has two consequences: 1. it takes a bit longer to generate
1158 the data, especially on slow CPUs. 2. the total amount of data is
1159 approximately the real physical capacity of your tape, regardless of whether
1160 or not the tape drive compression is on or off. This is because random data
1161 does not compress very much.
1162
1163 To begin this test, you enter the {\bf fill} command and follow the
1164 instructions. There are two options: the simple single tape option and the
1165 multiple tape option. Please use only the simple single tape option because
1166 the multiple tape option still doesn't work totally correctly. If the single
1167 tape option does not succeed, you should correct the problem before using
1168 Bacula.
1169 \label{RecoveringFiles}
1170
1171 \section{Recovering Files Written With Fixed Block Sizes}
1172 \index[general]{Recovering Files Written With Fixed Block Sizes}
1173
1174 If you have been previously running your tape drive in fixed block mode
1175 (default 512) and Bacula with variable blocks (default), then in version
1176 1.32f-x and 1.34 and above, Bacula will fail to recover files because it does
1177 block spacing, and because the block sizes don't agree between your tape drive
1178 and Bacula it will not work.
1179
1180 The long term solution is to run your drive in variable block mode as
1181 described above. However, if you have written tapes using fixed block sizes,
1182 this can be a bit of a pain. The solution to the problem is: while you are
1183 doing a restore command using a tape written in fixed block size, ensure that
1184 your drive is set to the fixed block size used while the tape was written.
1185 Then when doing the {\bf restore} command in the Console program, do not
1186 answer the prompt {\bf yes/mod/no}. Instead, edit the bootstrap file (the
1187 location is listed in the prompt) using any ASCII editor. Remove all {\bf
1188 VolBlock} lines in the file. When the file is re-written, answer the question,
1189 and Bacula will run without using block positioning, and it should recover
1190 your files.
1191
1192 \label{BlockModes}
1193 \section{Tape Blocking Modes}
1194 \index[general]{Modes!Tape Blocking}
1195 \index[general]{Tape Blocking Modes}
1196
1197 SCSI tapes may either be written in {\bf variable} or {\bf fixed} block sizes.
1198 Newer drives support both modes, but some drives such as the QIC devices
1199 always use fixed block sizes. Bacula attempts to fill and write complete
1200 blocks (default 65K), so that in normal mode (variable block size), Bacula
1201 will always write blocks of the same size except the last block of a Job. If
1202 Bacula is configured to write fixed block sizes, it will pad the last block of
1203 the Job to the correct size. Bacula expects variable tape block size drives to
1204 behave as follows: Each write to the drive results in a single record being
1205 written to the tape. Each read returns a single record. If you request less
1206 bytes than are in the record, only those number of bytes will be returned, but
1207 the entire logical record will have been read (the next read will retrieve the
1208 next record). Thus data from a single write is always returned in a single
1209 read, and sequentially written records are returned by sequential reads.
1210
1211 Bacula expects fixed block size tape drives to behave as follows: If a write
1212 length is greater than the physical block size of the drive, the write will be
1213 written as two blocks each of the fixed physical size. This single write may
1214 become multiple physical records on the tape. (This is not a good situation).
1215 According to the documentation, one may never write an amount of data that is
1216 not the exact multiple of the blocksize (it is not specified if an error
1217 occurs or if the the last record is padded). When reading, it is my
1218 understanding that each read request reads one physical record from the tape.
1219 Due to the complications of fixed block size tape drives, you should avoid
1220 them if possible with Bacula, or you must be ABSOLUTELY certain that you use
1221 fixed block sizes within Bacula that correspond to the physical block size of
1222 the tape drive. This will ensure that Bacula has a one to one correspondence
1223 between what it writes and the physical record on the tape.
1224
1225 Please note that Bacula will not function correctly if it writes a block and
1226 that block is split into two or more physical records on the tape. Bacula
1227 assumes that each write causes a single record to be written, and that it can
1228 sequentially recover each of the blocks it has written by using the same
1229 number of sequential reads as it had written.
1230
1231 \section{Details of Tape Modes}
1232 \index[general]{Modes!Details}
1233 \index[general]{Details of Tape Modes}
1234 Rudolf Cejka has provided the following information concerning
1235 certain tape modes and MTEOM.
1236
1237 \begin{description}
1238 \item[Tape level]
1239   It is always possible to position filemarks or blocks, whereas
1240   positioning to the end-of-data is only optional feature, however it is
1241   implemented very often.  SCSI specification also talks about optional
1242   sequential filemarks, setmarks and sequential setmarks, but these are not
1243   implemented so often.  Modern tape drives keep track of file positions in
1244   built-in chip (AIT, LTO) or at the beginning of the tape (SDLT), so there
1245   is not any speed difference, if end-of-data or filemarks is used (I have
1246   heard, that LTO-1 from all 3 manufacturers do not use its chip for file
1247   locations, but a tape as in SDLT case, and I'm not sure about LTO-2 and
1248   LTO-3 case).  However there is a big difference, that end-of-data ignores
1249   file position, whereas filemarks returns the real number of skipped
1250   files, so OS can track current file number just in filemarks case.
1251
1252 \item[OS level]
1253   Solaris does use just SCSI SPACE Filemarks, it does not support SCSI
1254   SPACE End-of-data.  When MTEOM is called, Solaris does use SCSI SPACE
1255   Filemarks with count = 1048576 for fast mode, and combination of SCSI
1256   SPACE Filemarks with count = 1 with SCSI SPACE Blocks with count = 1 for
1257   slow mode, so EOD mark on the tape on some older tape drives is not
1258   skipped.  File number is always tracked for MTEOM.
1259
1260   Linux does support both SCSI SPACE Filemarks and End-of-data: When MTEOM
1261   is called in MT\_ST\_FAST\_MTEOM mode, SCSI SPACE End-of-data is used.
1262   In the other case, SCSI SPACE Filemarks with count =
1263   8388607 is used.
1264   There is no real slow mode like in Solaris - I just expect, that for
1265   older tape drives Filemarks may be slower than End-of-data, but not so
1266   much as in Solaris slow mode.  File number is tracked for MTEOM just
1267   without MT\_ST\_FAST\_MTEOM - when MT\_ST\_FAST\_MTEOM is used, it is not.
1268
1269   FreeBSD does support both SCSI SPACE Filemarks and End-of-data, but when
1270   MTEOD (MTEOM) is called, SCSI SPACE End-of-data is always used.  FreeBSD
1271   never use SCSI SPACE Filemarks for MTEOD. File number is never tracked
1272   for MTEOD.
1273
1274 \item[Bacula level]
1275   When {\bf Hardware End of Medium = Yes} is used, MTEOM is called, but it
1276   does not mean, that hardware End-of-data must be used.  When Hardware End
1277   of Medium = No, if Fast Forward Space File = Yes, MTFSF with count =
1278   32767 is used, else Block Read with count = 1 with Forward Space File
1279   with count = 1 is used, which is really very slow.
1280
1281 \item [Hardware End of Medium = Yes|No]
1282   The name of this option is misleading and is the source of confusion,
1283   because it is not the hardware EOM, what is really switched here.
1284
1285   If I use Yes, OS must not use SCSI SPACE End-of-data, because Bacula
1286   expects, that there is tracked file number, which is not supported by
1287   SCSI specification.  Instead, the OS have to use SCSI SPACE Filemarks.
1288
1289   If I use No, an action depends on Fast Forward Space File.
1290
1291   When I set {\bf Hardware End of Medium = no}
1292   and {\bf Fast Forward Space File = no}
1293   file positioning was very slow
1294   on my LTO-3 (about ten to 100 minutes), but
1295
1296   with {\bf Hardware End of Medium = no} and
1297 {\bf Fast Forward Space File = yes}, the time is ten to
1298 100 times faster (about one to two minutes).
1299
1300 \end{description}
1301
1302 \section{Tape Performance Problems}
1303 \index[general]{Tape Performance}
1304 If you have LTO-3 or LTO-4 drives, you should be able to
1305 fairly good transfer rates; from 60 to 150 MB/second, providing
1306 you have fast disks; GigaBit Ethernet connections (probably 2); you are
1307 running multiple simultaneous jobs; you have Bacula data spooling
1308 enabled; your tape block size is set to 131072 or 262144; and
1309 you have set {\bf Maximum File Size = 5G}.
1310
1311 If you are not getting good performance, consider some of the following
1312 suggestions from the Allen Balck on the Bacula Users email list:
1313
1314 \begin{enumerate}
1315 \item You are using an old HBA (i.e. SCSI-1, which only does 5 MB/s)
1316
1317 \item There are other, slower, devices on the SCSI bus. The HBA will
1318    negotiate the speed of every device down to the speed of the
1319    slowest.
1320
1321 \item There is a termination problem on the bus (either too much or
1322    too little termination). The HBA will drop the bus speed in an
1323    attempt to increase the reliability of the bus.
1324
1325 \item Loose or damaged cabling - this will probably make the HBA "think"
1326    you have a termination problem and it will react as in 3 above.
1327 \end{enumerate}
1328
1329 See if /var/adm/messages (or /var/log/messages) tells you what the sync
1330 rate of the SCSI devices/bus are. Also, the next time you reboot, the
1331 BIOS may be able to tell you what the rate of each device is.
1332
1333
1334 \section{Autochanger Errors}
1335 \index[general]{Errors!Autochanger}
1336 \index[general]{Autochanger Errors}
1337
1338 If you are getting errors such as:
1339
1340 \footnotesize
1341 \begin{lstlisting}
1342 3992 Bad autochanger "load slot 1, drive 1": ERR=Child exited with code 1.
1343 \end{lstlisting}
1344 \normalsize
1345
1346 and you are running your Storage daemon as non-root, then most likely
1347 you are having permissions problems with the control channel. Running
1348 as root, set permissions on /dev/sgX so that the userid and group of
1349 your Storage daemon can access the device. You need to ensure that you
1350 all access to the proper control device, and if you don't have any
1351 SCSI disk drives (including SATA drives), you might want to change
1352 the permissions on /dev/sg*.
1353
1354 \section{Syslog Errors}
1355 \index[general]{Errors!Syslog}
1356 \index[general]{Syslog Errors}
1357
1358 If you are getting errors such as:
1359
1360 \footnotesize
1361 \begin{lstlisting}
1362 : kernel: st0: MTSETDRVBUFFER only allowed for root
1363 \end{lstlisting}
1364 \normalsize
1365
1366 you are most likely running your Storage daemon as non-root, and
1367 Bacula is attempting to set the correct OS buffering to correspond
1368 to your Device resource. Most OSes allow only root to issue this
1369 ioctl command. In general, the message can be ignored providing
1370 you are sure that your OS parameters are properly configured as
1371 described earlier in this manual.  If you are running your Storage daemon
1372 as root, you should not be getting these system log messages, and if
1373 you are, something is probably wrong.