<?xml version="1.0" ?>
<?xml-stylesheet href="" type="text/css"?>

<rss version="2.0">

    <channel>

        <title>Blog</title>
        <link>http://community.grokthis.net/blog</link>
        <description></description>

        <generator>basesyndication</generator>
        <!-- TODO
        <lastBuildDate>Mon, 30 Sep 2002 11:00:00 GMT</lastBuildDate>
        <copyright>Copyright 1997-2002 Dave Winer</copyright>
        <docs>http://backend.userland.com/rss</docs>
        <category domain="Syndic8">1765</category>
        <managingEditor>dave@userland.com</managingEditor>
        <webMaster>dave@userland.com</webMaster>
        -->

        <!-- TODO: Should there be an individual image associatable with each
        Weblog object?  I think so... -->
        <image>
            <title>Blog</title>
            <url>http://community.grokthis.net/logo.png</url>
            <link>http://community.grokthis.net/blog</link>
        </image>

        
            <item>
                <title>New API &amp; command interface documentation preview</title>
                <guid>http://community.grokthis.net/blog/archive/2010/06/25/new-api-command-interface-documentation-preview</guid>
                <link>http://community.grokthis.net/blog/archive/2010/06/25/new-api-command-interface-documentation-preview</link>
                <description>
&lt;p&gt;Very, very soon now, we'll be releasing a new management console.  Currently, customers may login to manage individual instances, with each instance having a unique login.  Our new "Cloud Admin Shell" will offer the ability to manage multiple instances under a single account -- using the same credentials as for their billing account.  It will also support creating and removing instances on-the-fly!  This will be possible, as currently, via interactive shell, RESTful API, and via an SSH "API".&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Below, we are supplying a preview of the new command/API documentation.  We will also provide an end-user manual at the time of release.  This is being provided for the sake of public comment -- so let us know what you think!&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1&gt;&lt;a name="name"&gt;NAME&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;cloud-admin-shell - Provide a console interface to control instances.&lt;/p&gt;
&lt;h1&gt;&lt;a name="command_table"&gt;Command Table&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="instance__id_"&gt;instance [id]&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="boot"&gt;boot&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Issues a boot command to an instance. If the string argument "console" is provided, it will also start a serial console.  Returns 1 on success, or &lt;code&gt;undef&lt;/code&gt; on failure.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="status"&gt;status&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Indicates if the instance is running or not. Returns 1 on success, or &lt;code&gt;undef&lt;/code&gt; on failure.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="shutdown__graceful___force_"&gt;shutdown [graceful | force]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Sends a shutdown command. By default, this is a graceful shutdown. If a non-graceful shutdown is not possible, the instance will remain running.  To force a non-graceful shutdown, specify the string argument, &lt;strong&gt;force&lt;/strong&gt;. This is non-blocking, use &lt;em&gt;instance status&lt;/em&gt; to determine if the instance is still running. The &lt;em&gt;instance console&lt;/em&gt; command may be used to interactively view the status of the shutdown.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="reboot"&gt;reboot&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Sends a reboot command, a graceful &lt;em&gt;instance shutdown&lt;/em&gt; followed by an &lt;em&gt;instance boot&lt;/em&gt;. Will fail if cannot be performed gracefully. If so, the command &lt;em&gt;instance shutdown force&lt;/em&gt; must be utilized.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="reimage"&gt;reimage&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;On an instance whose status is &lt;strong&gt;shutdown&lt;/strong&gt;, install a new operating system. Implementation and availability depends on the &lt;strong&gt;cloud&lt;/strong&gt; specified.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="console"&gt;console&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Launch an interactive serial console to the instance. Only available on interactive shells.&lt;a name="show"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="config__noun_"&gt;instance [id] config [noun]&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="password__pass___pass_repeat_"&gt;password [pass] [pass-repeat]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Set a new instance-password. This may be used to login for management of this instance, separate from the account-wide management offered by cloud-admin-shell. Useful for when looking to authorize users to an instance under an account, while not giving access to the entire account.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="cloud__id_"&gt;cloud [id]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Change the cloud on which this instance operates. Different clouds may operate within separate geographic areas and may incur different usage charges.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="add"&gt;add&lt;/a&gt;&lt;/h3&gt;
&lt;dl&gt;

&lt;dt&gt;&lt;strong&gt;&lt;a class="item" name="ipv4"&gt;-
ipv4&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;

&lt;dd&gt;
&lt;p&gt;Add a new IPv4 address&lt;/p&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a class="item" name="ipv6"&gt;-
ipv6&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;

&lt;dd&gt;
&lt;p&gt;Add a new IPv6 address&lt;/p&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br /&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="script__noun_"&gt;script [noun]&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Commands useful and specific to scripting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="fetchuri__uri_"&gt;fetchuri [uri]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Fetches a URI. HTTP and FTP have been tested. Servers must specify a Document Length.
If the Document Length is not provided by the server, this will return &lt;code&gt;-2&lt;/code&gt;
If the Document Length is larger than 2MB, this will return &lt;code&gt;-1&lt;/code&gt;
Otherwise, this will download and return as a string the content of the provided, downloaded URI.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="language__interpreter_"&gt;language [interpreter]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Changes the language of the current shell. This is only temporary.
To set the shell permanently, use &lt;em&gt;config interactive_shell&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This may be used from scripts if a script should contain multiple languages,
but is intended primarily for interactive use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="exit"&gt;exit&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Exits the shell.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="quit"&gt;quit&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Exits the shell.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="help"&gt;help&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Returns helpful information.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="create__noun_"&gt;create [noun]&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="instance"&gt;instance&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Create/add an instance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="show__noun_"&gt;show [noun]&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="instance"&gt;instance&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Show information about an instance. If no arguments are provided, lists all instances.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a class="item" name="config"&gt;-
config&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;

