Friday, 26 May 2017

Automating VNX Snapshots with EMC Storage Integrator Powershell

I've been working on automating snapshot creation for a bunch of datastores for one of our applications. In the past I would have written a PowerShell wrapper for the old Navisphere CLI, but I thought I would check to see if the PowerShell module for EMC VNX had gotten any better.

It has! Very much better!

Some of the nice features I have noticed while working on this script:
  • You can connect to multiple storage arrays and search for LUNs across arrays.
  • Once you have the LUN objects you can work on them and not need to care which SAN they are on.
I have published the script here on my GitHub.

The script is intended to be scheduled to run on a daily basis and will automatically clear any snapshots older than the 'expireDays' parameter.

The script will detect which type of LUN is passed in and will create a pool based snapshot for pool LUNs and a SnapView snapshot for RAID based LUNs.

Comments and improvements always welcome.

An example for running the script follows:

Wednesday, 24 May 2017

Study Guide for Azure 70-533 (November 2016 Revision)

Sites that I used:

Azure Fundamentals Book (Second Edition) - Great overview covering many of the topics.

Gareth Jones' blog - Excellent selection of links for each of the topics on the official syllabus. Do not under estimate this page!

70-533 Official Microsoft Syllabus - Make sure you're up to date with any recent changes.

Azure MOOC on openedx - Lots of online courses with exams, labs, video and text. Some of the courses listed below might go into too much detail, but if you go into them with the official syllabus in mind they are a great resource.

Design and implement Azure App Service apps (15–20%)

MOOC - Azure206x

Create and manage Azure Resource Manager Virtual Machines (20–25%)

MOOC - Azure202x

Design and implement a storage strategy (20–25%)

MOOC - Azure205x

Implement an Azure Active Directory (15–20%)

MOOC - Azure204x

Implement virtual networks (10–15%)

MOOC - Azure203x

Design and deploy ARM templates (10–15%)

My ARM Templates Guide
ARM Template Walkthrough
Azure RBAC Custom Roles

Channel 9 Exam Prep Guide - Well worth an hour of your time, excellent video!

Azure Maximums - No need to put too much attention on these, but an overview is nice to have.

Azure Portal and Classic Portal - Make sure to play around.

IT Pro Cloud Essentials - Great resources for Azure, free credits, free access to learning materials etc.

Visual Studio Dev Essentials - More resources, more free Azure credits and learning resources!

The official MS practice test - Super useful to see where you need to study. I got mine as part of the Azure Single Pack exam.

Thursday, 18 May 2017

What to expect from a Pearson VUE Microsoft Online Proctored Exam

Before your exam

Booking your exam.

I found out the hard way that you need to pre-schedule the slot for your exam. It's not a case of turn up and click start - you need to book it at least a day in advance or all the morning slots will be gone.

System Tests

Make sure to run the test available here

If you're planning to take this test at work you should attempt the tests from the exact meeting room that you plan to do the exam from. I would also suggest you try it an hour before your exam so that you can be sure the connection will work. You should run the test all the way to the end, paying special attention to the video test which counts down from 30.

If this part of the test does not work, it's probably because you are behind a proxy or your network isn't allowing port 1935 out to the internet.

Workspace for the exam

If anyone is detected in your workspace they will cancel your exam. You are recorded on webcam for the duration of the exam.

Make sure you book a quiet, out of the way meeting room with opaque walls and a door - Put some signs on the door to state that an exam is in progress and not to knock or disturb. Make sure the room doesn't have any posters up on the wall or writing on whiteboards etc. The desk or table you are using must be completley empty apart from your machine.

The full examination protocol is available here. There are a lot of rules so make sure you read them carefully.

On the day of your exam

Turn up to your meeting room early so you can run the system tests and still have time to get some network support before your time runs out! Close down any applications like Lync and other background apps.

Once you have completed the tests then you can login to the Microsoft exams and benefits dashboard and click through to start a pre-scheduled exam. You can click the begin exam button 30 minutes before your scheduled start time. I would suggest doing this as it took about 25 minutes from when I was first connected to a greeter for him to release my exam.

You'll need to perform a room scan with your webcam and I was asked to take another photo of my ID with my smartphone as the one taken through the software was not good enough.

Once you are through with all of the pre-exam checks your greeter will release your exam. It took a couple of attempts for me to start my exam due to running executables like bginfo and some other background tasks that were running on my work laptop. You'll be asked to kill any disallowed executable with Task Manager.

Would I use this service again?

Yes! After the teething problems I had, it took me 3 attempts to start my exam, but now I know the procedure, I would be happy to use it again.

Thursday, 4 May 2017

Azure Portal - Virtual Machine Diagnostics Settings Blade not loading

I have noticed recently on quite a few of my VMs (specifically Windows 2012 R2 VMs, not sure about Linux) that the diagnostic settings blade won't load. The dots at the top of the blade keep moving but nothing ever shows.

To work around this issue, you can enable the diagnostics using the Boot diagnostics blade. Click on the Boot diagnostics tab:

Click the label that shows 'Click here to enable it'

Switch the Status to on, select a Storage Account and click Save

Once the setting has saved, you will now be able to open the Diagnostics settings blade and enable / disable diagnostics at will.

