Tuesday, March 30, 2010

What is the Maximum Drives for an EC2 Windows Instance? - EBS Volume Limit

Yesterday while I was doing some performance testing on Amazon EBS (elastic block storage) volumes attached to a Windows AMI (Amazon machine instance) I ran into an unanticipated issue - the maximum number of drives associated with an EC2 Windows server was lower than I expected.  The max connected drives is 12 - this includes both ephemeral drives and EBS volumes.  This is a little bit of a surprise, especially since Linux instances are supposed to handle 16.

NOTE: This article is about instance-store instances.  For information about drive limitations on EC2 Windows EBS-backed instances see, "Maximum EBS Volumes on EC2 Windows EBS-backed Instances."

I haven't run across this little tidbit anywhere, nor could I find it today when specifically searching for it, so I thought I'd post a few details about my findings.

First off, yesterday I spun up an Extra Large Instance (AKA m1.xlarge) and created a dozen or so 5GB EBS volumes and began attaching them to the instance.  Since I was creating several I used the EC2 command line tool ec2-create-volume:
ec2-create-volume -s 5 -z us-east-1d
In the preceding command the "-s 5" creates a 5GB volume and "-z us-east-1d" creates the volume in the specified Amazon Availability Zone, which by the way, has to match that of the instance to which you will attach the volume.

I attached some volumes using ElasticFox. . .

. . . then attached some with the EC2 command line tool ec2-attach-volume:
ec2-attach-volume vol-0d62c264 -i i-999919f2 -d xvdk
ec2-attach-volume vol-0362c26a -i i-999919f2 -d xvdl
ec2-attach-volume vol-0562c26c -i i-999919f2 -d xvdm
Doing this particular task isn't for the faint of heart as you have to specify the device name (-d xvdm, for example) which has to be unique for each volume attached to a server instance.  You may find it easier generally to use ElasticFox or the AWS Management Console.

Let me take just a moment to point out that, depending on the instance type, you will already have two or more drives.  For example the instance I used here, m1.xlarge, has a 10GB "C drive," and four 420GB drives, D, E, F & G (by default) in Windows.  In Windows Disk Management these will be disks 0-4.  As you add an EBS volume it will be Disk 5, and so on.

I actually attached five EBS volumes in one fell swoop from the command line, and much to my chagrin I immediately lost connectivity to my instance - I had an RDP session open at the time which immediately quit responding.

Since I lost connectivity to the instance and couldn't re-establish a Remote Desktop connection I manually rebooted the instance with ElasticFox.  However, this didn't work.  Initially I thought I had overlapped a device name which the instance couldn't handle so I detached the five EBS volumes previously attached from the command line and rebooted the instance.  I was overjoyed when I was able to login again.

Next I set about to more carefully attach the volumes, which I did one at a time with ElasticFox.  Again, after attaching the five additional volumes my instance stopped responding.  At this point I wasn't sure if I had reached the limit of attached volumes, if one or more volumes had some sort of problem, or if someone at Amazon was messing with me.  I had to find out so I did some testing. . .

I starting running a continuous ping (tcping actually) to the instance (so I would know if/when it crapped out and when it was back online after rebooting) and set about testing connecting EBS volumes to the instance. Sure enough, every time I connected too many EBS volumes the instance would hang.  I wanted to test this against instances with more (and less) ephemeral drives so I also started up a Small Instance (AKA m1.small) and the mack-daddy of them all a High-Memory Quadruple Extra Large Instance (AKA m2.4xlarge).  These two instance types come "out-of-the-box" with two and three drives each, respectively.

Don't believe me on the m2.4xlarge instance?

So, with all three server types, m1.small, m1.xlarge and m2.4xlarge running Windows the magic number of (total) drives was 12 before I started having problems.  An interesting note is that you can actually add a 13th drive and everything appears to be fine.  It's when you add the 14th drive that all hell breaks loose & you instantly lose access to the instance.  Once this happens you have to detach two volumes then forcibly reboot the instance before it starts to respond.  It certainly is good that you can at least regain access.

Remember how I said everything appears to be fine after adding the 13th drive?  Well, appearances aren't everything. . .  What I found was that although you could connect the 13th drive/volume & the instance seems fine, when you reboot it the instance doesn't come back online.  I had to detach the 13th drive then forcibly reboot the instance before I could connect.

Another interesting note is that the device names went up to xvdp (which is actually displayed as the highest device letter when attaching volumes in ElasticFox) then started back at xvdf.
Device range when attaching volumes in ElasticFox:
Attached EBS volumes:

The bottom line is that through a little work yesterday and today I was able to determine definitively that Windows instances (at least instance-store, or S3-backed instances running Windows 2003 - not sure about Windows 2008 on EBS-backed storage) cannot have more than 12 total drives attached.

See also:

Elasticfox Firefox Extension for Amazon EC2

I've been using ElasticFox for a while now and thought I'd jot down a few notes about it.  I don't use it exclusively to manage my Amazon Web Services (AWS) EC2 instances, EBS volumes, etc., but usually I do go there first.  It's worth mentioning that I also use the AWS Management Console and EC2 command line tools (both in Windows and Linux).  Typically I keep ElasticFox open as I access it several times a day.