&lt;dd&gt;
&lt;p&gt;Shows the configuration &amp;amp; preferences for an instance.&lt;/p&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="author"&gt;author&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Displays the authors of this application.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="version"&gt;version&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Displays the current version number.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="whoami"&gt;whoami&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Tells you who the current user is.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="storage"&gt;storage&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Accesses the storage of an instance.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="message__message_id_"&gt;message [message-id]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Displays system messages. If no message is indicated, it will return a summary of the last 10 messages. If a message id is specified, it will return the full contents of the requested message.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="cloud"&gt;cloud&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;List available clouds, given no arguments. Given the argument of a cloud identifier, will provide information regarding that cloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name="config__noun_"&gt;config [noun]&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="storage"&gt;storage&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Configure storage.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="passwd__new_pass___new_pass_repeat_"&gt;passwd [new-pass] [new-pass-repeat]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Set or change an account password.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="sshkey__key_"&gt;sshkey [key]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Install an SSH key for the current user. Must be provided in OpenSSH format.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="pref__variable___value_"&gt;pref [variable] [value]&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Set preferences for the current user.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Fri, 25 Jun 2010 00:42:36 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Web Management Console *PREVIEW*</title>
                <guid>http://community.grokthis.net/blog/archive/2010/05/12/web-management-console-preview</guid>
                <link>http://community.grokthis.net/blog/archive/2010/05/12/web-management-console-preview</link>
                <description>&lt;p&gt;We've been working on a new web-based management console.&amp;nbsp; This will not replace, but will rather supplement and rely upon, the console-gui and API. This is an in-development &lt;b&gt;preview&lt;/b&gt; of the new interface.&amp;nbsp; It is a good time to make your voice heard, if there is something you'd like to see, or changes made.&amp;nbsp; Clearly, we'll be making many changes yet, and some features may be renamed, moved, or may not make it into the immediate release.&amp;nbsp; Screenshots below.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Technical details:&amp;nbsp; It will use our new RESTful API and is expected to be entirely self-contained within HTML, Javascript, and CSS.&amp;nbsp; This will allow for a high-level of customizability and as a reference application for those looking to utilize our API.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/gtpreview3.png/view"&gt;&lt;img class="image-inline" src="../../../../../gtpreview3.png/image_thumb" alt="gt-preview-3" /&gt;&lt;/a&gt;&lt;a href="/gtpreview1.png/view"&gt;&lt;img class="image-inline" src="../../../../../gtpreview1.png/image_thumb" alt="gt-preview-1.png" /&gt;&lt;/a&gt;&lt;a href="/gtpreview4.png/view"&gt;&lt;img class="image-inline" src="../../../../../gtpreview4.png/image_thumb" alt="gt-preview-4" /&gt;&lt;/a&gt;&lt;a href="/gtpreview5.png/view"&gt;&lt;img class="image-inline" src="../../../../../gtpreview5.png/image_thumb" alt="gt-preview-5" /&gt;&lt;/a&gt;&lt;a href="/gtpreview2.png/view"&gt;&lt;img class="image-inline" src="../../../../../gtpreview2.png/image_thumb" alt="gt-preview-2" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
                <author>Eric Windisch</author>

                
                    <category>xen</category>
                
                
                    <category>vps</category>
                
                
                    <category>virtualization</category>
                
                
                    <category>cloud</category>
                
                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Wed, 12 May 2010 23:36:44 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>The new RESTful API *PREVIEW*</title>
                <guid>http://community.grokthis.net/blog/archive/2010/05/06/the-new-restful-api-preview</guid>
                <link>http://community.grokthis.net/blog/archive/2010/05/06/the-new-restful-api-preview</link>
                <description>
&lt;p&gt;For over a year, we've had an API available based on XML::RPC.  It wasn't popular and it was difficult to support and keep up to date.  However, today I present to you a *PREVIEW* of our RESTful API.  Results are returned in JSON.  You can now authenticate and push requests to the cloud-shell interface via HTTP.  &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The interface is in extreme-beta-state for the moment, as it only provides RAW access to  the STDOUT of the methods as run through the interactive cloud-shell.   The output must be cleaned up, the proper return-values and data-types must be returned.  Interpreting HTTP-POST data as script should also be implemented.  Once this is all complete, we'll mark it as stable.  I'm estimating a week.&lt;br /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;Example:&lt;/h3&gt;
&lt;p&gt; https://secure.grokthis.net/manage/vps/rest/status&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enter your username and password for the cloud-shell management interface (HTTP BASIC auth) and you should retrieve the status of your default instance.&lt;/p&gt;
&lt;p&gt;Other commands of the cloud-shell will also work. Not yet supported via the REST interface are 'fetchuri', 'reimage', and 'console'. &lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>feature</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Thu, 06 May 2010 00:39:53 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Cloud-shell Scripting! [PART 2]</title>
                <guid>http://community.grokthis.net/blog/archive/2010/04/23/cloud-shell</guid>
                <link>http://community.grokthis.net/blog/archive/2010/04/23/cloud-shell</link>
                <description>
