Re: [Bacula-users] Loading a tape sets block size to 1 byte?

2021-10-15 Thread David Anderson via Bacula-users
As usual, the quickest way to a solution is to make a fool of yourself in 
public, and this time is no different.

AFAICT, at some point during setup of the autoloader, I ran `mt -f /dev/nst0 
defblksize`, which changes the default block size for newly inserted tapes. It 
seems that if you don't pass a block size to defblksize, the default value it 
passes to the ioctl is 1... which happens to be a valid block size according to 
this tape drive. This broken setting will persist until the next reboot unless 
cleared.

So, reader from the future, if you got here from a search engine while trying 
to figure out why you can barely get any wire throughput from your fast LTO 
drive, check BlockSize in `tapeinfo -f /dev/nst0`, and if it's 1, try `mt -f 
/dev/nst0 defblksize 0` and do an unload/load cycle.

- Dave

On Fri, Oct 15, 2021, at 01:31, David Anderson wrote:
> Hi all,
> 
> I'm new to both bacula and tape storage, and wrestling with a strange issue: 
> it seems my tape device resets its block size to 1 byte every time I insert a 
> tape. Anyone seen this before, and know how to make it stop?
> 
> In more detail: I have an HPE autoloader with an LTO-6 drive:
> 
> > tapeinfo -f /dev/nst0
> Product Type: Tape Drive
> Vendor ID: 'HP  '
> Product ID: 'Ultrium 6-SCSI  '
> Revision: '35GW'
> Attached Changer API: No
> SerialNumber: 'HUJ6035G4U'
> MinBlock: 1
> MaxBlock: 16777215
> SCSI ID: 9
> SCSI LUN: 0
> Ready: yes
> BufferedMode: yes
> Medium Type: Not Loaded
> Density Code: 0x5a
> BlockSize: 1
> DataCompEnabled: yes
> DataCompCapable: yes
> DataDeCompEnabled: yes
> CompType: 0x1
> DeCompType: 0x1
> BOP: yes
> Block Position: 0
> ActivePartition: 0
> EarlyWarningSize: 0
> NumPartitions: 0
> MaxPartitions: 3
> 
> I got both the changer and drive set up in Bacula, with Maximum Block Size = 
> 512K, but in my initial btape speed tests I was only getting 13MB/s with 
> random data, less than 10% of the theoretical throughput.
> 
> After some futzing around, I figured out that the answer is in the tapeinfo 
> output: BlockSize is set to 1, which I think means btape's writes end up 
> being split into 1-byte blocks by something downstream (either the st driver 
> or the drive firmware, not sure?)
> 
> When I manually clear the block size with `mt -f /dev/nst0 setblk 0`, btape 
> speeds jump to 130MB/s and everything's happy.
> 
> Experimenting further, the block size seems to get reset to 1 whenever I load 
> a new tape with mtx. As far as I can tell, mtx itself doesn't do any funny 
> business with drive configuration.
> 
> Anyone seen this behavior before? Is there some well-known knob that's not 
> set correctly on my machine to consistently leave the block size up to the 
> userspace software? If not, any suggestions on how to reset the block size on 
> every tape load? So far my only plan is to make a custom mtx-changer that 
> runs `mt setblk 0` on every load.
> 
> Thanks in advance,
> - Dave
___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users


[Bacula-users] Loading a tape sets block size to 1 byte?

2021-10-15 Thread David Anderson via Bacula-users
Hi all,

I'm new to both bacula and tape storage, and wrestling with a strange issue: it 
seems my tape device resets its block size to 1 byte every time I insert a 
tape. Anyone seen this before, and know how to make it stop?

In more detail: I have an HPE autoloader with an LTO-6 drive:

> tapeinfo -f /dev/nst0
Product Type: Tape Drive
Vendor ID: 'HP  '
Product ID: 'Ultrium 6-SCSI  '
Revision: '35GW'
Attached Changer API: No
SerialNumber: 'HUJ6035G4U'
MinBlock: 1
MaxBlock: 16777215
SCSI ID: 9
SCSI LUN: 0
Ready: yes
BufferedMode: yes
Medium Type: Not Loaded
Density Code: 0x5a
BlockSize: 1
DataCompEnabled: yes
DataCompCapable: yes
DataDeCompEnabled: yes
CompType: 0x1
DeCompType: 0x1
BOP: yes
Block Position: 0
ActivePartition: 0
EarlyWarningSize: 0
NumPartitions: 0
MaxPartitions: 3

I got both the changer and drive set up in Bacula, with Maximum Block Size = 
512K, but in my initial btape speed tests I was only getting 13MB/s with random 
data, less than 10% of the theoretical throughput.

After some futzing around, I figured out that the answer is in the tapeinfo 
output: BlockSize is set to 1, which I think means btape's writes end up being 
split into 1-byte blocks by something downstream (either the st driver or the 
drive firmware, not sure?)

When I manually clear the block size with `mt -f /dev/nst0 setblk 0`, btape 
speeds jump to 130MB/s and everything's happy.

Experimenting further, the block size seems to get reset to 1 whenever I load a 
new tape with mtx. As far as I can tell, mtx itself doesn't do any funny 
business with drive configuration.

Anyone seen this behavior before? Is there some well-known knob that's not set 
correctly on my machine to consistently leave the block size up to the 
userspace software? If not, any suggestions on how to reset the block size on 
every tape load? So far my only plan is to make a custom mtx-changer that runs 
`mt setblk 0` on every load.

Thanks in advance,
- Dave___
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users