If you need to access USB in Hyper-V, you should know that there are three types of virtual controllers are supported by Hyper-V. With the virtualization platform, you can use IDE, SCSI, or Virtual host bus adapters (HBAs). If a virtual machine needs more than four disks, adding a SCSI controller while the machine is running might be the best option. So, what is an SCSI controller?
SCSI (Small Computer System Interface) controllers give virtual machines access to SCSI disks. A maximum of 64 devices can be supported from a virtual SCSI controller. Multiple disks attached to a single controller will provide optimal performance. The best practice is to only create additional controllers if they are needed due to the number of disks being used by the VM. Since the SCSI path is not emulated, a SCSI controller is the best controller for all but the disk containing the operating system. When working with Generation 2 VMs, a SCSI controller must be used. This type of controller is defined as serial attached SCSI (SAS) to support shared VHDX beginning with Windows Server 2012 R2.
Table of contents:
Another term used for a SCSI controller is a host bus adapter (HBA). It can be either a chip or card used to enable SCSI storage devices to communicate with the OS over a SCSI bus. The controller can be a chip on the computer’s motherboard or housed in a hard drive’s PCI slot.
The following components are commonly found in SCSI controllers to support the SCSI communication protocol. You can understand better how SCSI works thanks to knowing its types and components.
Initiator - The initiator is responsible for initiating service requests for a SCSI device and receiving responses. Various types of initiators are in use that may be built into a host bus adapter or be part of a computer’s system board. A software initiator is often used in implementations of the SCSI protocol.
Target - A target is usually a physical storage device although it can be software-based. The target may be a storage array, individual disk drive, or other type of hardware device. For example, it was once very popular to connect optical scanners to a computer utilizing the SCSI bus.
Service delivery subsystem - This component, typically implemented with cabling, facilitates data transfer between the initiator and target.
Expander - Expanders are used in serial-attached SCSI (SAS) implementations to allow several SAS devices to share an initiator port.
Three basic specifications are used to implement the SCSI protocol.
SCSI-1: The original SCSI specification was introduced in 1986. SCSI-1 provided an 8-bit wide bus and a clock speed of 5 MHz. SCSI-1 is no longer in use and has been replaced by more functional specifications.
SCSI-2: The second set of specifications was introduced in 1994. Support for SCSI devices was enhanced by the inclusion of 18 essential commands known as the Common Command Set (CCS). SCSI-2 enabled doubling the clock speed to 10 MHz (Fast SCSI-2) and doubling the bus width to 16 bits with support for up to 15 devices (Wide SCSI-2). Fast/Wide SCSI-2 doubles both the clock speed and bus width. Common queuing also supplied SCSI devices with the functionality to save and prioritize commands received from the host.
SCSI-3: This specification was released in 1995 and incorporated several supplementary standards that address specific SCSI implementations. An example is the continuously evolving standards supporting the SCSI Parallel Interface (SPI) controlling communication between SCSI devices.
The prefix Ultra is typically used when naming SCSI-3 specifications. You will often see variations of the SCSI protocol labeled as Ultra SPI, Ultra2 for SPI-2, and Ultra3 for SPI-3. SCSI-3 supports the Fast and Wide options introduced on SCSI-2. SCSI-3 is currently the standard in use and is available in many variations that implement alternate combinations of clock speed and bus width.