8GB FC, 16GB FC, 10GBe iSCSI or 1GBe iSCSI. Which is right for your storage area network?

This is something that I’ve had a lot of first hand experience in, and it’s something that I’ve taken quite a bit of time to look in to as well. The answer to this question is going to be the basis of this write up, and if you don’t really want to read much further, I’m just going to say this: it really depends on your environment. There are pro’s and con’s to each of these, and we’ll hit each of them.

First off, if you are considering upgrading your main storage array, chances are that you are also going to be looking at an entirely new storage networking infrastructure. The reason for that is that things are evolving pretty fast in the storage area network world. The seemingly affordable 10GB ethernet is making a dent, 16GB fibre channel has hit the market (though not strictly affordable for a business our size) and storage arrays featuring each of these are a possibility.

My first major suggestion: do some heavy monitoring of your current environment. See where your peaks are and where your low times are. See how much storage bandwidth you are currently using. Watch your disk queues and see if there are reads or writes just sitting in the pipe waiting to get served up.

Let’s talk about bottlenecks for a second. Bottlenecks can happen at three main places: the server, the switch, or the array, and most bottlenecks happen either at the network or storage array. Sometimes they can be caused by network misconfiguration or by the actual disk in the storage array not being able to keep up with how fast you are requesting reads writes. Sometimes these bottlenecks can be misinterpreted by monitoring as well.


I’ll give you a quick inside tip: getting relatively high IOPs does NOT depend on the speed of your storage area network. Of course, you do need bandwidth for sustained transfer speeds (if you are doing large reads and writes), but if your traffic is bursty and requires some relatively high IO in short bursts (SQL Server comes to mind), you don’t need a lot of bandwidth. What you need is fast response time and fast IO. Now, that being said, how do you get high IO over… let’s say 1GBe? It’s all in how the array handles your IO.

Let’s say for example that you are disk bound (this meaning that the disks in your array just can’t keep up with the reads and writes, which is a fairly common issue among all spinning drive arrays, unless you have enough spindles to keep up with it or a fat read / write cache). Basically what this means is that as your servers are pushing out writes and trying to get reads and the disks just can’t keep up with how fast you’re trying to push / pull the data – this means that your storage bandwidth is not an issue – its the actual storage array that is having trouble filling that bandwidth – though monitoring may interpret that as bandwidth lag, because you’ll see your storage bandwidth being hit kind of hard because the network is waiting to get reads and writes.

Monitoring is essential, but it’s also VERY important to know how to interpret your monitoring – you need to monitor multiple places – your network, your servers, and your storage and be able to interpret all that data. Most ethernet and fibre channel switches have SNMP on them which can be used to monitor specific ports. ESXi has many types of monitoring you can use – from things like VMTurbo to Operations Manager. Using SNMP and a graphing program like LogicMonitor or Observium you can really drill down to the port level and see which servers are using a lot of bandwidth and / or storage utilization.

When you get a nice array on the back end, you’ll be shocked at how little bandwidth it actually takes to get pretty high IO, but monitoring, when selecting a storage area network, is your best friend. You need to know you current environment and not really listen to the salesperson. The salesperson is trying to sell you something and you are trying to make the best purchase for your environment. In this case, you need to know as much about your environment as possible so that you don’t spend a ton of money on things that you will under utilize.

There does need to be happy medium though between growth potential and your current bandwidth. If you are planning on growing to more servers and more IO, you need to plan accordingly.

Set Up Server 2012 R2 HyperV Cluster for VDI (GUI) / Prequisites


