Tag Archives : Storage

Server and Storage Tuning

This week at work, I’ve spent a fair amount of time working in the infrastructure space as we conducted a review of SQL Server and the underlying network infrastructure.  As always, it inspired me to take a look at my home configuration – and do some tinkering.

NIC Teaming

The first thing which piqued my interest, was that Windows Server 2012 (and R2) now supports native NIC teaming – particularly for use in Hyper-V.   I have a quad port PCIe adapter which features 4x1GB ports – just begging to be teamed.


So I began there.  As you can see from the screenshot above, I achieved the desired outcome, but I’m still awaiting the performance counter results which will show how well it performs during “normal” usage.

Networked Storage

My next stop is with networked storage.  As you’ll know, I have a Thecus NAS which is utilized as a central location for storage.  I’ve been using the NAS directly via a twin port (2x1GB) native load balanced NICs, but decided to check out the iSCSI provisioning option to map the storage as a native drive.

Using the remaining free space (360 GB), I configured the server to use the iSCSI target.  It worked, and I’m getting pretty fancy I/O results – ~84MB/s transfer rates:


So that’s what my evening’s been like today..  If you’re interested in finding out more about either NIC teaming or iSCSI provisioning, get in touch and I’ll write a more detailed article on what I did – and how it’s worked out!!

In terms of ACTUAL throughput (rather than Windows’ occasional inaccurate estimates), I used a tool from here: http://www.attotech.com/disk-benchmark/

The results are a lot closer to reality – about 100 MB/s read and 60 MB/s write:


However, to put the results in context, I did the exact same benchmark against a local SanDisk 480GB (SDSSDX480GG25) SSD drive on the same server and the results were about 250 MB/s read and write:


Theoretically, I could possibly get more juice out of the iSCSI target if I NIC teamed the server, but I’m reserving the teaming for the Hyper-V Network Switch, since the base OS doesn’t need much network love directly.

Data Maintenance with a NAS

Over the past week, I’ve been attempting to get around to some cyber-housecleaning.  As you may know from previous articles, I have a networked-attached storage (NAS) storage device by manufacturer Thecus which has 5x 2 TB drives configured in RAID-5 array.

I’m always outage/data-loss conscious, so I implement a somewhat rigorous backup process from time to time – usually bi-annually. This year, I’ve managed to offload (by burning to BluRay discs and then moving to an external HDD) and create nearly 3 TB in free space.  Using the impressive WinDirStat utility (which is free), I’m able to get a graphical view of storage allocation:


It is very nice and somewhat rewarding to see that massive grey box full of unallocated storage!  Now if only I could keep my office as neat and tidy..

Here’s a Visio diagram representing the current allocation of storage:


AZR324 – Mobile + Cloud: Mobile Apps with Windows Azure

So, you’re building apps that span multiple devices and you’re curious about what the cloud can offer. Is it possible to deploy scalable web apps and services on Windows Azure? How about storing data in the cloud? Is it possible to use the cloud for push notifications to the device? In this session, learn how to build Windows Phone, Android and even iOS apps that are backed by scalable cloud services with the Windows Azure platform.

Presented by Wade Wegner

Disclaimer: These are conference session notes I compiled during various sessions at Microsoft Tech Ed 2012, September 11-14, 2012.  The majority of the content comprises notes taken from the presentation slides accompanied, occasionally, by my own narration.  Some of the content may be free hand style.  Enjoy… Rob

Follow me on Twitter @ausrob

Entered late to the session…A session on building mobile applications for Windows Azure.

Storage Options

Storage Secrets – Authentication

Azure – storage name & key
SQL Azure – username & password (note: now named: Windows Azure SQL Database)

How to avoid storing storage credentials in a client app?

  1. Proxy the requests (via a WCF service, for example)
  2. Shared access signature (generates a sort of one time password)
    1. Device addresses storage directly

[Demo]  Using Shared Access Signature

  • Using NuGet Azure Storage package
  • Can query with REST based request
  • Can return XML or JSON
  • Returns shared access signature, client then directly requests data from Azure

Switched to Windows Phone 7 application (client).

  • Using NuGet Phone.Storage package
  • Target .Net 4.0 today unless you ship the 4.5 Framework
  • Windows Azure Storage Proxy (Cloud Services) NuGet Package
  • Storage Initializer is included.  Use it to change how storage is resolved (local or Azure)
  • Storage Service can be configured to point to the Azure Storage (using standard connection configuration)

Identity Provider Options

  • Create your own (e.g. ASP.net membership)
    • Additional scope/effort/testing
  • Use existing identity system (Facebook, LiveID etc)
    • APIs change, needs to be managed
  • Outsource identity management (Access Control Service)
    • Extra cost?
    • Allows larger base of federated identity providers
    • Claims!

Many factors to consider – management, attack vector, etc

  • Windows Identity Foundation provides claims aware capability.

[Demo] Using Access Control Service  (ACS) from Windows Phone using NuGet.

  • Demo will show how to pass an oAuth token to an Azure Service
  • Get access to the Access Control Service via the Azure Portal (Preview)
  • Create a service namespace
  • Set Identity Providers (i.e. federated identity providers, e.g. Google, Yahoo etc)
  • Add relay/realm details (sets routes, tokens supported), signing token
  • Add rules (map claims from provider to claims in an application)
    • Can be done by hand, or generated as default rules (e.g. email address –> email address)
  • Done.. consume away!

Service side – using a Delegating Handler (System.Net.Http) to validate the token before further requests are made.  Looks at request header coming in, validate token and verify against the ACS. 

Library: “Simple Web Token” (Open Source – NuGet package?) can be used to validate oAuth (simple web tokens) against the ACS.  Need to use the signing key to verify oAuth tokens against the ACS (using the previously mentioned library).

Signing key is embedded as a hash in the incoming oAuth token, FTW!  Incoming messages now are checked the header for the oAuth.  Client application now needs to pass along the token provided by the access control service.

Using ‘ACS Control for Windows Phone (NuGet).  Get the token from Application.Current.Resources.
Add to the header request.  Simple!


  • Device-initiated (pull)
  • Cloud-initiated (push)

Device:  Wire format choices (SOAP, JSON, POX)
Cloud: Notification (Toast/Title, Tile) and Raw – note: no guarantee of delivery

Subscribing to Push

  1. Device requests a channel
  2. NS returns channel (register device)
  3. Channel URI is stored in cloud
  4. Use channel URI to push message to device (via notification service)

Data is limited (payload can be small)
Cloud initiated message can act as a pointer to direct devices to larger data

Web Role -> NS -> Device -> Ckoud/Service

There are a number of Push Notification Services available, e.g. For Windows 8: Windows Push Notification Service (WNS)


Platform Services

“Application Building Blocks”

  • Windows Azure Traffic Manager (Global Traffic Manager, load balance)
    • at the DNS level,
    • route request to closest PoP
  • Distributed In-Memory cache
  • Messaging (queues) e.g worker roles with async update
  • Identity
  • Windows Azure Media Services (cloud transcoding as a service)
  • Content Delivery Network (static content, geo-located)
  • On-premise access


  • NuGet Packages
  • iOS Tools (GitHub)
  • Android (Eclipse project)


Reviewed Storage, Identity and Application Blocks.  That is all.