VMware Paravirtual SCSI Controller
According to VMware, there are two main reasons to deploy a virtual machine with the Paravirtual SCSI controller:
PVSCSI adapters are high-performance storage adapters that can result in greater throughput and lower CPU utilization. PVSCSI adapters are best for environments, especially SAN environments, where hardware or applications drive a very high amount of I/O throughput. The VMware PVSCSI adapter driver is also compatible with the Windows Storport storage driver. PVSCSI adapters are not suitable for DAS environments. VMware Paravirtual SCSI adapters are high-performance storage adapters that can result in greater throughput and lower CPU utilization. [1]
The PVSCSI adapter offers a significant reduction in CPU utilization as well as potentially increased throughput compared to the default virtual storage adapters, and is thus the best choice for environments with very I/O-intensive guest applications. [2]
Changing VMware Storage Controller to Paravirtual for CentOS 7
This tutorial contain step by step guidance to change the Virtual Storage
Controller from LSI Logic Parallel (SCSI controller 0
) to VMware
Paravirtual for a CentOS 7 based Virtual Machine that is running on
the ITS Private Cloud.
Create a Virtual Machine Snapshot:
vss-cli compute vm set <name-or-vm-id> snapshot mk -d "lsi logic to paravirtual" -l 72
Note
More information Manage virtual machine snapshots.
Power Off the virtual machine:
vss-cli compute vm set <vm-name-or-vm-id> state shutdown
Add a temporary VMware Paravirtual Controller to the Virtual Machine.
vss-cli compute vm set <vm-name-or-vm-id> controller scsi mk --scsi paravirtual
Verify that a new SCSI controller has been created.
vss-cli compute vm get <vm-name-or-vm-id> controller scsi
label bus_number type
----------------- ------------ ----------------------------
SCSI controller 0 0 VirtualLsiLogicSASController
SCSI controller 1 1 ParaVirtualSCSIController
Power On the virtual machine.
vss-cli compute vm set <vm-name-or-vm-id> state on
Login and promote your account to have root level permission.
Rebuild the initial
ramdisk
image:
mkinitrd -f -v /boot/initramfs-$(uname -r).img $(uname -r)
Power Off or shutdown the virtual machine:
vss-cli compute vm set <vm-name-or-vm-id> state shutdown
Update scsi controller 0 to type Paravirtual:
vss-cli compute vm set <vm-name-or-vm-id> controller scsi up -t paravirtual 0
Check whether the update executed successfully:
vss-cli compute vm get <vm-name-or-vm-id> controller scsi
label bus_number type
----------------- ------------ ----------------------------
SCSI controller 0 0 ParaVirtualSCSIController
SCSI controller 1 1 ParaVirtualSCSIController
Remove temporary SCSI controller
vss-cli compute vm set <name-or-vm-id> controller scsi rm 1
Power On the virtual machine:
vss-cli compute vm set <vm-name-or-vm-id> state on
Verify everything is working well.
(Optional) Remove Virtual Machine snapshot:
vss-cli compute vm set <vm-name-or-vm-id> snapshot rm <snap-id>
Note
More information Manage virtual machine snapshots.
Changing VMware Storage Controller to Paravirtual for Windows
This tutorial contain step by step guidance to change the Virtual Storage
Controller from LSI Logic SAS (SCSI controller 0
) to VMware
Paravirtual for a Microsoft Windows Server 2016 or later (64-bit)
based Virtual Machine running on the ITS Private Cloud [3].
Warning
Ensure machine is patched and latest VMware Tools installed and running.
If VMware Tools is ever removed from the system, it will not boot.
Note
If the device has more that one controller to start, please do not blindly follow instruction to will need to adjust to your environment and the controller id’s being referenced.
Create a Virtual Machine Snapshot:
vss-cli --wait compute vm set <name-or-vm-id> snapshot mk -d "lsi logic to paravirtual" -l 72
Note
More information Manage virtual machine snapshots.
Shutdown/Power Off the virtual machine:
vss-cli --wait compute vm set <vm-name-or-vm-id> state -c shutdown
Add a temporary VMware Paravirtual Controller to the Virtual Machine.
vss-cli --wait compute vm set <vm-name-or-vm-id> controller scsi mk -s paravirtual
Verify that a new SCSI controller has been created.
vss-cli compute vm get <vm-name-or-vm-id> controller scsi
label bus_number type
----------------- ------------ ----------------------------
SCSI controller 0 0 VirtualLsiLogicSASController
SCSI controller 1 1 ParaVirtualSCSIController
Power On the virtual machine.
vss-cli --wait compute vm set <vm-name-or-vm-id> state on
Log Onto windows machine to verify whether the VMware Paravirtual driver get installed using Device Manager > Controllers > PVSCSI device.
Shutdown/Power Off the virtual machine:
vss-cli --wait compute vm set <vm-name-or-vm-id> state shutdown
Update scsi controller 0 to type Paravirtual:
vss-cli compute vm set <vm-name-or-vm-id> controller scsi up -t paravirtual 0
Check whether the update executed successfully:
vss-cli compute vm get <vm-name-or-vm-id> controller scsi
label bus_number type
----------------- ------------ ----------------------------
SCSI controller 0 0 ParaVirtualSCSIController
SCSI controller 1 1 ParaVirtualSCSIController
Power On the virtual machine.
vss-cli --wait compute vm set <vm-name-or-vm-id> state on
Log Onto windows machine to verify boot and driver changed, in device manager you will now see 2 - controllers PVSCSI device.
Note
In Multi-disk environment, you will need to check and likely bring the additional disks online using computer manager
Shutdown/Power Off the virtual machine:
vss-cli --wait compute vm set <vm-name-or-vm-id> state shutdown
Remove temporary SCSI controller
vss-cli --wait compute vm set <name-or-vm-id> controller scsi rm 1
Power On the virtual machine.
vss-cli --wait compute vm set <vm-name-or-vm-id> state on
Log Onto windows machine verify boot and removal of secondary scsi controller using the device manager.
(Optional) Remove Virtual Machine snapshot:
vss-cli --wait compute vm set <vm-name-or-vm-id> snapshot rm <snap-id>
Note
More information Manage virtual machine snapshots.