&lt;p&gt;A short while ago, we &lt;a href="../../03/19/cloud-shell-scripting"&gt;added interpreters to the cloud-shell&lt;/a&gt;. However, there were still many things it could not do, limitations in loading externally generated scripts, etc.  Well, since our initial announcement, we've added a number of really cool features which we hope you'll love.&lt;/p&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;p&gt;First, we've fixed bugs. The setpref command should now be much more reliable and changes will take effect immediately, even changing the interactive_shell will have an immediate effect. You'll also know which interpreter you're using according to the prompt: "cloud-shell[tcl]&amp;gt;" or "cloud-shell[ruby]&amp;gt;"&lt;/p&gt;
&lt;h2&gt;Command Passing&lt;/h2&gt;
&lt;p&gt;You can now launch commands via SSH's command passing mechanism.  To demonstrate:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$ ssh -l cdemo manage.vps.grokthis.net status&lt;/p&gt;
&lt;p&gt;Guest : Running&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All commands executed this way are done via the 'simple' interpreter, there is no smart interpreter when executing commands this way.  Remember, we support SSH keys, so you can use this in an automated process.&lt;/p&gt;
&lt;h2&gt;Script Piping&lt;/h2&gt;
Finally, if command passing isn't cool enough, you can now pipe scripts:&lt;br /&gt;&lt;br /&gt;
&lt;blockquote&gt;$ ssh -l cdemo manage.vps.grokthis.net ruby &amp;lt; do_this_stuff.rb&lt;br /&gt;&lt;br /&gt;$ echo "setpref interactive_shell ruby" | ssh -l cdemo manage.vps.grokthis.net tcl&lt;br /&gt;&lt;br /&gt;$ cat &amp;lt;&amp;lt;EOF | ssh -l cdemo manage.vps.grokthis.net javascript&lt;br /&gt;whoami()&lt;br /&gt;EOF&lt;br /&gt;&lt;/blockquote&gt;
&lt;p&gt;
Note that to pipe a script, you must (currently) specify the interpreter on the SSH commandline.  We intend to add support for a hash-bang (#!) to specify the script type in the script itself... &lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;Chef / CFEngine / Puppet&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;We haven't done anything with these DevOps engines yet, but we see the potential to do some really great stuff... some sort of integration and/or cookbooks are planned.  Keep tuned!&lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>vps</category>
                
                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Fri, 23 Apr 2010 15:08:00 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Storage problems finally resolved (we think!)</title>
                <guid>http://community.grokthis.net/blog/archive/2010/04/23/storage-problems-finally-resolved-we-think</guid>
                <link>http://community.grokthis.net/blog/archive/2010/04/23/storage-problems-finally-resolved-we-think</link>
                <description>
&lt;p&gt;So, we've had a number of problems with the storage.  A few months ago, to help minimize the effect, we had moved to three-way mirroring.  It turns out that not only did it fail to improve the situation, it only made it worse.  Quite simply, we had several drives which were experiencing repeat "failures" despite testing good and running the latest firmware.  It turns out, however, that there was a "super secret" firmware which our drive manufacturer would not inform us of, this was only discovered by research and communication with other customers of this particular disk manufacturer.  Having the three-way mirroring had made this worse for another reason altogether, ZFS will either refuse to write to, or will put a heavy bias against, any *mirror* sets which are marked degraded.  Normally, I'd expect that read performance would be affected negatively, but write performance would continue as normal on a degraded set.  In ZFS, this is quite the contrary, but write performance suffers quite horribly.&lt;/p&gt;
&lt;p&gt;In the end, we've managed to get the drives operating stably and now know that a three-way mirror when degraded will not equal the performance of a non-degraded 2-way mirror as I might otherwise have expected with the Linux software RAID.&lt;/p&gt;
&lt;p&gt;The remaining thing to do, yet, is to migrate Rorschach off the clustered LVM volume, moving it to the direct-iSCSI volumes.  Rorschach is the last machine using clustered LVM.  Then, we'll have to migrate a few hosts that never made it onto shared storage.  All in due time... &lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>hardware</category>
                
                
                    <category>vps</category>
                
                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Fri, 23 Apr 2010 14:52:34 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Fixing storage hotspots...</title>
                <guid>http://community.grokthis.net/blog/archive/2010/04/02/fixing-storage-hotspots</guid>
                <link>http://community.grokthis.net/blog/archive/2010/04/02/fixing-storage-hotspots</link>
                <description>We have become aware that one of the most significant performance issues with our system and the most immediate cause of IO-wait problems is related to storage hotspots.  Currently, 90% of our disk IO is being handled by 25% of our disk array.  The storage system we are using should normally avoid this, but we are an edge-case.  Our immediate goal is to rectify this problem, spreading the load across the entire array.  It has also come to our attention that additional performance-benefiting changes we had previously planned may not be beneficial without first addressing this serious issue.&lt;br /&gt;&lt;br /&gt;To combat hot-spots in our SAN which are key to the performance problems noted recently, we must shutdown and (safely) re-provision a little more than 100 customers.  This re-provisioning will require the recreation of customer filesystems, while retaining customer data.  Customers with partitioned block storage will simply have their systems copied bit-by-bit for convenience.  Customers looking to receive a bit-by-bit filesystem copy should notify us of this request.  We also intend to modify customer's /etc/fstab file to indicate a default mount option of 'noatime'.  We understand that these changes are somewhat invasive, so please do notify support if you have any concerns!&lt;br /&gt;&lt;br /&gt;This change will simplify future maintenance, recovery, and backup operations. It will greatly reduce the complexity of operations performed by individual host nodes, leading to more stable systems.  It will offer greater data security.  Additionally, it will help us in implementing further performance-boosting strategies.  Finally, it should provide a less invasive methodology for eliminating future hotspots when/if they develop.  Approximately 10% of our customers are already configured in this manner with great success.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
                <author>Eric Windisch</author>


                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Fri, 02 Apr 2010 13:24:22 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Cloud-shell Scripting!</title>
                <guid>http://community.grokthis.net/blog/archive/2010/03/19/cloud-shell-scripting</guid>
                <link>http://community.grokthis.net/blog/archive/2010/03/19/cloud-shell-scripting</link>
                <description>
&lt;p&gt;We now have basic&lt;i&gt; Tcl,&lt;/i&gt;&lt;i&gt; Javascript, and Ruby&lt;/i&gt; functionality built into cloud-shell! This allows you to script basic functionality from the interactive terminal. User feedback is encouraged, let us know what you think!&lt;/p&gt;
&lt;p&gt;
What does this mean for you? Well, power users will be able to do a whole lot of really neat things as we expand the library of available methods.  Currently, though, you may access any of the existing shell commands from code.&lt;/p&gt;
&lt;p&gt;What *will* it mean? Well, we're going to expand the available methods so that you'll be able to write scripts for any sort of neat things.  Solaris or Macintosh users might be familiar with OpenFirmware and EFI -- the goal is to make our cloud-shell similar to, but more powerful than, these environments.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;UPDATE&lt;/i&gt;: Michael Szul (&lt;a href="http://www.twitter.com/szul/"&gt;@szul&lt;/a&gt;) asked if we had any particular reason for choosing Tcl. Well, for the interactive shell, it simply makes a lot of sense because from now on, all commands you run are actually Tcl procedures.  We can do this without a change in the typical user expectations or experience.  Stored scripts will be able to use the same familiar syntax you've always used, making it a close analog to a unix shell or powershell script.  Essentially, it is easy for the user, despite being a relatively dated and obscure language in 2010.  That said, I'm already working on Javascript support, which I feel won't be very useful for interactive use, but would be of great use for non-interactive code, especially for those from a web background.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;UPDATE 2&lt;/i&gt;: Javascript now supported! Do 'setpref interactive_shell javascript' from the Tcl shell.  Note that from then on, everything will be in Javascript syntax, i.e. to get back to Tcl: "setpref('interactive_shell', 'tcl')".  We've mapped write/writeln/document.write/document.writeln such that they print to your terminal, for convenience.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Update 3&lt;/i&gt;: You may now load script files from the network. Use the fetchuri method to download a script (remote server MUST set Content-Length). You can then pass that to an eval function, i.e. in javascript: eval(fetchuri("http://ftp.grokthis.net/pub/installers/karmic.js"));  Allowing one to download &amp;amp; exec scripts in languages other than that of the interactive shell should be complete sometime tomorrow.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Update 4&lt;/i&gt;: Now supporting Ruby!!!  Finally, customers that, for whatever reason, want to disable interactive features entirely can revert to the old non-interactive shell by choosing the 'simple' shell.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Example Script (tcl):&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Currently, many of the features listed below are not yet incorporated into your shell.  This is an example of how scripting will eventually empower users.  This example pseudo-script reimages the OS while also setting the CPU architecture and boot methods, and finally, boots the OS.  It is a simple example, but hopefully, a powerful one.  Ultimately, we intend to base our reimaging software on this concept.&lt;br /&gt;&lt;/p&gt;
&lt;code&gt;
&lt;/code&gt;
&lt;pre&gt;    # user settings&lt;br /&gt;    set cpu_arch 64&lt;br /&gt;    set boot_method pvgrub&lt;br /&gt;    set url "ftp://ftp.grokthis.net/disk_images/fedora-12_64.tar.bz2"&lt;br /&gt;&lt;br /&gt;    # set the guest&lt;br /&gt;    set guest [get_guest]&lt;br /&gt;&lt;br /&gt;    # Program:&lt;br /&gt;    foreach disk [get_storage] {&lt;br /&gt;     if { [string compare $disk(desc) 'root'] == 0 } {&lt;br /&gt;      reimage $disk $url&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    setpref cpu_arch $cpu_arch&lt;br /&gt;    setpref boot_method $boot_method&lt;br /&gt;&lt;br /&gt;    boot&lt;br /&gt;&lt;br /&gt;    # Notify a remote machine of our IP address&lt;br /&gt;    fetchuri "http://your-server/instance-manager/callback/create/$guest(ip)"&lt;br /&gt;&lt;/pre&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>upgrade</category>
                
                
                    <category>feature</category>
                
                
                    <category>vps</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Fri, 19 Mar 2010 17:14:42 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Bandwidth monitoring</title>
                <guid>http://community.grokthis.net/blog/archive/2010/03/15/bandwidth-monitoring</guid>
                <link>http://community.grokthis.net/blog/archive/2010/03/15/bandwidth-monitoring</link>
                <description>
&lt;p&gt;We've added a new bandwidth command to the cloud-shell management console. It is not active for everyone yet, but for over 50% of the customer base.  Enjoy!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cloud-shell&amp;gt; bandwidth&lt;br /&gt;&lt;br /&gt;        cdemo&lt;br /&gt;&lt;br /&gt;           month        rx      |       tx      |    total&lt;br /&gt;        ------------------------+---------------+---------------&lt;br /&gt;          Mar '10         0 MB  |    158.76 MB  |    158.76 MB&lt;br /&gt;        ------------------------+---------------+---------------&lt;br /&gt;        estimated         0 MB  |       327 MB  |       327 MB&lt;br /&gt;Connection closed.&lt;br /&gt;cloud-shell&amp;gt;&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>vps</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Mon, 15 Mar 2010 23:59:14 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Karmic upgrade mini-howto</title>
                <guid>http://community.grokthis.net/blog/archive/2010/03/13/karmic-upgrade-mini-howto</guid>
                <link>http://community.grokthis.net/blog/archive/2010/03/13/karmic-upgrade-mini-howto</link>
                <description>
&lt;p&gt;This is not yet user-friendly. Let us know if you need help!  We'll soon develop a script to automate this upgrade process.  Note that these instructions should be more-or-less suitable for migrating any Debian OS, such as Lenny, to running a distribution kernel (rather than using our managed kernel)&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Upgrade from Jaunty with apt-get.  Note that *currently* installing Jaunty and upgrading is the easiest way to run Karmic.&lt;/li&gt;&lt;li&gt;&lt;b&gt;***DO NOT REBOOT / SHUTDOWN***&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copy /etc/event.d/tty1 to /etc/event.d/xvc0 and replace all 'tty1' with 'xvc0'.  Remove /etc/event.d/tty*&lt;/li&gt;&lt;li&gt;Install the packages "linux-virtual" and "grub". Note that "grub-pc" (GRUBv2) will NOT work.&lt;/li&gt;&lt;li&gt;Modify /boot/grub/menu.lst so that you use 'root = (hd0)'  (default is hd0,0)   Append console=xvc0 to the kernel line.&lt;/li&gt;&lt;li&gt;Modify /etc/fstab, replace 'sda' with 'xvda'. (sda1 becomes xvda1, etc)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shutdown.&lt;/li&gt;&lt;li&gt;Login to cloud-shell (management console)&lt;/li&gt;&lt;li&gt;Run following commands in the cloud-shell:&lt;/li&gt;
&lt;code&gt;cloud-shell&amp;gt; setpref boot_method pvgrub&lt;br /&gt;cloud-shell&amp;gt; setpref disk_namespace xen&lt;/code&gt;&lt;br /&gt;&lt;li&gt;Logout of the cloud-shell&lt;/li&gt;&lt;li&gt;Log back into the cloud-shell (this reloads your preferences)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Execute:&lt;/li&gt;
&lt;code&gt;cloud-shell&amp;gt; boot console&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: if you build a partitioned instance then your menu.lst may contain the default (hd0,0) entry and you should set boot_method to 'pvgrub_part'. Partitioned instance support has not yet been fully tested.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;WARNING&lt;/b&gt;: Do NOT upgrade to ext4 if using grub, as per these instructions as it does not support ext4.  If you must use ext4, you may attempt a partitioned installation; only the first partition must be ext2/3.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;WARNING #2&lt;/b&gt;: Archive / restore support is not tested with grub. We should test this.  If it works, let us know.&lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>support</category>
                
                
                    <category>upgrade</category>
                
                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Sat, 13 Mar 2010 13:07:12 -0500</pubDate>

                
            </item>
        
        
            <item>
                <title>SAN status</title>
                <guid>http://community.grokthis.net/blog/archive/2010/03/13/san-status</guid>
                <link>http://community.grokthis.net/blog/archive/2010/03/13/san-status</link>
                <description>
&lt;p&gt;As many of our customers are aware, we've had problems with stability on some of our VPS nodes.  Specifically, our newest and largest nodes.  Most of these issues have been related in one way or another to our iSCSI SAN.  We understand how significant these problems are for our customers, and we hope customers realize how significant these problems are for us -- clearly, problems for customers are our problems too. We don't like dealing with down machines any more than necessary.  In fact, as a systems administrator, I've always advocated laziness -- the good kind of laziness: do it once, do it right.  I feel the the best systems administrators keep things running smoothly by doing the least amount of work possible.  The point is that we want things to work smoothly even more than you do.  The reality is that we're simply hitting a number of edge cases of the relatively new technology, both hardware and software, which we deploy.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The problems we have had have been numerous and varied.  Some crashes have left little information behind, some with detailed information, others even happened before our own eyes upon running some relatively safe and mundane command.  Some have had interesting causes, some have had interesting solutions.  Some solutions have been deployed already, some will automatically deploy upon reboot (i.e. after the next crash), and others are planned for future maintenance windows.&lt;/p&gt;
&lt;p&gt;We're working to resolve these issues as quickly as possible and regain a reputation for reliable service.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Below is a list of issues which we're recognizing as either currently, or recently, problematic:&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;IO errors &amp;amp; read-only filesystems&lt;/b&gt;:  Customers have at times noticed IO errors and read-only filesystems when the SAN has "disappeared".  Sometimes this happens after a simple hiccup, sometimes it is a serious outage, but either way, if the error hits a customer instance, they're going to need a reboot.  To resolve this, we're changing the iSCSI timeouts.  It has been recently discovered that the default timeout settings were not appropriate for our configuration.  This change should cause customer's machines to block and wait for the storage to return.  However, really, these timeout settings are only a concern when something else goes wrong, but it might be the difference between a hiccup and a disaster.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Swap performance: &lt;/b&gt;There are obvious concerns about the performance of the SAN itself, but recently, the performance of swap -- which is stored on local arrays, per-node, seems to be a great issue in relation to the IO wait problems.  In fact, some SAN issues have resulted from problems with local storage.  Poor performance of local disks used for swap have caused high-IO wait on the entire machine, causing time-outs to the SAN.  This is particularly troublesome when customers run out of RAM in their instance, triggering page thrashing.  In this case, one or two customers can ruin it for everyone.  To reduce customer page thrashing, we've been raising the resource ceiling, giving (all) customers more RAM.  One intended improvement will be improved swap devices.  The best long-term solution, however, would be a capability to constrain IO per instance, which is not currently possible in kernel space.  Piping swap access through userspace will be slower, but the increased reliability might be more than worth it and is under consideration.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Dropping disks&lt;/b&gt;: Our SAN filer had has been dropping disks left and right.  At one point, it lost an entire mirror set, although we were able to recover it.  Some of these problems have been due to the controller itself, and we've upgraded the firmware to resolve those issues.  However, some of the disks themselves seem to be suffering from "old age" after a single year.  SMART returns "good", badblock scans are clean, but it appears that "old age" may have affected latency as drives encounter more internal errors.  Disk latency is bad, it triggers drive removals by our "intelligent" disk controller.  We've replaced 1/3rd of the disks in our array and moved to three-way mirroring (adding disks) to protect against multiple disk failures.  Unfortunately, it seems that we still need to replace more disks.  I think in this regard, we're learning a lot of the same issues that Google has according to their study, "&lt;i&gt;Failure Trends in a Large Disk Drive Population&lt;/i&gt;".  As a result of these replacements, we've had to run a lot of background reconstructions, affecting performance and IO-wait.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;SAN OS crashes&lt;/b&gt;: A few times, the SAN itself has crashed. Initially, it happened due to controller &amp;amp; os crashes upon drive hotswap, even from automatic drive removal, an issue now resolved by a firmware update.  Then, we experienced, of all things, a CPU fan failure, also resolved.  Finally, this past week, we've experienced what appears to have been a hangup in the controller's kernel driver.  The only improvements which seem possible here are controller redundancy and OS upgrades.  Most immediately, we'll upgrade the OS.  We'll probably add another controller soon.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;iSCSI+ZFS is slow&lt;/b&gt;: Our current version of the OpenSolaris OS has bugs and limitations which affect performance for our use case.  The actual explanation for this is beyond this article, but essentially, limitations in the iSCSI implementation are preventing the system from benefiting from OS, disk, or controller cache.  Worse, it results in additional, unnecessary writes to disk which would otherwise not occur.  This means that performance suffers significantly during normal operation, let alone during background reconstructions or other high-load periods.  A new release of OpenSolaris resolving these issues is scheduled to be released this month (March 2010), we are lab-testing and will schedule an upgrade when appropriate.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;CLVM&lt;/b&gt;: Some of our nodes are using CLVM. We're not happy with LVM or the RedHat cluster suite. It hasn't scaled and has been a source of crashes and reboots.  In January, we were able to complete software modifications which allow us to use iSCSI directly and new accounts are no longer stored on LVM.  Luckily for those still on the nodes using CLVM, we've addressed most/all of the issues and have recently made a change that may drastically improve reliability and stability.  Still, we're actively seeking to migrate those customers still on CLVM away from it.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Node crashes&lt;/b&gt;:  Some of our nodes have simply proven unstable.  Some of the problems we've run into have been strictly software, such as when a node crashes upon performing a "shutdown force" of an instance.  Some however, have been clearly hardware, or kernel drivers.  For those issues which are strictly software, we've been upgrading those machines, especially those most frequently affected by crashes, with newer kernels.  As for hardware, we had made the decision to replace some machines.  At this time, we're putting a &lt;i&gt;temporary&lt;/i&gt; hold on that idea for further evaluation before we mindlessly throw money at a problem, but may likely proceed.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Instances are reinstalled poorly&lt;/b&gt;: Due to legacy concerns, reimaging is performed in a sub-optimal way.  While this hasn't been explicitly linked to widespread stability problems and to no issues recently, it has been clearly linked to a few isolated cases from 2008.  It is clear that even if our current solution is not a cause of instabilities, that it carries a great potential for causing instabilities and must be improved.  In February, we rewrote our installation script in a more stable fashion.  This was not sufficient to solve the (potential) problem, but was a necessary step towards this goal.&lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>upgrade</category>
                
                
                    <category>vps</category>
                
                
                    <category>support</category>
                
                
                    <category>hardware</category>
                
                
                    <category>failure</category>
                
                
                    <category>virtualization</category>
                
                
                    <category>xen</category>
                
                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Sat, 13 Mar 2010 11:18:23 -0500</pubDate>

                
            </item>
        
        
            <item>
                <title>User preferences in Cloud Shell</title>
                <guid>http://community.grokthis.net/blog/archive/2010/03/03/user-preferences-in-cloud-shell</guid>
                <link>http://community.grokthis.net/blog/archive/2010/03/03/user-preferences-in-cloud-shell</link>
                <description>
&lt;p&gt;VPS/Cloud customers may now set user preferences via the cloud-shell application.  Currently, we're supporting two such preferences and will continue to expand this list to support a wide array of user-configurable options...&lt;/p&gt;
&lt;p&gt;The current variables include:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; &lt;i&gt;cpu_arch&lt;/i&gt;, which should be '32' or '64'. Default is 64.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt; autoheal&lt;/i&gt;, which should be 1 or 0.  Default is 1.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The&lt;i&gt; cpu_arch&lt;/i&gt; setting will be used to determine which architecture kernel should be loaded on boot.  Please note that the &lt;i&gt;boot_method&lt;/i&gt; variable may override this setting.  WARNING: the legacy command 'boot32' has been removed in favor of this user-preference.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;i&gt;autoheal&lt;/i&gt; setting will determine whether or not the configured instance pool will be automatically restored/rebooted upon failure.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;To set or get these variables, use the commands 'setpref' and 'getpref' as such:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cloud-shell&amp;gt; setpref &lt;i&gt;cpu_arch&lt;/i&gt; 32&lt;/p&gt;
&lt;p&gt;cloud-shell&amp;gt; setpref &lt;i&gt;autoheal&lt;/i&gt; 0&lt;/p&gt;
&lt;p&gt;cloud-shell&amp;gt; getpref&lt;/p&gt;
&lt;p&gt;$VAR1 = { &lt;br /&gt;          'client:NNN:pref:cpu_arch' =&amp;gt; '32',&lt;br /&gt;          'client:NNN:pref:autoheal' =&amp;gt; '0'&lt;br /&gt;        };&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;It should be noted that reimaging your OS currently cannot modify these variables.  Thus, if you switch from a 32-bit or 64-bit OS, you must modify the cpu_arch variable manually. This is a forthcoming improvement we must make to the system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE:  New 'boot_method' preference available!&lt;/b&gt;&lt;br /&gt;Currently accepted boot methods are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;pv&lt;/i&gt; - Paravirtualized (&lt;b&gt;default&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;&lt;i&gt;pv_part&lt;/i&gt; - Paravirtualized, Partitioned disk&lt;/li&gt;&lt;li&gt;&lt;i&gt;pvgrub&lt;/i&gt; - Paravirtualized, with GRUB&lt;/li&gt;&lt;li&gt;&lt;i&gt;rescue&lt;/i&gt; - Boot into rescue image&lt;/li&gt;&lt;/ul&gt;
Boot methods internally implement CPU architecture support and may optionally ignore or reject a configured &lt;i&gt;cpu_arch&lt;/i&gt; setting.&lt;br /&gt;</description>
                <author>Eric Windisch</author>

                
                    <category>upgrade</category>
                
                
                    <category>cloud</category>
                
                
                    <category>software</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Wed, 03 Mar 2010 15:42:29 -0500</pubDate>

                
            </item>
        
        
            <item>
                <title>Snapshots: Archiving and restore from Cloud-Shell</title>
                <guid>http://community.grokthis.net/blog/archive/2009/11/10/archiving-and-restore-from-cloud-shell</guid>
                <link>http://community.grokthis.net/blog/archive/2009/11/10/archiving-and-restore-from-cloud-shell</link>
                <description>
&lt;p&gt;We are now allowing customer testing of Archive and Restore from our cloud-shell management console (https://secure.grokthis.net/manage/vps).  Currently, only our FURY and RORSCHACH nodes have this feature enabled, other nodes will be upgraded to support this during a future scheduled maintenance window.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The process is quite simple, once you login to the shell you should see the standard cloud-shell command prompt:&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;cloud-shell&amp;gt;&lt;/pre&gt;
&lt;p&gt;To archive and snapshot your instance, simply run, &lt;i&gt;archive&lt;/i&gt;.  Note that this will briefly take your instance offline.&lt;/p&gt;
&lt;pre&gt;cloud-shell&amp;gt; archive&lt;br /&gt;Archiving instance: 000&lt;br /&gt;Instance running. Proceeding.&lt;br /&gt;NOTE: Your instance will now be paused.&lt;br /&gt; This will briefly take your instance offline (~0-60 min)&lt;br /&gt;4 GB 01:01:01 [17 MB/s] [======&amp;gt; ]  100%  ETA 0:00:00&lt;br /&gt;192 MB 01:01:01 [17 MB/s] [=====&amp;gt;]  100%  ETA 0:00:00&lt;br /&gt;0+N records in&lt;br /&gt;0+N records out&lt;br /&gt;Your instance has been resumed.&lt;br /&gt;cloud-shell&amp;gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;To restore from your archive, first &lt;i&gt;shutdown&lt;/i&gt; the instance, then execute &lt;i&gt;restore&lt;/i&gt;:&lt;/p&gt;
&lt;pre&gt;cloud-shell&amp;gt; shutdown&lt;br /&gt;cloud-shell&amp;gt; status&lt;br /&gt;Guest: shutdown&lt;br /&gt;cloud-shell&amp;gt; restore&lt;br /&gt;4 GB 01:01:01 [17 MB/s] [======&amp;gt; ]  100%  ETA 0:00:00&lt;br /&gt;192 MB 01:01:01 [17 MB/s] [=====&amp;gt;]  100%  ETA 0:00:00&lt;br /&gt;0+N records in&lt;br /&gt;0+N records out&lt;br /&gt;Your instance has been restored to its prior state.&lt;br /&gt;cloud-shell&amp;gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;The restore command will return your instance to the last stored archive.  This includes disk block storage, swap, and RAM.  There should be no need to manually &lt;i&gt;boot&lt;/i&gt; the instance after a restore.&lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>


                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Tue, 10 Nov 2009 13:43:54 -0500</pubDate>

                
            </item>
        
        
            <item>
                <title>Booting with Grub (custom kernels!)</title>
                <guid>http://community.grokthis.net/blog/archive/2009/09/17/booting-with-grub-custom-kernels</guid>
                <link>http://community.grokthis.net/blog/archive/2009/09/17/booting-with-grub-custom-kernels</link>
                <description>
&lt;p&gt;To run a custom kernel, you need only two things, a kernel (of course!) and a GRUB configuration.&lt;/p&gt;
&lt;p&gt;
Lets start with GRUB.  This assumes that you will not be using an initrd file, but you may use one, and that your kernel image will be installed as /boot/vmlinuz:&lt;/p&gt;
&lt;pre&gt;# mkdir -p /boot/grub&lt;br /&gt;# cat &amp;lt;&amp;lt;EOF &amp;gt; /boot/grub/menu.lst&lt;br /&gt;default		0&lt;br /&gt;timeout		5&lt;br /&gt;&lt;br /&gt;title		Linux Default&lt;br /&gt;root		(hd0)&lt;br /&gt;kernel		(hd0)/boot/vmlinuz root=/dev/sda1 ro console=xvc0 clocksource=jiffies&lt;br /&gt;EOF&lt;/pre&gt;
&lt;p&gt;
That is it for GRUB!  Now, as for your kernel, you just need to make sure that it is compiled to run as a Xen DomU with paravirtualization.  This requires that you use a recent Linux kernel with support for Xen enabled, or you use a patched kernel such as provided by XenSource (http://xenbits.xensource.com/linux-2.6.18-xen.hg) &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The compiled kernel image may be placed anywhere inside your filesystem as long as GRUB is configured to point to it.  The above example assumes this location is /boot/vmlinuz.&lt;/p&gt;
Finally, from the management console, execute the command, "&lt;i&gt;boot-grub&lt;/i&gt;".  This command is API-accessible.  Unfortunately, for now, you will need to manually specify this whenever booting.&lt;b&gt; Your VPS will boot with a system-default image by default, if for instance, the node crashes.  &lt;/b&gt;This caveat will disappear once we complete a migration of all accounts to a grub-based configuration.
</description>
                <author>Eric Windisch</author>

                
                    <category>howto</category>
                
                
                    <category>vps</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Thu, 17 Sep 2009 15:39:29 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Today's outage</title>
                <guid>http://community.grokthis.net/blog/archive/2009/09/12/todays-outage</guid>
                <link>http://community.grokthis.net/blog/archive/2009/09/12/todays-outage</link>
                <description>
&lt;p&gt;Today, we experienced an outage.  Technically, we experienced a few outages.&lt;/p&gt;
&lt;p&gt;We initially discovered that our Galadriel server was offline, and furthermore, that the VPS node that it ran upon was also down.  We began working on restoring this machine when we were distracted by an incoming DoS attack.&lt;/p&gt;
&lt;p&gt;Working (remotely) to extinguish the attack, we found ourselves locked out of the network and triggered a reload of the router.  Upon reloading, the system brought up the services in an atypical order triggering a bug/caveat/quirk previously unknown to us.  While everything looked good on our side, discussions with upstream carriers indicated that all was not as it appeared.  With this input, we quickly located a solution which we began to apply, until...&lt;/p&gt;
&lt;p&gt;A storm knocked out electricity in parts of our neighborhood.  While we retained power, internet connectivity was lost to our offices (note, we have no servers located in these offices).&lt;/p&gt;
&lt;p&gt;Once our branch office internet connectivity was restored, were were able to complete the process of restoring internet connectivity to all servers, restoration of the crashed VPS node and its guest accounts, including the galadriel server.&lt;/p&gt;
&lt;p&gt;We apologize for the inconvenience that this caused.  This explaination seeks only to provide transparency to our operations so that our customers may know the details of service affecting events.&lt;br /&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>failure</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Sat, 12 Sep 2009 03:22:21 -0400</pubDate>

                
            </item>
        
        
            <item>
                <title>Free incoming calls via Skype now available!</title>
                <guid>http://community.grokthis.net/blog/archive/2009/08/28/free-incoming-calls-via-skype-now-available</guid>
                <link>http://community.grokthis.net/blog/archive/2009/08/28/free-incoming-calls-via-skype-now-available</link>
                <description>
&lt;p&gt;Please note that in addition to our international (+1) number and US toll-free (+1 800) numbers, we can now accept Skype-to-Skype calls to SkypeID "grokthisnet".   Skype-to-Skype calls forward directly into our standard telephone and answering systems, providing an inexpensive option for international customers to contact us by voice without expensive international calling rates.&lt;/p&gt;
&lt;p&gt;Please note that due to forwarding delays, Skype calls may require up to 8-10 rings before receiving an answer.  If no one is available to take your call, you will (eventually) be forwarded to our answering system.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
</description>
                <author>Eric Windisch</author>

                
                    <category>support</category>
                

                <!--
                <dc:creator tal:content="feedentry/getAuthor"></dc:creator>
                <dc:rights tal:content="feedentry/getRights"></dc:rights>
                -->

                <pubDate>Fri, 28 Aug 2009 16:08:49 -0400</pubDate>

                
            </item>
        

    </channel>
</rss>