As you guys may or may not know, I’ve worked on deploying a HyperV Cluster with some pretty nice video cards for VDI. I’ll walk you through exactly how this is set up. There are a couple of prerequisites though, and failure to follow these will definitely give you a less than optimal experience. It’s really not been bad though there have been some hiccups in it due to some less than optimal configuration. When it comes to servers and Linux VMs, I am definitely a VMware fanboy, but for running Windows Server, and more importantly, Virtual Desktops, HyperV is certainly formidable.

  1. A pair (or more) of Enterprise Grade servers (we are using a pair of HP ProLiant DL360 G7s) – probably a good idea to make sure they use the same CPUs with the same Stepping.
  2. I would think at least 16GB of RAM a piece – HyperV’s “Dynamic Memory” really helps limit memory usage, but you still want enough to be able to run all your VMs on one host, so keep that in mind
  3. CPUs that Support SLAT (Second Level Address Translation) – only if you want to take advantage of RemoteFX – which I would highly recommend if you’re doing VDI. It’s called EPT on Intel Processors and AMD-V on AMD Processors. Most newer processors have this technology (2012 +)
  4. Some Video Cards – You want AMD FirePro v5800 or better or Nvidia Quadros – which are expensive as crap. See the full list here. It’s said that any DirectX 11 GPU will work, so you could use desktop video cards as well, but make sure they are beefy enough – as in 1GB VRAM or more (depending on how many Virtual Desktops). Also make note of the power requirements. Some of these new servers come with 400 or so watt Power Supplies, and you’ll want a bit more than depending on the load. I think that you could run about 10 or so RemoteFX sessions per 1GB of VRAM. I may be wrong there, but that is just a rough guess.
  5. 3 NICs at a minimum. 1x for Public, 1x for Cluster Communication and Live Migration, and 1x for VM traffic. If you are using LAN based storage (iSCSI, SMB) you’ll want some NICs dedicated to that
  6. Shared Storage – Either FC, FCoE, iSCSI, SAS will even work if you have an enclosure and some SFF 8088 SAS cards laying around.
  7. Licenses for 3x Windows Server 2012 / 2012  R2 Servers (you’ll also need to set up a Remote Desktop Session Host, Remote Desktop Licensing Server, Remote Desktop Web Access (optional), and Remote Desktop Connection Broker. All of these roles can be on the same server, and it can be a VM – ours is hosted right on the HyperV Cluster). You’ll also need a license for some CALs. If you have an MSDN Account – there are some in there that you can use (provided your licensing allows it). I would personally suggest getting your hands on Server 2012 R2 because of the whole “compressed migration” feature. That is awesome – migrations happen in literally a few seconds.
  8. Active Directory / Domain and Admin Rights on that domain.
  9. Windows 7 Enterprise, Windows 8 Enterprise, or Windows 8.1 Enterprise keys for your VDI Guests. RemoteFX sadly only works with Enterprise versions.

There are some things to be sure of as well – if you are using iSCSI based shared storage, it absolutely needs to support SCSI-3 Persistent Reservation. If this fails this during Cluster Validation, you’re going to have a lot of issues with your storage – things like dropping connections or random disk failovers that take forever and it will disrupt traffic to your VMs.

So, to go off on a bit of a tangent, there are some decent ones you can use – Windows Storage Server 2012 / 2012 R2 will work (or for that matter, Windows Server Standard / Datacenter 2012 / 2012 r2) will work if you use the iSCSI Target, Nexenta works and so does StarWind iSCSI SAN. Nimble Storage does, though this is not what we use for our VDI deployment (different locations, though I really wish I could use it). Other iSCSI SAN Vendors may work the same, you’ll have to do some research on your particular SAN. I know that several of the free ones do not work (FreeNAS, OpenFiler, OpenIndiana or Solaris for example).

So – let’s begin. The first thing you are going to want to do after you get your hardware installed (including your Video Cards) is getting your Operating System installed. I’m going to assume you know how to do this either by using a KVM or else by using something like iLO from HP. I think that if you don’t know how to install your Operating System, you really shouldn’t be doing this and you should be leaving it to someone else. As I’ve said, you can use Server 2012 Standard, Server 2012 Datacenter, Server 2012 R2 Standard, or Server 2012 R2 Datacenter. I also believe that there is a Server 2012 R2 HyperV Edition, though I’m not sure what the difference is. When you are installing, choose the “Standard Install with GUI”. The GUI really doesn’t use that much for resources and configuration is a lot easier than doing it all through Power Shell at this point, and I’ll be showing you how to configure this through the GUI.

After you have your OS installed, you need install a few roles and features. The roles are:

  1. HyperV
  2. Remote Desktop Services -> Remote Desktop Virtualization Host (you don’t have to do this now, but eventually you will have to do it)

The features are:

  1. .NET Framework 3.5 Features (optional I suppose, but I usually install this because some applications require it)
  2. Failover Clustering
  3. Multipath I/O (if you’re using SAS, iSCSI, or FC shared storage)

After those are installed, reboot your server.

