VMware Cloud Community
jbWiseMo
Enthusiast
Enthusiast

SAS Tape drive via SCSI pass-through fails

I have just attached a HP SAS LTO-4 tape drive to our ESXi 4.0u1 host (HP Proliant with AMD CPU) using a dedicated HP P411 SAS Controller. The tape shows up nicely in the VIC GUI and I modified an otherwise functioning virtual machine (64 bit Linux) to include it as a SCSI device. The host SCSI id is vmhba2:C0:T0:L0, the virtual SCSI device node (in VM settings) is SCSI 1:0 (virtual LSI SAS), and the Guest OS sees it as "scsi1 channel: 0, id: 0, lun: 0".

The virtual machine can see the the tape and issue status commands, but when I try to write to the tape (just a single block), the request fails and the ESXi VMKernel logs the following errors:

Jun 1 11:17:14 vmkernel: 0:04:39:40.236 cpu3:89713)WARNING: ScsiPath: 1955: Unable to split cmd for non-disk/non-cdrom device (class 0x1)

Jun 1 11:17:14 vmkernel: 0:04:39:40.236 cpu3:89713)WARNING: ScsiPath: 2416: Cant split CMD 0a, returning Illegal Request to initiator 0x410008058e00

Jun 1 11:17:14 vmkernel: 0:04:39:40.236 cpu3:89713)NMP: nmp_CompleteCommandForPath: Command 0xa (0x41000504c340) to NMP device "naa.500110a0012d3fc2" failed on physical path "vmhba2:C0:T0:L0" H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.

Jun 1 11:17:14 vmkernel: 0:04:39:40.236 cpu3:89713)ScsiDeviceIO: 747: Command 0a to device "naa.500110a0012d3fc2" failed H:0x0 D:0x2 P:0x0 Valid sense data: 05 0x24 0x0.

I have tried searching for these errors, but all I found were unanswered posts and a slightly different issue in an older ESXi version (I am deliberately not including keywords specific to that other issue in this post, it would mess up searches for that issue).

Note that because ESXi VMDirectPath requires a future or rare AMD CPU variant, it is not an option.

Anyone knows what is going on and how to fix it?

0 Kudos
1 Reply
jbWiseMo
Enthusiast
Enthusiast

Noone here answered but I found the cause and solution myself through experimentation:

  • ESXi 4u1 does not handle SCSI tape block sizes larger than some unknown value somewhere between 100KiB and 1000KiB, reconfiguring my backup software to use a tape block size of 102400 bytes rather than 1024000 bytes or more solved the problem.

  • The SCSI tape block size is part of the low level stored data format on the actual tape, so this can only be changed during backup. Restore is forced (by hardware) to use whatever block size was used during backup. This distinction is important to any site with existing tapes made using a different hardware configuration (such as tape drive on dedicated server), which happened to allow a larger block size than their restore hardware configuration.

  • Not all backup software allows the sysadmin or user to change the block size, fortunately mine did.

  • I have not investigated what the exact ESXi 4 limit for the block size is, but my experiments show that it is at least 100KiB, but less than 1000KiB.

  • I do not know if the limit depends on host hardware factors such as the choice of HBA or tape drive, or the amount of host memory or other factors, only that the problem appears to be within the ESXi SCSI code.

0 Kudos