Thursday, 13 April 2017

Microsoft Azure L-Series Local SSD Performance

I wanted to take a quick look at the new L-Series local SSD performance. It's worth noting that this storage is the non persistent, 'temporary' D: drive on the VM so should only be used for cache data that can be easily recreated.

According to Microsoft the local SSD performance is dependent on the machine type:

"The cache is subject to separate IOPS and throughput limits at the VM level, based on the VM size. DS-series VMs have roughly 4,000 IOPS and 33 MB/s throughput per core for cache and local SSD I/Os. GS-series VMs have a limit of 5,000 IOPS and 50 MB/s throughput per core for cache and local SSD I/Os."

I did a couple of IOMeter tests to check sequential and random performance of the drive. I used 4 workers with 1 outstanding IO each on a 20 GiB test file. I tested both the L4 and L16 instance sizes.

L4, Sequential Read: Roughly 200 MiB per second (32 KiB, 100% Read, 0% Random,) Writing out the test file ran at just over 200 MB/sec.

L4, Random Read: gets roughly 20k IOPS

L4, Random Write: also gets roughly 20k IOPS

So it appears that the throughput is being throttled due to the very predictable performance figures being seen. Looks like the throttle for these VMs is set the same as the GS series VMs at 5,000 IOPS or 50MB/sec per core.

I have also performed the same tests on an L16 server which has 16 cores and 2.8 TiB of local SSD to see if they are throttled at the same level. I used the same tests as the L4 server with the exception of using 16 workers. Using only 4 workers on this VM resulted in significantly worse performance to 16 workers. Perhaps the throughput throttling is actually working at the core level?

In theory these results should be 800 MB/sec sequential reads or 80,000 random IOPS.

Writing the test file out was running around 620 MB per second (using 4 workers). Because of this, I've included a sequential write test with 16 workers since this is a bit worse than expected.

L16, Sequential Read

L16, Sequential Write

L16, 4k Random Read

L16, 4k Random Write

L16, 4k Random Write using only 4 workers 
results in significantly worse performance, although it doesn't scale linearly with worker count. We are still seeing 45,000 IOPS with this worker configuration. 



From the tests we can see that performance scales linearly with core count. An interesting note is that the worker count is very important to get full performance from the drive. This would translate to setting the correct thread count in SQL Server or similar.

The L-Series local SSD and cache appears to perform the same as the GS series VMs. It appears that Microsoft is delivering on the stated IO figures very well with low average latency of less than 1 ms.

Thursday, 16 February 2017

Active Directory Users and Computers not showing all tabs in Windows 10 build 1511

Missing tabs in AD Users and Computers (dsa.msc) in Windows 10 build 10586 (1511). Also unable to perform certain actions in AD Users and Computers.

Problem is with the latest RSAT KB

  • Start > Type Features, Click "Turn Windows features on or off"
  • Uncheck Remote Server Administration Tools, Click OK.
  • Open administrative command prompt and run:

wusa /uninstall /kb:2693643 /norestart

  • Reboot the computer
  • In "Turn Windows features on or off", "Remote Server Administration Tools" should no longer be available. 
  • Download and install the old RSAT version from
Credit: jletellier on SpiceWorks

  • Check RSAT is now ticked in "Turn Windows features on or off"
  • Run dsa.msc
  • Check version in Help > About AD Users and Computers - should now be 10.0.10585.0 and should now show all tabs.

Reference: SpiceWorks Thread

Tuesday, 14 February 2017

PowerShell DSC Extension in Azure Resource Manager - PowerShell Method

Here are the steps I took to get the PowerShell DSC Extension for Azure Virtual Machines working using the PowerShell publishing method. In another post, I'll go through the JSON template method.

First, create an Azure VM using whichever method you prefer. I used the portal for simplicity. Most of my settings won't affect this, but for completeness, the settings I used for my VM are as follows:

Image: Windows Server 2016 Datacenter
Deployment Model: Resource Manager
Name: MyCoolVM
Disk Type: HDD
User name: Dave
Password: hunter2
Resource Group (New): DSC-Test-Resources
Location: North Europe
Size: A1 Basic
Settings Tab: All defaults except monitoring disabled.
Storage Account Name: dsctestresourcesdisks871

After creation, I opened the VM's network security group and added an inbound rule to allow port 80. I also added a DNS alias to the machine's public IP.

Once the VM is set up, open a text editor and create the following example DSC file:

In the same folder, make a deployment script as follows: 

The first command will publish the DSC configuration into a Zip file in your Azure storage account and return a predictable URL. The resulting blob will not be public.

Mine ended up here, but you can see the format which appears to use the normal blob URI and the powershell-dsc container:

A few seconds after the second command executes, you can see the new extension in your VM in the portal.

The status will move from (unavailable), to Transitioning, to Provisioning succeeded (or failed.)

If you click the extension you can get more details on the process, you can view the entire log from this blade.

And here is the finished web server:

Start to finish, including manual creation of the VM, this process took about 20 minutes.

If you use additional non-standard DSC resources, the PowerShell publish command will include the modules in the uploaded Zip file which is super handy.

Introduction to the Azure Desired State Configuration extension handler