Next, run Windows update a few times until you are all up to date. Update / install all your drivers, including the newest stable revision of your video card drivers (either from amd.com or nvidia.com). This is EXTREMELY important. If you’re using old or out of date drivers, it could affect performance.


Next, let’s set up your network. On my particular host, I have 6 NICs. I dedicated 3x to iSCSI, 2x to HyperV, and 1x to LAN – and my LAN is my Cluster Network as well (since very little traffic actually hits the LAN). Depending on how often you’re going to be migrating VMs, you can do it this way, or you can have a dedicated Cluster Subnet / NIC.

  1. LAN – set this as a static IP on your local area network (for this example we will call it for host 1 and for host 2)
  2. Cluster – set this to a static IP of something other than your LAN subnet – it doesn’t need to be resolvable on your LAN at all – it can be something like for host 1 and for host 2
  3. HyperV – I set this to a static IP on our network, but I believe when you add it as a HyperV switch, these settings no longer matter.

If you have spare NICs, I would suggest teaming the HyperV interfaces just for high availability purposes. If you’re using iSCSI, you’ll also want to dedicate some NICs to that as well for multipathing (do NOT use your iSCSI network for Live Migration or Cluster Communication – reserve your iSCSI network for solely iSCSI traffic).

Some suggestions on networking:

  1. Use Jumbo Frames / Jumbo Packets if your NIC / Switch / Storage supports them. This is configurable in the NIC Properties – use this for your Cluster NIC and for your storage NIC
  2. Don’t use Jumbo Frames on your HyperV NIC(s)
  3. Disable Virtual Machine Queuing
  4. Don’t cheap out on extra NICs – use quality, server class NICs, not just some cheap Realtek 100mbp/s NIC.


Depending on your storage type, you’ll want to get this set up next. As you know, I am a bit partial to iSCSI. I do have some spare SAS Enclosures that I wish I would have dedicated to HyperV, but our iSCSI SAN works just fine. Depending on your software / hardware configuration, this will be up to you to figure out. You’ll want a couple of different volumes:

  1. A Dedicated Disk for the .vhdx files. This would be similar to like where VMware puts it’s .vmdk files. You need to judge how big this is going to be.
  2. A Dedicated Disk for the Configuration Files. This includes snapshot data, virtual swap, and VM Metadata.
  3. A Quorum Disk. This is recommended by Microsoft. I think this is really only required on a Cluster with more than 2 nodes, but Microsoft’s recommendation is to have it on every Cluster.

The reason I separate the .vhdx and configuration files is mainly for performance reasons in our particular environment. The .vhdx volume seems to get hit a lot harder than the configuration volume, so I have different performance and compression policies on our SAN for each one. This is totally up to you, you can either stick it all one volume or else split them up. I would recommend splitting them up solely for the reason I mentioned.

I’ll get to configuring the Cluster here in the next post.

Lenovo U410 / U310 BIOS (65cn21ww)

Finally there is a BIOS update for my notebook and just my luck… Lenovo decides to put a password on the file downloaded from there site. Personally, I have no idea why they would do that, but in any event, a little guess revealed that the password is nothing more than “lenovo”. So I guess security wasn’t a huge option.

I stuck a zipped BIOS / flash utility on this site you can download (I removed the password), or else just download the one from their site and decompress / run with the password “lenovo”. This is the exact installer / BIOS image from their website, just extracted with a password, and re-zipped with no passwor.

As usual, I am in no way responsible for any problems that might arise from you doing this, and you do so at your own risk. Obviously this is for the Lenovo Ideapad U410 / U310 only. The installer is a batch that is Windows only.

Download from here: http://mirror.dorkfolio.net/Lenovo/BIOS/65cn21ww.zip


My View on Windows 8 … and why I will NOT be immediately upgrading.

The release of Windows 8 is imminent and though I am a fan Server 2012, I am not so much a fan of Windows 8 (for a few highly and hotly disputed reasons).  Normally I really like to stay up with the software and such, usually running beta / dev releases of a lot of software, but in this case, I probably won’t be. I was an early adopter of Vista and I’m not one of those people who are still stuck using Windows XP and just can’t give it up. I was also an extremely early adopter of Windows 7 (for one good reason, and it’s called “Vista”). I like Windows 7 – since I can’t use Linux 24 /7 (no SSMS / VSphere client – and I’m not one of those people who is going to spend a ton of time setting all that up on wine), I do use Windows more than any other operating system and I have to say this about Window 7 – not only am I pretty content with it, I rather like it. It’s not my favorite thing in the world, but I don’t mind it all. I would gladly choose it above OS X for pure usability purposes and administrative purposes.

