Software Defined Storage for SMBs

The days of expensive enterprise arrays within smaller businesses is limited (possibly). Traditional storage vendors like HP, EMC, NetApp, etc., have provided some awesome products in this area, and the competition between them has evolved their solutions even further (dedupe, snap mirrors, geo clusters, flash cache, blah lab).

But suddenly the world of software defined storage (SDS) is taking markets share from these vendors – or threatening to. SMBs are not often awash with capital, and their accountants (normally running the business) are not keen on just letting IT “get on with it”. They want to know where their money is going, and are not sure why they have spend £500k on a new multi site storage array that they “only put in 7 years ago”.

Often I find a lack of foresight in companies where no provision is made on an annual basis to accrue the funds they will no doubt need to replace ANY IT service. So these infrequent large capex requests are not welcome when they do come. What’s my point? Well, I also don’t like traditional enterprise array series of events where we as IT feel compelled to hugely over provision storage requirements for fear of getting any scale up rejected 24 months down the line.

So, what does SDS give us? Well, first it is an easier solution to scale out IMO. Nice linear server by server scaling for compute and storage… Like it. More predictable and palatable capex requirements… Like it. Grow-as-we-need services… Like it. Tigghter integration with my Hypervisor… Like it. Lower skills sets required (remember not all SMBs can afford two dedicated storage gurus!)… Like it.

I’ve been looking at HP’s StoreVirtual VSA and VMWare’s VSAN (version 6 just released), and in principle I like them both. HP’s solution is “easier” from the perspective that there’s no hardware compatibility list (HCL), and it has nice features like adaptive optimisation for auto tiering hot blocks. But this model seems to me to have a limitation for random IO payloads …. It’s too late tiering my random IO after I needed it. However, with VSAN there’s a horribly restrictive HCL and whilst I understand the reasons for this (intense cross vendor hardware checks on disk and controller capabilities like queue length to check their suitability on our behalf) I feel potentially backed into a corner as an architect due to the current lack of supported hardware. For instance right now as I speak there’s NO supported disk controller for HP’s Gen 9 Proliant DL 380. Hmmm. That might change, but trying to covince your CIO to buy into something that might not support our hardware in the next generation is not an easy sell. I don’t like EVO:RAIL for our size environment either, and VSAN Ready Nodes are not available in the UK though good to use as a template build.

But the VM centric structure of VSAN does give it powerful advantages over HP VSA… I love that full integration breaking down the barriers between storage and management. VMWare also have VVOLS now too for extension of that Vm centric model into the traditional storage array.

Anyway, I don’t know where we’ll end up, but SDS has a powerful place in SMBs and I see it taking market share increasingly. Take a look yourself.

Advertisements

PSOD automatic reboots and causing a proactive PSOD in VMWare!

We had an issue with VMWare recently whereby a PSOD was causing an entire blade chassis to misbehave (high latency to other hosts, etc). Shutdown of the PSOD host immediately rectified the issue.

We decided to set a reboot time on PSODs which can be achieved via this command

esxcfg-advcfg -s 30 /Misc/BlueScreenTimeout

(Default is 0)

If you wish to cause a purposeful PSOD to test it you can run this command:

vsish -e set /reliability/crashMe/Panic 1

Showing the Windows language bar for specific users (mainly over Citrix)

Some users require the ability to flick between languages on Citrix applications. Previously we’d disabled the language bar  “pen” completely for all users by creating the SeamlessFlags=0x004000 in the registry. However, we later wanted some users in satelitte offices to have the feature.

Step 1 Remove the seamlessflags=0x004000

Step 2 Set the following registry values for everyone (via GPO, or Desktop Authority, etc):
Image

Step 3 Set the following registry values for those you wish to see the floating language bar (via GPO, or Desktop Authority, etc):
Image

 

Testing web page with Powershell

I needed to test a HTTPS web page this week and identify the response times. Here’s how I did it:

