No Time For Narrative – Solaris 11 Express ZFS and NFS share to VMWare ESXi 4.1u1

Welcome to my scratchpad. See links for some excellent write ups.

This article is based on Solaris 11 Express and VMWare ESXi 4.1.

Step 0: Build your hardware and install Solaris.


Step 1: Mirror the rpool

zpool status #figure out what’s already allocated

cfgadm -s "select=type(disk)" #list disks

fdisk -W - [rootdisk2] #check

fdisk -B [rootdisk2] #apply a default Solaris partition to the disk

fdisk -W - [rootdisk2] #check again

prtvtoc /dev/rdsk/[rootdisk1] | fmthard -s - /dev/rdsk/[rootdisk2] #slice and dice! You must define slices for rpools, so this step mirrors the original disk’s slice-age to the second root disk

zpool attach -f rpool [rootdisk1] [rootdisk2] #attach, not add. Attach = mirror. Add = stripe.

zpool status #check

installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/[rootdisk2] #install grub onto second boot disk

zpool status #check again


For more on rpool manipulation, namely on how to shrink an rpool, see:

Step 2: Configure networking

ifconfig -a #cheat and take advantage of nwam’s device lists

svcadm disable network/physical:nwam #disable nwam

svcadm enable network/physical:default #then enable the default config tools

ipadm create-if e1000g0 #or whatever your nic is

ipadm show-if #check

ipadm create-addr -T static -a e1000g0/v4 #create the address

ipadm show-addr #confirm

#link aggregate group (LACP)

dladm create-aggr -l [nic2] -l [nic 3] #create link aggregate group:

Then the same ipadm commands

ipadm create-if aggr1 #configure aggr1 for persistence

ipadm show-if #confirm it was added, should show down.

ipadm create-addr -T static -a aggr1/v4 #create the address

ipadm show-addr #confirm it was added, show-if should now show “OK”

netstat -rn #check routing tables

route -p add default #add persistent default route

vi /etc/resolv.conf #configure nameservers

vi /etc/hosts #configure name

vi /etc/nsswitch.conf #enable dns lookups for “hosts” line

svcsadm restart ssh #restart ssh after modifying networking

ping #ping Level3′s DNS resolvers to confirm routing

reboot #reboot to confirm persistency

Step 3: Do your AD thing. I know you love it.

read this:


Step 4: Configure ZFS

format #to present list of disks. exit out, leaving the list in screen buffer

or: cfgadm -s "select=type(disk)"

zpool create tank mirror c7t0d0 c7t1d0 mirror c7t2d0 c7t3d0 cache c7t4d0 #create your main zpool. This is 4 drives in raid 10 and a read cache. use “log c#t#d#” to add a ZIL device

zfs set dedup=on tank #enable dedup

zfs set compression=on tank #enable compression.

Note that changes made to the pool will apply to its children when they are created.

zfs create tank/VMOS #create your ESXi share

zfs set sharenfs=none,nosuid,root=1.2.3.xx:1.2.3.xy tank/VMOS #share with 1.2.3.xx and 1.2.3.xy

From esxi 4.1:

esxcfg-nas -a -o IP.Or.Host.Name -s /tank/VMOS [esxiDatastoreName]#

ZFS /Solaris links

iSCSI - Solaris 11 = use COMSTAR.

Setting up Hyper-V with NAT

This post was originally posted by me at

I’ve edited out the ServerBeach specific stuff and will post pictures…. soonish.

The following link has some great pictures not included here.¬†…h-hyper-v.aspx

I’ll add some nice little pictures here once I get some screenshots together.


1. Configure an “Internal” HyperV network
2. Set each Virtual Machine to use the Internal network and assign them and your HyperV host on the correct subnet (in this example for the host and for the VM).


1. Click -> Start -> Administrative Tools -> Routing and Remote Access
2. Right Click on Server#### (local) -> Configure & Enable Routing & Remote Access
3. Click -> Next on Welcome Window
4. Select Custom Configuration Click -> Next
5. Select NAT Click -> Next
6. Select your public interface
7. Select your Internal HyperV interface
8. Select “I will set up name and address services later” Click -> Next
9. Click -> Finish


1. Routing and Remote Access should be running on the server now
2. Expand out the Server
3. Expand out IP Routing
4. Select NAT/Basic Firewall
5. Right-click your public interface. Select properties
7. Network Address Translation Properties Window will open
8. Select Radio Button for “Public Interface Connected to the Internet”
9. Select the check box for both “Enable NAT on this interface”
10. Click on the Address Pool Tab
11. Click the Add button and add your secondary IP addresses. The “Start Address” and “End Address” will be the same in most cases.

*NOTE* You do not want the secondary IP address configured in the TCP/IP Properties of the Host machine.

12. Click the Reservations button and enter your static IP mappings. That is, specify that you want traffic on your secondary IP mapped to your VM’s internal IP.
13. In services.msc, make sure that RRAS is set to start automatically and Windows ICS is disabled.


When configuring and experimenting with the RRAS firewall, create a batch file to stop the service in case you forget to allow RDC or otherwise render the system inaccessible.


net stop “remoteaccess”

Then add the batch file to the scheduler and have it run some time after you apply your changes.


RRAS is really finicky about the interfaces installed on the server. If an interface is changed in any significant way, it’ll have to be disabled and reconfigured.

Hyper-V is also similarly finicky about its virtual networks. I can’t count the number of times I had to remove and recreate networks. Thankfully, this was rather painless with only one VM to propagate changes to.

If you should encounter any difficulties with adding your additional VMs to the server, try resetting HyperV networking, individual VM network binding (in the VM’s settings), confirming physical host interfaces, and then reconfiguring RRAS in this order.


Those who have had HyperV configuration problems solved it by disabling TCP/Offload Engine. Symptoms include, RRAS just not working, or working sporadically. If in doubt, disable TCP/Offload Engine…8-d22aca6154ee…b;EN-US;904946

So if this applies to you, run on the host and on any 2008 VMs:

$ netsh int ip set global taskoffload=disabled

and add the following registry key to any 2003 VMs:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters\DisableTaskOffload

This is a DWORD entry that should have a value of 1.