My experience with Windows 7 has been more positive than with most other operating systems (save for Ubuntu 10.04, CentOS 5.8 / 6.3, and Debian 6). Not to mention the history of Microsoft doing “Awesome Release >> Total Flop >> Awesome Release >> Total Flop. What I mean by that is look at the history of Windows. Windows 98 = Awesome. Windows 2000 / ME = Total Flop. Windows XP = Solid Gold. Windows Vista = Total Flop. Windows 7 = Awesome. Windows 8 = ??

In any event here are the reasons I don’t think I will be upgrading.

1. In my opinion, Windows 7 is not broken. Therefore, why try to fix it?

This sounds like a moot argument. One could say that about just about anything. My point is that it works great with the hardware I have been using with it. I don’t need a super fancy dancy desktop environment. I need usability and compatibility, not a sleek new GUI – and that’s not to say that all the programs I currently use will not work on Windows 8 – I’m sure they will, but my issue is that I am comfortable on Windows 7, I like it, and I’m fine with it just the way it is. I don’t need any “cool new features” to make it any better than it already is.

2. I don’t really care for the new GUI (the GUI formerly known as Metro).

Seems to me like a lot of operating systems are going for “touch screen” motif. Gnome 3 (which I hate to say has been growing on me), Unity, and Windows 8 all have this feel to me that they would be better served on a tablet. I have a tablet and I love the thing, but my computer is not my tablet, nor can my tablet replace my desktop or my notebooks. My notebooks are faster, can multitask more, I can type on a keyboard far faster than I can on a touch screen, I’m faster and more accurate with a mouse than I am with a touch screen, and I generally don’t care for trying to work my way around a GUI that is seemingly designed for a tablet and touch with a mouse. I can’t really explain why developers would abandon the “desktop” GUI – especially in light of how much faster and more powerful desktops and notebooks are becoming. I used to think it would sick to have a quad core notebook. Now that is totally a reality and the sky is the limit on these (once they get cooling under control anyway).

3. I work in the IT field and most non-powerusers are just getting comfortable with Windows 7.

If you ever have worked in the IT field with end users, you’ll find that some people have an extremely hard time with computers. This sort of stuff comes naturally to myself and maybe to you as well, but a lot of people have just gotten comfortable with Windows 7… and then Microsoft turns around and totally redesigns the entire GUI. This sort of thing may backfire on them (I don’t really care what happens with Windows 8, nor do I really care about anyone else’s idea of it – this is merely my view).

4. I’d like to see how it fares with other IT users first.

Like I said at the beginning here – I’ve always been very fast to rush and adopt and evolve with new releases of software and OSes – but in this case, since I have seen what it looks like and used it for a few weeks, I’d like to see what other people have to say about it before I put all my eggs in that basket. Maybe all these issues will become non-issues when other users find workarounds to these issues.

5. I really don’t care for the new “Start Menu”.

That line says it all.

6. It is slowly becoming OS X / iOS.

I think that Microsoft has been working on this for a while – but I don’t particularly care for the DRM side of Windows 8. There have also been some startling claims by game developers about how that might affect their industry and their adoption of Windows 8. The “Metro Store” as it’s called now will be the primary place to “Buy Applications”. Sound like iOS anyone? The problem I have behind this is that like iOS, unless you want to install third party apps, you are stuck with the App Store. I like being able to go to filehippo.com and download any application I want, install it, and bam. I think Microsoft it would be extremely foolish to try and control that. Furthermore, for every developer to have to pay Microsoft to even get their app in the Metro Store is somewhat sickening when the internet is (at least now anyway) a free and open place. I’m not 100% certain Microsoft will go this route, but I hope for the sake of themselves that they do not.

These are just my opinions and they are subject to change – but for now, I’ll just stick with Windows 7 until something better rolls around.

UPDATE: Windows 8 Could Baffle Customers.

… You don’t say.


