Dedicated VMKernel Storage Adapters in ESXi
This is a bit of a corrolary to the previous couple of posts regarding the self-hosted filer on ESXi, you may want to (and probably ought to) setup a dedicated vmkernel adapter for your iSCSI storage, it’s a bit of a pain in the arse so I figured I’d write it up…
First thing, you’ll need a new vswitch (Networking->Virtual Switches->Add standard virtual switch);
If you’re not planning to expose the iSCSI storage elsewhere on your network it’s probably best to remove the uplink (click the X button to the right).
Next we create a new VMKernel NIC (Networking->VMkernel NICs->Add VMkernel NIC);
For some reason ESXi doesn’t allow you to put VMkernel and VM NICs into the same port groups, so you’ll need to create a separate port group for your new VMkernel adapter. And attach that to the “Storage” switch you defined in the last step. Assuming you don’t want to go to the trouble of configuring a DHCP server in this segment, set a static IP in an RFC1918 range (I’m using a /28 netmask here, but you can pick something else if you’d rather).
Now we create a new Port Group for our Storage VM(s) to sit in (Networking->Port groups->Add port group);
Now add an extra NIC to your filer VM (or reassign the existing one) assigned to your “Storage VMs” (or whatever you called it) port group, and configure that adapter with a static IP on the same subnet as the IP you configured on your “Storage” VMkernel NIC on your filer VM.
If you really want to multi-path it to get rid of the “Degraded” warning, repeat the above (except creating the “Storage VMs” port group), use a different subnet for your VMkernel adapter, and add an additional NIC to your storage VM with a static IP on that network (though I suppose an alias would probably also work), if necessary reconfigure you iSCSI target to expose a second portal group on the new network (assuming you’re not using a 0.0.0.0 binding) and then repeat the “sendtarget” configuration step from the “Self-Hosted iSCSI/ZFS Filer on ESXi” post to add the new target, everything else should “just work”(tm) except the device should now show “Normal” instead of “Degraded”.