EON Stuff for vmware, and storage for opensolaris

EON rocks, its kinda hard to setup, but its freaking rock solid and has dedup

#########test wont work will later

mount -t nfs /mnt
zpool iostat -v zfs-hybrid 5

How do I start NFS server services?
First, import the services
cd /var/svc/manifest/network
svccfg -v import rpc/bind.xml
svccfg -v import nfs/status.xml
svccfg -v import nfs/nlockmgr.xml
svccfg -v import nfs/mapid.xml
svccfg -v import nfs/server.xml
Then, enable them
svcadm enable -r nfs/server
or individually
svcadm enable rpc/bind
svcadm enable nfs/status
svcadm enable nfs/nlockmgr
svcadm enable nfs/mapid
svcadm enable nfs/server

#finds all the disk
#makes partitions for the slog l2arc/zil

zpool create zfs-hybrid raidz c1d0p0 c2d0p0 c5d0p0 c6d0p0

zfs create zfs-hybrid/vms

zfs set compression=on zfs-hybrid
zfs set dedup=on zfs-hybrid

zfs set sharenfs=on zfs-hybrid/vms

zfs set sharenfs=rw,nosuid,root= zfs-hybrid/vms


zpool add zfs-hybrid log /dev/dsk/c3d0p1
zpool add zfs-hybrid cache /dev/dsk/c3d0p2

zfs create -V 500G -b=128k pool/name
itadm create-initiator iqn.1991-05.com.microsoft:mailbox01-node1.flinetech.ca
sbdadm create-lu /dev/zvol/rdsk/zsan00store/mbx01-node1
stmfadm create-hg zsan00server-hg
stmfadm add-hg-member -g zsan00server-hg iqn.1991-05.com.microsoft:mailbox01-node1.flinetech.ca
stmfadm create-tg tg-mbx0-node0

itadm modify-target -n iqn.1986-03.com.sun:02:mbx01-node01 iqn.1986-03.com.sun:02:4b6f1bdc-86ca-611d-92eb-d840016fab80
stmfadm add-tg-member -g tg-mbx0-node0 iqn.1986-03.com.sun:02:mbx01-node01
stmfadm add-tg-member -g tg-mbx0-node0 iqn.1986-03.com.sun:02:mbx01-node01

stmfadm add-view -h zsan00server-hg -t tg-mbx0-node0 -n 1 600144F0CC12CC0000004A9036D30001
stmfadm list-view

stmfadm create-hg test-hg

itadm create-initiator iqn.1998-01.com.vmware:esx-02-0b27d1f5
itadm create-initiator iqn.1998-01.com.vmware:esx-01-0d95e7a9

stmfadm add-hg-member -g test-hg iqn.1998-01.com.vmware:esx-02-0b27d1f5
stmfadm add-hg-member -g test-hg iqn.1998-01.com.vmware:esx-01-0d95e7a9
stmfadm create-tg esx

#itadm create-target

itadm modify-target -n iqn.1986-03.com.sun:02:esx-vol1 iqn.1986-03.com.sun:02:8fba33b4-5e51-ea80-a5fc-d4364afd16b1
itadm modify-target -n iqn.1986-03.com.sun:02:esx-vol1 iqn.1986-03.com.sun:02:21b5da92-8eae-4c74-a214-8a1d29c7ee72

stmfadm add-tg-member -g esx iqn.1986-03.com.sun:02:esx-vol1

stmfadm add-view -h test-hg -t esx -n 1 600144f0998dc30000004bb0ed7d0001

stmfadm list-view -l 600144f0998dc30000004bb0ed7d0001

itadm create-initiator iqn.1998-01.com.vmware:esx-01-0d95e7a9
stmfadm add-hg-member -g test-hg iqn.1998-01.com.vmware:esx-01-0d95e7a9

#fix after power outage!
stmfadm list-lu -v
stmfadm import-lu /dev/zvol/rdsk/zfs/iscsi

Finding stuff in all the cool datastores you never knew you had (or that you knew you had, you just really didn’t want to click alot)

Lucd has been my number one source of scripts for pretty much like ever. He is always willing to helping out in the community, uber smart and knows his stuff. I often will use his scripts to start and do something else with them, mostly because I don’t know how, and I am lazy. his most awesome script was something that i started to do, and did back in bash in the good ol esx days, since esx pretty much is dead (it’s about freaking time), i needed to convert it PS to make it work, but low and behold, he already did it.

Here. Raiders of the lost VMX

These things are amazing for scripting DR when the client just isn’t big enough to justify SRM