If there was ever a tool for a systems administrator out there that had a lot of tools in one, this is it. I’m not usually a massive advocate of paid simple software, but this program is absolutely worth the money. RoyalTS has both RDP and SSH included in it as well as a pretty basic web browser for those web based interfaces you want to work on (routers, switches, load balancers, whatever hardware you have that has a web interface).

What is nice about it is that you can save all your connections and their credentials (encrypted) and sort them in folders (IE if you have a stage environment, save your those servers in a folder called Stage). Pretty nifty.

But honestly, the best part of this app is the developer. I wanted a feature added (SSH Keep alive) and went on their forums to request it. Not 24 hours later the developer had a beta for me try out and sadly it did not work. However, within 24 hours, he had another working beta out that actually did work – even my co-workers here were like “Wow, that dev is amazing!”. This is one program that I do use every single day in my job – it’s open from the time I get in work until the time I leave – I also use it for all my personal servers, virtual machines, and personal web servers – so I do have to highly recommend it.

Beginning Learning SQL Server (2008 R2 or 2012)

For SQL Server 2008 R2 and SQL Server 2012 , going in it to it with no knowledge of what exactly SQL is can be kind of intimidating. I know this first hand as my job – in working with my current job, I had little no experience with Microsoft SQL – I had worked with MySQL in the past, but let me be the first, and certainly not the last to tell you that there is a massive difference between the two. SQL has been around for quite some time and is more or less an abbreviation. SQL (said something like “see kwul”) means Structured Query Language. If you have come here to learn the absolute basics of what SQL is, sadly I am not going to help much. I suggest Wikipedia for all that info – but I am just going to go over some basics.

Installing SQL – before we start with this entire tutorial on how exactly I learned SQL, I would suggest you build yourself a SQL Server instance. You need to have a version of SQL that you can work with, a copy of some form of Windows (Windows Server 2008 or 2008 R2 would work best) and maybe stick it in a VM using something like VMware Player or VirtualBox. If you are on a Linux host, you’ll want to use Virtualbox – either available from your repository (might be outdated) or else straight from Virtualbox.org. If you feel confident that you can learn SQL in 120 days, I believe Microsoft has a 120 day Trial for SQL Server 2012 on their site.

Anyway – for all these examples in here, you are going to need a full working copy of SQL Server (at least Standard, if not Enterprise) and preferably not in a production environment – hence why I would just suggest making a VM to house it – if you’re not doing heavy querying or have it taking massive CPU hits, a VM will work fine for setting this up. I’ve found that using a VM with 2 gigs of RAM does fine, provided this is just a box for learning and not a production box. Obviously if you are making a production box, you should probably consider more than a VM and more than 2 gigs of RAM.

The VM I created has 4 procs and 2 gigs of RAM – I’ve found that this will suffice for our learning sessions.

I’m going to assume that you know how to install Windows in a virtual environment and get it licensed properly. For all these examples in the coming weeks and months, I will be using Windows Server 2008 R2 Foundation with SQL Server 2012. For SQL Server 2008 and 2012, the querying language has not changed that much, and therefore all the queries that I will stick on here will work just fine in either 2008 R2 or 2012.

Alright, on to installing SQL. I’m not going to walk you through every last detail about installing SQL because I don’t know which environment you are in – I suggested using a VM, but perhaps you already have a stage server you can use. In any event, I would highly suggest reading through and following this guide to get your SQL instance all set up and running. This guide will help you set up a config that is good for your specific setting.

Once that is set up, you can go on to the next step – which is called “Creating our Learning Database”


In Linux, for the most part, you are lucky enough to have an awesome text editor. Be it gedit or kate, you’re lucky, because in Windows, you’re stuck with good old “Notepad” – which is extremely limited.

Enter Notepad++. Every kind of developer / editor / administrator will want this. Seriously. It opens just about anything – I’ve taken to sometimes writing SQL in it because it has built in SQL formatting. It natively opens XML, PHP, C++, and a whole mess of other file formats.

It is an extremely handy utility and I suggest you get it if you are running Windows in a development / sys admin environment, I highly recommend it.



If you don’t use 7-zip, now is the time to get it. I use this tool a lot and I openly support it (in fact, for the most part, it’s the only compression utility I use – a lot of files that you may come across to download on this site will be straight up .7z). You’ll need 7-Zip for Windows to extract those. Luckily most Linux users won’t need much of anything if you are using a modern distro.