One of the best things about ElasticFox is that you can add "Tags" to instances, EBS volumes, etc.  Tags are your own notes about the instance, like a friendly name.  I really wish Amazon had a field like this that was tied to the instance so it would be available in all tools.  One minor draw-back to tags are that they only apply to the particular browser in which they are created.  They don't, for example, if you logon as a different user to your machine, or on other machines.

With ElasticFox you can connect to various regions, even with different credentials.  It allows you to manage the following by selecting the appropriate tab:
  • Instances
  • Images
  • KeyPairs
  • Security Groups
  • Elastic IPs
  • Volumes and Snapshots
  • Bundle Tasks
  • Reserved Instances
  • Virtual Private Clouds
  • VPN Connections
  • Availability Zones
Read more about and download the Elasticfox Firefox Extension for Amazon EC2 and enjoy.

See also Copying ElasticFox Tags from One Browser to Another.


ElasticFox doesn't support versions of FireFox above 3.x, so get Elasticfox (for EC2 Tag) which adds a few more nice features.

Monday, March 29, 2010

Ping Amazon EC2 Server Instances - How To

By default Amazon EC2 instances don't respond to ICMP requests, i.e. ping.  Of course there are several reasons why one may want to ping an Amazon EC2 instance, including verifying if it is online and to test latency.  As with most things there is more than one approach to this issue.

First, you could enable ICMP through Amazon security groups.  This can be done easily with the Amazon Management console, ElasticFox or EC2 command line tools.  You could open it up to the whole world:
ec2-authorize default -P icmp -t -1:-1 -s
. . . or, specific IP addresses or ranges:
ec2-authorize default -P icmp -t -1:-1 -s <IP Address>
Another approach would be to use TCPing (works with both Linux and Windows - see Ping Over TCP with tcping.exe in Windows or tcping for Linux).  I like to use this method because you can test general connectivity over specific ports.  For example you could use
tcping ec2-75-101-206-107.compute-1.amazonaws.com
to test connectivity to the specified server over the default port 80.  Or you could specify a port, like 22 for SSH or 3389 for RDP:
tcping ec2-75-101-206-107.compute-1.amazonaws.com 22
One method I use to determine when an EC2 instance that is first starting comes online, or when a restarting instance is again online (either from a reboot or bundling the EC2 instance), is to use tcping to send a ping continuously every second.  You could use the command:
tcping -t -i 1 ec2-75-101-206-107.compute-1.amazonaws.com
This very useful as you can essentially track the progress of the instance coming online, then becoming available.  At first you will receive the message, "Connection timed out. . ."  This indicates that tcping is not getting a response at all, i.e. that the instance cannot be reached.  Once the instance starts, but the OS isn't fully available the message, "Connection refused. . ." will be the result.  This means tcping can reach the machine (the network card and TCP/IP stack are available), however, the port you are probing, 80 in this case, isn't accepting connections.  Then, when it's available (on the specified port) it will respond with the message, "Port is open. . ."

I like to use the interval of 1 second as it is useful in determining how long an instance was offline and the duration of each stage.

For more info see the following posts.

Amazon S3 Command Line Utilities for Windows

I've searched high and low for a good all around command line utility to interact with Amazon S3 buckets from Windows.  While I'm still searching for just the right utility for me here are a few which I use from time-to-time.   Why use more than one, you ask?  Well, since I haven't found just the right one for all occasions I use the one that works best for the particular task at hand.

S3.exe is a Windows command-line utility for Amazon's S3 & EC2 web services that requires no installation, is a single .EXE file with no DLLs, and requires only .NET 2.0 or Mono, so it will work on a plain Windows installation.

Key Features
  • Efficiently uploads and downloads large numbers of files (or whole directories) between Amazon S3 and Windows PCs.
  • Everything is in one .EXE. Nothing to install or configure, just download it where it's needed and run it.
  • Doesn't require anything except .NET 2.0 or Mono.
  • Works well in an automated backup solution or as an ad-hoc system administration tool.
  • Can split large files into chunks for upload without creating any temporary files on disk.
  • Can use HTTP HEAD command to quickly determine which files don't need to be uploaded because they haven't been updated (/sync).
  • Support for various EC2 operations as well.
CloudBerry Explorer PowerShell Snap-in
CloudBerry Explorer offers PowerShell extension to manage file operations across Amazon Simple Storage Service (Amazon S3) and file system.  The CloudBerry Explorer PowerShell Snap-in allows using the majority of Amazon S3 functionality. You can combine CloudBerry Explorer commands with PowerShell commands. PowerShell is designed to operate with Net objects, so you are not limited with command syntax. You can write complicated scripts with loops and conditions. You can schedule periodical tasks like data backup or cleanup.

#Sh3ll (Amazon S3 command shell for C#)
#Sh3ll (pronounced sharp-shell) is a C# based command shell for managing your Amazon S3 objects.  It is open source and provided by SilvaSoft (click to download #sh3ll and for more information). #Sh3ll is built upon the Amazon S3 REST C# library, and it runs on both .NET 1.1 and .NET 2.0.

