I’ve been optimizing my hosted environment for the last couple of days now. Besides upgrading the hard- and software of the physical server (Virtual Lifestyle running on ESX 4!), I’ve been optimizing the Guest OS of the VM running this website. After doing the usual stuff (like running “aptitude update” and “aptitude full-upgrade”), I set my sights on optimizing the virtual hardware of this VM.

Two major improvements were to be made:

  1. Upgrade the virtual ethernet adapter to VMXnet3
  2. Upgrade the virtual SCSI adapter to pvSCSI

Using VMXnet3

Upgrading the virtual ethernet adapter was easy enough:

  • Shutdown VM
  • Remove the VM from the (ESX/vCenter) inventory
  • add the following line to the vm.vmx file
  • Add the VM to the inventory
  • Start the VM
Note: I did not have to reconfigure the IP-address settings for the upgraded virtual NIC (eth0).

Using the Paravirtualized SCSI controller for the bootdisk

This one was a lot tougher to beat, mainly because I want pvSCSI on the bootdisk! First, I need to read up on the subject:

With the newly gained knowledge, I knew I had to (roughly) do the following

  • Upgrade VMware Tools to the latest and greatest
  • Check if the kernel module is running (lsmod | grep pvscsi)
  • Shutdown VM
  • Add a second harddisk to scsi 1:0 (thus adding a new adapter)
  • Change the adapter type to “paravirtual”
  • Boot up the VM
  • Move the current initrd file to a backuplocation
mv /boot/initrd.img-2.6.26-2-686 initrd.img-2.6.26-2-686.bck
  • Add the pvscsi module to /etc/initramfs-tools/modules


  • Run update-initramfs in verbose mode to create a new initrd and check if the pvscsi module is actually included:

update-initramfs -k `uname -r` -c -v | grep pvscsi


This should create a new initrd in /boot with the same name as the current initrd.img file. Please do doublecheck that, as the system will not boot if the name of initrd has changed.

  • Shutdown VM
  • Remove second hard disk
  • Change adapter type for the bootdisk to “paravirtual”
  • Boot up VM!