Anywho how this started is I recently had a client’s site the VDR appliance blow up and start making snapshot files with failing the snapshot, since it failed it never removed the vmsn files, and it was only on a few particular datastores. I am not gonna name names, but I’m 99% sure it had to do with the buggy 5.0.1 equallogic firmware and its Atomic Lock and Set, but now that that is fixed its pretty freaking awesome.
so with the permission of LucD himself, here is the modified script to look for vmsn files plus all the other cool stuff it could do beforehand!

without more delay, here it is!
function Register-VMX {
param($entityName = $null,$dsNames = $null,$template = $false,$ignore = $null,$checkNFS = $false,$whatif=$false,$snapshot = $false)

function Get-Usage{
Write-Host "Parameters incorrect" -ForegroundColor red
Write-Host "Register-VMX -entityName -dsNames [,…]"
Write-Host "entityName : a cluster-, datacenter or ESX hostname"
Write-Host "dsNames : one or more datastorename names"
Write-Host "ignore : names of folders that shouldn’t be checked"
Write-Host "template : register guests ($false)or templates ($true) – default : $false"
Write-Host "checkNFS : include NFS datastores – default : $false"
Write-Host "whatif : when $true will only list and not execute – default : $false"
Write-Host "snapshot : finds vmsn files if set to ($true) – default : $false"

if($entityName -ne $null -and $dsNames -ne $null){

if($dsNames -eq $null){
switch((Get-Inventory -Name $entityName).GetType().Name.Replace("Wrapper","")){
$dsNames = Get-Cluster -Name $entityName | Get-VMHost | Get-Datastore | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}
$dsNames = Get-Datacenter -Name $entityName | Get-Datastore | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}
$dsNames = Get-VMHost -Name $entityName | Get-Datastore | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}
$dsNames = Get-Datastore -Name $dsNames | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}

$dsNames = $dsNames | Sort-Object
$pattern = "*.vmx"
$pattern = "*.vmtx"
$pattern = "*.vmsn"

foreach($dsName in $dsNames){
Write-Host "Checking " -NoNewline; Write-Host -ForegroundColor red -BackgroundColor yellow $dsName
$ds = Get-Datastore $dsName | Get-View
$dsBrowser = Get-View $ds.Browser
$dc = Get-View $ds.Parent
while($dc.MoRef.Type -ne "Datacenter"){
$dc = Get-View $dc.Parent
$tgtfolder = Get-View $dc.VmFolder
$esx = Get-View $ds.Host[0].Key
$pool = Get-View (Get-View $esx.Parent).ResourcePool

$vms = @()
foreach($vmImpl in $ds.Vm){
$vm = Get-View $vmImpl
$vms += $vm.Config.Files.VmPathName
$datastorepath = "[" + $ds.Name + "]"

$searchspec = New-Object VMware.Vim.HostDatastoreBrowserSearchSpec
$searchspec.MatchPattern = $pattern

$taskMoRef = $dsBrowser.SearchDatastoreSubFolders_Task($datastorePath, $searchSpec)

$task = Get-View $taskMoRef
while ("running","queued" -contains $task.Info.State){
foreach ($folder in $task.Info.Result){
if(!($ignore -and (&{$res = $false; $folder.FolderPath.Split("]")[1].Trim(" /").Split("/") | %{$res = $res -or ($ignore -contains $_)}; $res}))){
$found = $FALSE
if($folder.file -ne $null){
foreach($vmx in $vms){
if(($folder.FolderPath + $folder.File[0].Path) -eq $vmx){
$found = $TRUE
if (-not $found){
if($folder.FolderPath[-1] -ne "/"){$folder.FolderPath += "/"}
$vmx = $folder.FolderPath + $folder.File[0].Path
Write-Host "`t" $vmx
write-host " Snapshot file found" -ForegroundColor blue -BackgroundColor white
$params = @($vmx,$null,$true,$null,$esx.MoRef)
$params = @($vmx,$null,$false,$pool.MoRef,$null)
if((!$whatif) -and (!$snapshot)){
$taskMoRef = $tgtfolder.GetType().GetMethod("RegisterVM_Task").Invoke($tgtfolder, $params)
Write-Host "`t" $vmx "registered"
Write-Host "`t" $vmx "registered" -NoNewline; Write-Host -ForegroundColor blue -BackgroundColor white " ==> What If"
Write-Host "Done"

# Register-VMX -entityName "MyDatacenter" -snapshot:$true
# Register-VMX -entityName "MyDatacenter"
# Register-VMX -dsNames "datastore1","datastore2"
# Register-VMX -dsNames "datastore1","datastore2" -template:$true
# Register-VMX -entityName "MyDatacenter" -ignore "SomeFolder"
# Register-VMX -dsNames "datastore3","datastore4" -ignore "SomeFolder" -checkNFS:$true
# Register-VMX -entityName "MyDatacenter" -whatif:$true