Also from SilvaSoft:

  • Sh3ll - Amazon S3 command shell for Java
  • rSh3ll - Amazon S3 command shell for Ruby

Sunday, March 28, 2010

5 Reasons You Should Be Scared of Apple

Robert Evans over at cracked.com wrote this great article about the force known as Apple, led of course by Steve Jobs.  Evans reminds us of their over-the-top quest to keep everything Apple top secret until Mr. Jobs is ready to sit in a comfy chair in his jeans and turtle neck to reveal the next great wonder of the world on their way to world domination.  Don't believe me?  This is an excerpt from a recent US Patent Office filing from Apple listing none other than Steve Jobs himself:
"Apple can further determine whether a user pays attention to the advertisement. The determination can include performing, while the advertisement is presented, an operation that urges the user to respond; and detecting whether the user responds to the performed operation. If the response is inappropriate or nonexistent, the system will go into lock down mode in some form or other until the user complies. In the case of an iPod, the sound could be disconnected rendering it useless until compliance is met. For the iPhone, no calls will be able to be made or received."

Thursday, March 25, 2010

OpenSSH for Windows

OpenSSH for Windows is a free package that installs a minimal OpenSSH server and client utilities in the Cygwin package without needing the full Cygwin installation.  The OpenSSH for Windows package provides full SSH/SCP/SFTP support. SSH terminal support provides a familiar Windows Command prompt, while retaining Unix/Cygwin-style paths for SCP and SFTP.

Find more information and download OpenSSH for Windows from SourceForge.

Wednesday, March 24, 2010

Windows Update error 80072efd on Windows 7

For a couple months now I haven't been able to update my precious Windows 7.  I would get a message that the updates failed with, "Windows Update error 80072efd."  I tried all the steps from the Windows Help and Support window (running the Windows Update troubleshooter and adding the Windows Update websites to the Windows firewall exception list) to no avail.  Out of desperation I found a reference to correct this problem on Vista by running netsh winhttp reset proxy.  It worked!

Open a command prompt as administrator (Start / All programs / Accessories, right-click “Command Prompt” and select "Run as administrator").

At the command prompt run:
netsh winhttp reset proxy
Try Windows Update update again.

Tuesday, March 16, 2010

Don't Tax Me Bro!

Hey, Obama: Don't Tax Me, Bro!

Friday, March 12, 2010

Sunday, March 7, 2010

Open a Command Prompt as Administrator in Windows 7, Vista and Windows 2008

Often, even if you are logged on as a user which belongs to the local Administrators group, you may have to open a command prompt (or other program) as "administrator."  Simply right-click the shortcut (Start, All Programs, Accessories, Command Prompt) and select Run As Administrator.

Applies to:
  • Windows 7
  • Windows 2008
  • Windows Vista

Wednesday, March 3, 2010

Installing BackTrack 4 Final

Installing BackTrack 4 Final couldn't be easier.  I've expanded just a little on the simple installation instructions from BackTrack.  Follow these simple instructions and you'll be using BackTrack 4 Final in no time.  NOTE: These instructions assume you are going to use the entire disk on your computer for BackTrack.

First, boot the the BackTrack 4 Final DVD.  Either allow it to start on its own or select your preferred screen size.

At the command line enter startx.

Double-click install.sh on the desktop.

Select your region/city for the correct timezone, click Forward.  Select your keyboard layout, then Forward.  Use the default disk partitioning option of Guided.  Click Forward.

Click Install and watch it go.

The installation should only take a few minutes.

When it's done it will prompt you to remove your DVD and reboot.  That's it.  Now you're BackTracking.

NOTE: when your system starts your default username will be root, with the password of toor.

See How to Start Networking in BackTrack 4

Monday, March 1, 2010

Keyboard Shortcut to open Windows Task Manager in Windows 7 and Vista

Microsoft changed things up again. Back in the day (Windows 2000, 2003, XP, etc.) you could easily open Windows Task Manager using Ctrl + Alt + Del, then pressing T.  Now in Windows 7 and Windows Vista you can still use Ctrl + Alt + Del which displays a screen whith options like Lock this Computer, Switch User, Log Off, Change Password, and Start Task Manager.  However, pressing T does nothing, and in fact, no keyboard shortcuts work on this screen to choose one of the items from the list - even tab and arrow keys don't let you pick from the list.  You have to use your mouse pointer.  Stupid, stupid, STUPID!  Way to go Microsoft!

So to launch Task Manager in Windows 7 and Vista you would have to go through this double step process of pressing Ctrl + Alt + Del, then reaching over to your mouse and clicking on Start Task Manager.  I can understand Microsoft trying to make things easier for new users and for the masses.  But for heaven's sake please leave old keyboard shortcuts in place for those of us who have been using Windows for a while.

Enough ranting and raving.  Although this has probably been the case all along (this old dog had to learn a new trick), you can use Ctrl + Shift + Esc to open Task Manager directly and bypass the hassle and frustration introduced by MS with Vista.