$x=1
$target = Read-Host ‘How many queries would you like to run?’
Do{ Write-Host ‘Trying attempt ‘ $x Get-Date | Out-File httptestlogfile.log -append (Measure-Command {Invoke-WebRequest -Uri https://URL -UseDefaultCredentials}).Milliseconds | Out-File httptestlogfile.log -append $x++
}
While ($x -le $target)
Invoke-Item httptestlogfile.log

Setting Outlook Default Font

So, you can possibly use the Office OCT tool to do this at the point of deployment, but we had already deployed our Outlook clients and later needed to set default font to Arial 10.

You can identify the hex values by setting the default fonts in Outlook 2010 File… Options… Mail… Stationary and Fonts, and exporting the below 6 reg keys from HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\MailSettings:

We used Desktop Authority (but you could use GPO) to push out the following registry values in HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\MailSettings:

“ComposeFontComplex”=(REG_BINARY)=3c 68 74 6d 6c 3e 0d 0a 0d 0a 3c 68 65 61 64 3e 0d 0a 3c 73 74 79 6c 65 3e 0d 0a 0d 0a 20 2f 2a 20 53 74 79 6c 65 20 44 65 66 69 6e 69 74 69 6f 6e 73 20 2a 2f 0d 0a 20 73 70 61 6e 2e 50 65 72 73 6f 6e 61 6c 43 6f 6d 70 6f 73 65 53 74 79 6c 65 0d 0a 09 7b 6d 73 6f 2d 73 74 79 6c 65 2d 6e 61 6d 65 3a 22 50 65 72 73 6f 6e 61 6c 20 43 6f 6d 70 6f 73 65 20 53 74 79 6c 65 22 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 74 79 70 65 3a 70 65 72 73 6f 6e 61 6c 2d 63 6f 6d 70 6f 73 65 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 6e 6f 73 68 6f 77 3a 79 65 73 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 75 6e 68 69 64 65 3a 6e 6f 3b 0d 0a 09 6d 73 6f 2d 61 6e 73 69 2d 66 6f 6e 74 2d 73 69 7a 65 3a 31 30 2e 30 70 74 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 66 6f 6e 74 2d 73 69 7a 65 3a 31 31 2e 30 70 74 3b 0d 0a 09 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 41 72 69 61 6c 22 2c 22 73 61 6e 73 2d 73 65 72 69 66 22 3b 0d 0a 09 6d 73 6f 2d 61 73 63 69 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 41 72 69 61 6c 3b 0d 0a 09 6d 73 6f 2d 66 61 72 65 61 73 74 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 4d 53 20 4d 69 6e 63 68 6f 22 3b 0d 0a 09 6d 73 6f 2d 66 61 72 65 61 73 74 2d 74 68 65 6d 65 2d 66 6f 6e 74 3a 6d 69 6e 6f 72 2d 66 61 72 65 61 73 74 3b 0d 0a 09 6d 73 6f 2d 68 61 6e 73 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 41 72 69 61 6c 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 54 69 6d 65 73 20 4e 65 77 20 52 6f 6d 61 6e 22 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 74 68 65 6d 65 2d 66 6f 6e 74 3a 6d 69 6e 6f 72 2d 62 69 64 69 3b 0d 0a 09 63 6f 6c 6f 72 3a 77 69 6e 64 6f 77 74 65 78 74 3b 0d 0a 09 66 6f 6e 74 2d 77 65 69 67 68 74 3a 6e 6f 72 6d 61 6c 3b 0d 0a 09 66 6f 6e 74 2d 73 74 79 6c 65 3a 6e 6f 72 6d 61 6c 3b 7d 0d 0a 2d 2d 3e 0d 0a 3c 2f 73 74 79 6c 65 3e 0d 0a 3c 2f 68 65 61 64 3e 0d 0a 0d 0a 3c 2f 68 74 6d 6c 3e 0d 0a

“ComposeFontSimple”=(REG_BINARY)=3c 00 00 00 1f 00 00 f8 00 00 00 40 c8 00 00 00 00 00 00 00 00 00 00 ff 00 22 41 72 69 61 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

“ReplyFontComplex”=3c 68 74 6d 6c 3e 0d 0a 0d 0a 3c 68 65 61 64 3e 0d 0a 3c 73 74 79 6c 65 3e 0d 0a 0d 0a 20 2f 2a 20 53 74 79 6c 65 20 44 65 66 69 6e 69 74 69 6f 6e 73 20 2a 2f 0d 0a 20 73 70 61 6e 2e 50 65 72 73 6f 6e 61 6c 52 65 70 6c 79 53 74 79 6c 65 0d 0a 09 7b 6d 73 6f 2d 73 74 79 6c 65 2d 6e 61 6d 65 3a 22 50 65 72 73 6f 6e 61 6c 20 52 65 70 6c 79 20 53 74 79 6c 65 22 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 74 79 70 65 3a 70 65 72 73 6f 6e 61 6c 2d 72 65 70 6c 79 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 6e 6f 73 68 6f 77 3a 79 65 73 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 75 6e 68 69 64 65 3a 6e 6f 3b 0d 0a 09 6d 73 6f 2d 61 6e 73 69 2d 66 6f 6e 74 2d 73 69 7a 65 3a 31 30 2e 30 70 74 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 66 6f 6e 74 2d 73 69 7a 65 3a 31 31 2e 30 70 74 3b 0d 0a 09 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 41 72 69 61 6c 22 2c 22 73 61 6e 73 2d 73 65 72 69 66 22 3b 0d 0a 09 6d 73 6f 2d 61 73 63 69 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 41 72 69 61 6c 3b 0d 0a 09 6d 73 6f 2d 66 61 72 65 61 73 74 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 4d 53 20 4d 69 6e 63 68 6f 22 3b 0d 0a 09 6d 73 6f 2d 66 61 72 65 61 73 74 2d 74 68 65 6d 65 2d 66 6f 6e 74 3a 6d 69 6e 6f 72 2d 66 61 72 65 61 73 74 3b 0d 0a 09 6d 73 6f 2d 68 61 6e 73 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 41 72 69 61 6c 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 54 69 6d 65 73 20 4e 65 77 20 52 6f 6d 61 6e 22 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 74 68 65 6d 65 2d 66 6f 6e 74 3a 6d 69 6e 6f 72 2d 62 69 64 69 3b 0d 0a 09 63 6f 6c 6f 72 3a 23 31 46 34 39 37 44 3b 0d 0a 09 6d 73 6f 2d 74 68 65 6d 65 63 6f 6c 6f 72 3a 64 61 72 6b 32 3b 0d 0a 09 66 6f 6e 74 2d 77 65 69 67 68 74 3a 6e 6f 72 6d 61 6c 3b 0d 0a 09 66 6f 6e 74 2d 73 74 79 6c 65 3a 6e 6f 72 6d 61 6c 3b 7d 0d 0a 2d 2d 3e 0d 0a 3c 2f 73 74 79 6c 65 3e 0d 0a 3c 2f 68 65 61 64 3e 0d 0a 0d 0a 3c 2f 68 74 6d 6c 3e 0d 0a

“ReplyFontSimple”=(REG_BINARY)=3c 00 00 00 1f 00 00 f8 00 00 00 00 c8 00 00 00 00 00 00 00 ff ff 00 d2 00 22 41 72 69 61 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

“TextFontComplex”=(REG_BINARY)=3c 68 74 6d 6c 3e 0d 0a 0d 0a 3c 68 65 61 64 3e 0d 0a 3c 73 74 79 6c 65 3e 0d 0a 0d 0a 20 2f 2a 20 53 74 79 6c 65 20 44 65 66 69 6e 69 74 69 6f 6e 73 20 2a 2f 0d 0a 20 70 2e 4d 73 6f 50 6c 61 69 6e 54 65 78 74 2c 20 6c 69 2e 4d 73 6f 50 6c 61 69 6e 54 65 78 74 2c 20 64 69 76 2e 4d 73 6f 50 6c 61 69 6e 54 65 78 74 0d 0a 09 7b 6d 73 6f 2d 73 74 79 6c 65 2d 6e 6f 73 68 6f 77 3a 79 65 73 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 70 72 69 6f 72 69 74 79 3a 39 39 3b 0d 0a 09 6d 73 6f 2d 73 74 79 6c 65 2d 6c 69 6e 6b 3a 22 50 6c 61 69 6e 20 54 65 78 74 20 43 68 61 72 22 3b 0d 0a 09 6d 61 72 67 69 6e 3a 30 63 6d 3b 0d 0a 09 6d 61 72 67 69 6e 2d 62 6f 74 74 6f 6d 3a 2e 30 30 30 31 70 74 3b 0d 0a 09 6d 73 6f 2d 70 61 67 69 6e 61 74 69 6f 6e 3a 77 69 64 6f 77 2d 6f 72 70 68 61 6e 3b 0d 0a 09 66 6f 6e 74 2d 73 69 7a 65 3a 31 30 2e 30 70 74 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 66 6f 6e 74 2d 73 69 7a 65 3a 31 30 2e 35 70 74 3b 0d 0a 09 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 41 72 69 61 6c 22 2c 22 73 61 6e 73 2d 73 65 72 69 66 22 3b 0d 0a 09 6d 73 6f 2d 66 61 72 65 61 73 74 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 4d 53 20 4d 69 6e 63 68 6f 22 3b 0d 0a 09 6d 73 6f 2d 66 61 72 65 61 73 74 2d 74 68 65 6d 65 2d 66 6f 6e 74 3a 6d 69 6e 6f 72 2d 66 61 72 65 61 73 74 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 22 54 69 6d 65 73 20 4e 65 77 20 52 6f 6d 61 6e 22 3b 0d 0a 09 6d 73 6f 2d 62 69 64 69 2d 74 68 65 6d 65 2d 66 6f 6e 74 3a 6d 69 6e 6f 72 2d 62 69 64 69 3b 7d 0d 0a 2d 2d 3e 0d 0a 3c 2f 73 74 79 6c 65 3e 0d 0a 3c 2f 68 65 61 64 3e 0d 0a 0d 0a 3c 2f 68 74 6d 6c 3e 0d 0a

“TextFontSimple”=(REG_BINARY)=3c 00 00 00 1f 00 00 f8 00 00 00 40 c8 00 00 00 00 00 00 00 00 00 00 ff 00 22 41 72 69 61 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

PVS, XenApp 6.5 Memory Optimisation and .Net Applications

…..basically … don’t!

We’ve had huge issues with .Net applications (both in-house and MS) crashing with .Net faults on a regular basis, especially after the provisioned XA6.5 servers have been up for a few days.

Errors like

Event ID 1000
Faulting application name: inhouseapp.exe, version: 2.0.0.0, time stamp: 0x52a6ffa8
Faulting module name: mscorwks.dll, version: 2.0.50727.5472, time stamp: 0x5174dd69
Exception code: 0xc0000005
Fault offset: 0x00009c46
Faulting process id: 0x%9
Faulting application start time: 0x%10
Faulting application path: %11
Faulting module path: %12

Event ID 1000
Faulting application name: inhouseapp2.exe, version: 2.0.0.7, time stamp: 0x52860c2a
Faulting module name: clr.dll, version: 4.0.30319.1, time stamp: 0x4ba1d9ef
Exception code: 0xc0000005
Fault offset: 0x0002c8bc
Faulting process id: 0x18d8
Faulting application start time: 0x01cf1dd20bf4e971
Faulting application path: pathtoexe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 560b3ff1-89c5-11e3-b9f2-52ff862ec9e2
Report Id: %13

After much investigation, we turned off the Citrix Optimisation (default, but enabled prior) and everything now is far more stable.Image

We also found that running the following command on the troublesome XA65 server(s) fixed the issue for a while (no reboot or user logoffs required)

“NGEN Update /force”

Credit to this article for its assistance: http://www.smart-x.com/services/kb/sx125403/

http://support.microsoft.com/kb/2480607/en-us

Interestingly Citrix Support confirmed:

“Memory Optimization Feature has been developed long time ago mainly to be used with Win 2000 and 2003 server. In Win 2008 and later server systems memory optimization is handled well. We can say that it’s an obsolete feature to be used in newer operating systems. Using Citrix Memory Optimization most likely won’t bring substantial performance improvement.”

Generating an NMI system crash dump for a XenServer VM

This is a useful KB from Citrix on forcing an NMI system crash dump. This can be useful when you have application/memory issues that you want to capture in the kernel memory.dmp for analysis by Microsoft

http://support.citrix.com/article/CTX123177

WMI Filters and Testing

Many of you may have come across WMI Filters before – these are basically Microsofts extensions for querying system properties and can be used (for instance) to filter the scope of a Group Policy.

A useful tool to test WMI queries os wbemtest – this can be run from a Windows 7 device. It looks like this:

wbemtest1-a

You can select CONNECT and append “\\remotemachinename\” to the Namespace field, and provide admin credentials to connect

wbemtest2-a

After this, you can enter your WMI query to see the results when run against this remote device:

wbemtest3-a

You can then create the WMI filter in Group Policy Management console

wmi-1

………..and apply that to any GPO you have created:

wmi-2

A couple of useful WMI filters are:

Computer with Windows XP: select * from Win32_OperatingSystem where (Version like “5.1%”)

Computer running 64Bit OS: SELECT * FROM Win32_Processor WHERE AddressWidth=64

Computer running 32Bit OS: SELECT * FROM Win32_Processor WHERE AddressWidth=32

Laptop: Select * from Win32_Battery WHERE (BatteryStatus <> 0)

Computer running 2008 R2: select * from Win32_OperatingSystem where ProductType = “2” or ProductType = “3” and Version like “6.1%”

Computer with specific name syntax match: Select * from Win32_ComputerSystem WHERE (Name like “US-DESK-%”)    – This would look for computers with name US-DESK-*

Another great tool is WMIFTest which is available here: http://gpoguy.com/free-tools/free-tools-library/wmi-filter-validation-utility/

Disabling Java Version Check

You may find that users get prompted with a rather irritating prompt if their installed verison of Java is “out of date”:

java update dialog

For Windows clients that have Java 7 U40+ installed, there’s a nice way to disable this.

Firstly create a deplopyment.config file and place it somewhere like C:\Windows\Sun\Java\Deployment with the following content:
deployment.system.config=file:///C:/Windows/Sun/Java/deployment.properties

1

Now create a deployment.properties file in the same location with this setting:deployment.expiration.check.enabled=false

2

Outlook 2010 Suggested Contacts

Microsoft listened to customer wish-lists a few years ago and introduced a feature in Outlook 2010 called Suggested Contacts – this feature automatically adds new contacts when you send emails to “new” recipients that are not in your corporate address book.

Well, I believe it caused a few issues and was not included in Outlook 2013.

Anyway, we wanted to disable this feature, which can be done by setting the following registry value:

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\14.0\Outlook\Contact]
“CreateContactsForOneOffs”=dword:00000000