November 2011

You are currently browsing the monthly archive for November 2011.

Note: I’ve posted a follow-up to this article with some corrected information. Please read here.

I’ve been doing quite a bit of networking-related reading over the last few weeks, and VXLAN has been a key topic of this networking-related reading (along with OTV, MPLS, and OpenFlow). Since VXLAN’s announcement at VMworld US 2011, there have been some pretty good articles written and published about VXLAN. Here are a few, for example:

Digging Deeper into VXLAN, Part 1
VXLAN Deep Dive, Part 2: Looking at the Options
Digging Deeper in VXLAN, Pt 3, More FAQs
The Care and Feeding of VXLAN
VXLAN Part Deux
VXLAN Conclusion
Google+ discussions on VXLAN
VXLAN Primer – Part 1, BORGcube Blogs

However, the one thing that I haven’t seen a great discussion about is the impact of VXLAN on Layer 3 connectivity. I personally have fielded a number of questions about whether VXLAN will fix Layer 3 network connectivity problems with stretched clusters. So, I thought I’d take a stab here. Networking gurus (you know who you are), feel free to straighten me out if I’m wrong.

First, let’s start with a few basic things that we know about VXLAN:

  • We know that VXLAN encapsulates Layer 2 frames into Layer 3 packets (using UDP).
  • We know that VXLAN adds a 24-bit VXLAN Network Identifier (VNI) that allows for up to 16 million unique combinations.
  • We know that VXLAN Segments are built between VXLAN Tunnel End Points (VTEPs). In the initial implementation of VXLAN, the VTEP will be the Nexus 1000V VEM on an ESXi host.
  • We know that (for now) VXLAN is not understood by any physical networking devices (the transport that carries the encapsulated frames only needs to an IP-based network). (VXLAN encapsulation is a subset of OTV encapsulation, so in theory the Nexus 7000 hardware is capable of decoding VXLAN.)

With that information in mind, I’d like to use the following diagram to frame the discussion.

In the diagram, there are two ESXi hosts acting as VTEPs. Between them exist two VXLAN segments with two different VNIs (VNI 738 and VNI 864). Because VXLAN works by encapsulating Layer 2 frames into Layer 3 packets and then routing these packets between VTEPs, VXLAN accomplishes one of its primary goals: it extends Layer 2 connectivity across Layer 3 networks.

But what does that mean, exactly?

Let’s look a bit more closely. The brown shape loosely represents Layer 2 connectivity within VNI 738 (a given VXLAN segment) and its associated VLAN(s). The Windows-based VM on the ESXi host on the left can communicate via Layer 2 with the Linux-based VM on the ESXi host on the right, even though those ESXi hosts reside in completely different broadcast domains separated by a Layer 3 routed network. The key phrase here, in my mind, is that VXLAN extends Layer 2 connectivity within a given VXLAN segment.

This is not, however, the sort of “extending Layer 2 connectivity across Layer 3 networks” that people are expecting.

What people are expecting from this phrase is that you could migrate a VM from the ESXi host on the left to the ESXi host on the right (as indicated in the diagram by the large arrow pointing from left to right) and still have full IP connectivity.

In this case, the VM itself will be able to maintain the same IP address, and other VMs in the same VXLAN segment will continue to communicate with the migrated VM without any issues. But hold on a second…

We know that VXLAN allows for duplicate IP addressing schemes across different VXLAN segments (but not in the same VXLAN segment), duplicate MAC addresses across different VXLAN segments (but not in the same VXLAN segment), and duplicate VLAN IDs across different VXLAN segments (but not in the same VXLAN segment). You could, for example, use the same IP addressing scheme, same MAC addresses, and same VLAN IDs in the brown (VNI 738) and blue (VNI 864) VXLAN segments. VXLAN wouldn’t care, and the VMs inside those VXLAN segments would be unaware of this duplicity.

However, what VXLAN doesn’t address is IP translation; that functionality is relegated to a network address translator. In this case, it’s vShield Edge (VSE). So, in the instance where a VM is migrated between different Layer 3 networks, note that the only way to maintain IP connectivity from outside the VXLAN segment is to update the address translation tables and—here’s the kicker—assign the VM a new (and different) externally-accessible IP address. That breaks IP connectivity—even with dynamic DNS updates, clients will still have cached DNS responses pointing them back to the (now inactive) old external IP address. Thus, VXLAN breaks Layer 2/3 connectivity to other systems outside the VXLAN segment.

This issue, by the way, would be why various networking gurus have repeatedly stated that VXLAN does not replace OTV. To fix the issue described above, you’d have to use OTV to stretch the external-to-VXLAN VLANs so that the NAT mappings could remain unchanged and the externally accessible IP address would remain the same.

Before you assume that I knocking VXLAN, let me reaffirm that I’m not. I only felt that there hadn’t been a good, solid, understandable explanation of what sorts of connectivity were and were not extended/affected by VXLAN. Hopefully, this message has helped bring some clarity to the topic.

If I have misrepresented anything, presented something incorrectly, or if you have questions/clarifications, please let me know in the comments. Thanks!

UPDATE: As a couple of readers pointed out in the comments (thanks!), the Layer 3 connectivity isn’t quite as dire as what I’ve described. Instead of the VM’s address having to change due to a change in NAT mappings on a VSE, instead the VM’s traffic will “trombone” back to the original VSE that acts as the VXLAN segment’s default gateway. Again, thanks for the clarification/correction all!

Tags: , , ,

One of the features added in vSphere 5 was a software FCoE initiator. This is a feature that has gotten relatively little attention, other than a brief mention here and there. I’m not entirely sure why the software FCoE initiator in vSphere 5 hasn’t gotten more attention, but this past week I had the opportunity to work with the software FCoE initiator in a bit more detail. In this post I’m going to describe in a bit more detail how to set up the software FCoE initiator; in future posts, I hope to be able to provide some performance and troubleshooting information.

Prerequisites

In order to use the software FCoE initiator, you must have a network interface card (NIC) that supports the FCoE offloads. The Intel X520 NICs certainly do; these are the cards that I used in my testing. (Disclaimer: Intel provided me a pair of X520 NICs at no charge to use in this testing.) There might be others, I don’t know; the VMware HCL doesn’t seem to provide an easy way of identifying those NICs that do support the FCoE offloads vs. those NICs that don’t.

If you have a NIC that doesn’t support FCoE offloads, you won’t even be able to add a software FCoE initiator:

If, on the other hand, your NIC does support FCoE offloads, you’ll see the option to add a software FCoE initiator, like this:

Obviously, you’ll want to be sure that your NIC does support FCoE offloads before continuing.

Setting Up Networking for Software FCoE

Before you can actually set up a software FCoE initiator, you’ll first need to configure your networking appropriately. There is one important piece of information you’ll want to be sure to have before you continue: the ID of the VLAN for FCoE traffic.

If you’ve read my article on setting up FCoE on a Nexus 5000, then you know that—on a Nexus 5000 series switch, anyway—you must map the FCoE VSAN to a VLAN (using the fcoe vsan XXX command). You’re going to need that VLAN ID, so make sure that you have it. In a dual fabric setup, you’re going to have two different VLAN IDs. You’ll need both.

Once you have those VLAN IDs, you can then proceed with the networking setup:

  1. Create a VMkernel port on your ESXi host. When creating the VMkernel port, when prompted for VLAN ID specify the FCoE VLAN on fabric A.
  2. I don’t know why (and maybe this will be fixed in a future release), but you’ll need to assign an IP address to each VMkernel port. The IP address will not be used, so just pick an address on a subnet that you don’t use. (Don’t use a subnet that you are using elsewhere on the ESXi host or you could run into IP routing weirdness—remember that the VMkernel uses the first interface it finds for a particular route.)
  3. After you’ve created the VMkernel port, modify the NIC teaming policy to only use the physical uplink that is physically connected to fabric A. This might require a bit of sleuthing and/or using CDP/LLDP data to ensure that you have the right uplink selected.
  4. Create a second VMkernel port on your ESXi host, this time specifying the FCoE VLAN ID for fabric B and modifying the NIC teaming policy
    When creating the VMkernel ports, specify the appropriate VLAN IDs—one for fabric A, one for fabric B. Modify the NIC teaming policy to only use the physical uplink connected to fabric B, again using physical tracing and CDP/LLDP data as needed to verify it.

At this point, you should now have two VMkernel ports, each with separate (unused) IP addresses and configured for separate VLAN IDs and separate physical uplinks. The VLAN IDs and the physical uplinks should correspond to the FCoE fabrics (fabric A and fabric B).

Setting Up the Software FCoE Initiator

With the networking in place, you can actually add the software FCoE initiator using the “Add…” button on the Storage Adapters view of the Configuration tab. This opens up the Add Software Adapter dialog box I showed you earlier, where you can select “Add Software FCoE Adapter” and click OK.

That option opens the following dialog box:

You’ll note that the VLAN ID is 0 and isn’t changeable. I couldn’t find any way to enable this field, and in my testing it proved unnecessary to change it (it worked anyway). Select the appropriate physical uplink and click OK. You’ll do this twice—once for fabric A, and again for fabric B. After you’ve done this twice, you’ll have two software FCoE adapters:

For each of these two software FCoE adapters, you’ll see a node WWN and a port WWN listed. You can use these values in creating the zones and zonesets (see here for more information). First, though, you’ll want to be sure that the software FCoE adapter is actually talking to the fabric correctly; the best way to do that is to use the show flogi data command (on a Nexus 5000; other vendors’ switches will use a slightly different command). The outcome of the show flogi data command will look something like this:

In this screenshot (taken from an SSH session into a Nexus 5010), you can see that a device has logged into vfc1009 on VSAN 300. If you compare the port name and node name, you’ll see that they match one of the software FCoE adapters shown earlier. This is only one of the two fabrics; a matching result was seen from the other fabric, showing that both software FCoE adapters successfully logged into their respective fabrics.

At this point, the rest of the configuration consists of creating the appropriate device aliases (if desired); defining zones and zonesets; and presenting storage from the storage array(s) to the initiator(s). Since these are topics that are fairly well understood and well documented elsewhere, I won’t rehash them again here.

In future posts, I hope to be able to do provide some performance and some troubleshooting information. However, it will likely be early 2012 before I have that opportunity. In the meantime, if anyone has any additional information they’d like to share—including any corrections or clarifications—please feel free to add them to the comments below.

Tags: , , , ,

Welcome to Technology Short Take #17, another of my irregularly-scheduled collections of various data center technology-related links, thoughts, and comments. Here’s hoping you find something useful!

Networking

  • I think it was J Metz of Cisco that posted this to Twitter, but this is a good reference to the various 10 Gigabit Ethernet modules.
  • I’ve spoken quite a bit about stretched clusters and their potential benefits. For an opposing view—especially regarding the use of stretched clusters as a disaster avoidance solution—check out this article. It’s a nice counterpoint, especially from the perspective of the network.
  • Anyone know anything about sFlow?
  • Here’s a good post on VXLAN that has some useful information. I’d just like to point out that VXLAN is really only intended to address Layer 2 communications “within” a vApp or a collection of VMs (perhaps a single organization’s VMs), and doesn’t do anything to address Layer 3 routing/accessibility for clients (or “consumers”) attempting to connect to those systems. For that, you’ll still need—at least today—technologies like OTV, LISP, and others.
  • A quick thought that I’m still exploring: what’s the impact of OpenFlow on technologies like VXLAN, NVGRE, and others? Does SDN eliminate the need for these technologies? I’d be curious to hear your thoughts.

Servers/Operating Systems

  • If you’ve adopted Mac OS X Lion 10.7, you might have noticed some problems connecting to older servers/NAS devices running AFP (AppleTalk Filing Protocol). This Apple KB article describes a fix. Although I’m running Snow Leopard now, I was running Lion on a new MacBook Pro and I can attest that this fix does work.
  • This Microsoft KB article describes how to extend the Windows Server 2008 evaluation period. I’ve found this useful for Windows Server 2008 instances in the lab that I need for longer 60 days but that I don’t necessarily want to activate (because they are transient).

Storage

  • Jason Boche blogged about a way to remove stubborn hosts from Unisphere. I’ve personally never seen this problem, but it’s nice to know how to address it should it occur.
  • Who would’ve thought that an HDD could serve as a cache for an SSD? Shouldn’t it be the other way around? Normally, that would probably be the case, but as described here there are certain instances and ways in which using an HDD as a cache for an SSD can improve performance.
  • Scott Drummonds wraps up his 3 part series on flash storage in part 3, which contains information on sizing flash storage. If you haven’t been reading this series, I’d recommend giving it a look.
  • Scott also weighs in on the flash as SSD vs. flash on PCIe discussion. I’d have to agree that interfaces are important, and the ability of the industry to successfully leverage flash on the PCIe bus is (today) fairly limited.
  • Henri updated his VNXe blog series with a new post on EFD and RR performance. No real surprises here, although I do have one question for Henri: is that your car in the blog header?

Virtualization

  • Interested in setting up host-only networking on VMware Fusion 4? Here’s a quick guide.
  • Kenneth Bell offers up some quick guidelines on when to deploy MCS versus PVS in a XenDesktop environment. MCS vs. PVS is a topic of some discussion on the vSpecialist mailing list as they have very different IOPs requirements and I/O profiles.
  • Speaking of VDI, Andre Leibovici has two articles that I wanted to point out. First, Andre does a deep dive on Video RAM in VMware View 5 with 3D; this has tons of good information that is useful for a VDI architect. (The note about the extra .VSWP overhead, for example, is priceless.) Andre also has a good piece on VDI and Microsoft Outlook that’s worth reading, laying out the various options for Outlook-related storage. If you want to be good at VDI, Andre is definitely a great resource to follow.
  • Running Linux in your VMware vSphere environment? If you haven’t already, check out Bob Plankers’ Linux Virtual Machine Tuning Guide for some useful tips on tuning Linux in a VM.
  • Seen this page?
  • You’ve probably already heard about Nick Weaver’s new “Uber” tool, a new VM alignment tool called UBERAlign. This tool is designed to address VM alignment, a problem with how guest file systems are formatted within a VMDK. For more information, see Nick’s announcement here.
  • Don’t disable DRS when you’re using vCloud Director. It’s as simple as that. (If you want to know why, read Chris Colotti’s post.)
  • Here’s a couple of great diagrams by Hany Michael on vCloud Director management pods (both public cloud and private cloud management).
  • People automatically assume that “virtualization” means consolidating multiple workloads onto a single physical server. However, virtualization is really just a layer of abstraction, and that layer of abstraction can be used in a variety of ways. I spoke about this in early 2010. This article (written back in March of 2011) by Brad Hedlund picks up on that theme to show another way that virtualization—or, as he calls it, “inverse virtualization”—can be applied to today’s data centers and today’s applications.
  • My discussion on the end of the infrastructure engineer generated some conversations, which is good. One of the responses was by Aaron Sweemer in which he discusses the new (but not new) “data layer” and expresses a need for infrastructure engineers to be aware of this data layer. I’d agree with a general need for all infrastructure engineers to be aware of the layers above them in the stack; I’m just not convinced that we all need to become application developers.
  • Here’s a great post by William Lam on the missing piece to creating your own vSEL cloud. I’ll tell you, William blogs some of the coolest stuff…I wish I could dig in as deep as he does in some of this stuff.
  • Here’s a nice look at the use of PowerCLI to help with the automation of DRS rules.
  • One of my projects for the upcoming year is becoming more knowledgeable and conversant with the open source Xen hypervisor and Citrix XenServer. I think that the XenServer Design Handbook is going to be a useful resource for that project.
  • Interested in more information on deploying Oracle databases on vSphere? Michael Webster, aka @vcdxnz001 on Twitter, has a lengthy article with lots of information regarding Oracle on vSphere.
  • This VMware KB article describes how to enable centralized logging for vCloud Director cells. This is particularly important for HA environments, where VMware’s recommended HA strategy involves the use of multiple vCD cells.

I guess I should wrap it up here, before this post gets any longer. Thanks for reading this far, and feel free to speak up in the comments!

Tags: , , , , , , , , , , , , , ,

A colleague on the EMC vSpecialist team (many of you probably know Chris Horn) sent me this information on an issue he’d encountered. Chris wanted me to share the information here in the event that it would help others avoid the time he’s spent troubleshooting this issue.

What Chris has found is that there is a flaw in Windows Server 2008 and Windows 7 that causes “orphaned NICs” when using the VMXNET3 network driver. There appear to be three cases in which this problem appears:

  1. When you deploy an OVF or OVA of Windows Server 2008 or Windows 7
  2. When you clone a VM running Windows Server 2008 or Windows 7 (this also applies to deploying from a template)
  3. When deploying a vApp within vCD that contains Windows Server 2008 or Windows 7 (this can cause quite a bit of chaos)

Up until now, there were two available workarounds that appeared to resolve this issue:

  1. Use the Intel E1000 driver, which doesn’t cause the same problem. However, it’s unclear how well the E1000 performs with 10 Gigabit Ethernet uplinks.
  2. Use a statically assigned MAC address, which of course doesn’t scale very well in large (and/or dynamic) environments. This is also very difficult to do in vCloud Director (apparently even rising to the level of having to hack the vCD database).

It would appear that the behavior Chris describes is captured in this VMware KB article. There is also a hotfix available in this Microsoft KB article; Chris has tested this hotfix and indicates that it does indeed fix the problem. The referenced Microsoft KB article and the referenced VMware KB article also reference this third Microsoft KB article, further leading me to believe that the articles are indeed related to the same underlying issue.

If you are deploying Windows Server 2008 and/or Windows 7-based VMs in your environment, you might want to take a look at the linked VMware KB and Microsoft KB articles to be sure that you don’t run into the same sorts of problems Chris was experiencing.

Thanks Chris!

Tags: , , , , ,

Giving Thanks on Thanksgiving

Here in the United States we are preparing to celebrate the Thanksgiving holiday, and it’s a time of reflection. It’s a time to be thankful for what we have and what we’ve been given. This past year has been a tremendous year for me, both personally and professionally, with lots of things for which to be thankful:

  • Along with Forbes Guthrie and Maish Saidel-Keesing, in March we launched VMware vSphere Design (available here from Amazon). Even now—as far as I’m aware—it’s the only book on the market to comprehensively address vSphere-related design considerations.

  • In May, my oldest daughter gave birth to her first child, a girl.

  • I relocated from Raleigh-Durham, NC to Denver, CO. I’m very thankful for this relocation—my family and I are really enjoying the new area.

  • In October, Mastering VMware vSphere 5, still one of the only vSphere 5 books on the market (and the only comprehensive look at the new virtualization suite from VMware), became widely available.

  • In November, my 1998 Chevy Suburban (still with its original engine) rolled past 300,000 miles. Now that’s something for which to be thankful!

While I can thank a number of people who have helped me this year—people like Forbes and Maish, for allowing me to join them on the Design book; my editor, Agatha; my co-workers at EMC on the vSpecialist team; my wife, Crystal, for her never-ending support and tireless cheerleading; Forbes, Gabe, and Glenn for their help with the last version of Mastering—my greatest thanks is reserved for the Lord. All my successes and all my triumphs come from Him.

So, in this Thanksgiving season, while I extend my thanks to my family, my friends, and my co-workers, I’d also like to extend my thanks to the Lord. Thanks for blessing me, thanks for providing for me, and—most importantly—thanks for saving me.

Happy Thanksgiving everyone!

Tags:

(This is Part 2 of a two-part series on some open source software I’ve incorporated into my primarily Mac-based home office setup. Read Part 1.)

In Part 1 of this series, I talked about how I’d leveraged Synergy to provide a shared mouse and keyboard across the three computers (two Macs and one Linux laptop) in my home office. In this part, I will discuss the solution I employ for keeping files synchronized between the two Macs in my home office. I’ll give you a hint: It’s not Dropbox.

No, it’s another open source application. It’s called Unison (not to be confused with the Mac Usenet reader of the same name), and it provides intelligent two-way synchronization of files between multiple computers across multiple platforms. In my case, I use it only to keep files synchronized between my two Mac laptops, but this is not due to a limitation in Unison; this is only because my Linux laptop is used for other purposes and I don’t really benefit from having all these documents available on it.

Specifically, I used a pre-compiled version of Unison available here for Mac OS X. While this provides a pretty GUI for Unison, there are some oddities to getting it to work as expected that I wanted to document here.

First, let’s take a quick look at “the big picture” for getting this running:

  1. Configure public key SSH authentication between the computers involved. (More on this in a moment.)
  2. Install Unison. (This is as simple as mounting the .DMG and copying Unison into the destination of your choice. I put it in /Applications/Utilities.)
  3. Create the Unison profiles. The Unison GUI only gets you part of the way there—this is one of the oddities.

Configuring SSH Public Key Authentication

I’m not going to go into a lot of detail here; there are tons of sites that provide excellent instructions on how to create a public/private key pair and use that key pair for SSH authentication (here’s one). The primary goal for which we are striving is passwordless logins for Unison, so that it can leverage SSH to encrypt the connections between the computers during file synchronization operations. (You do want secure file synchronization, right?)

In my case, I’m leveraging what’s known as a “star” topology. That is, my two Mac laptops (a 2011 13″ MacBook Pro and a 2009 15″ MacBook Pro) don’t synchronize directly with each other; they synchronize through a third computer, which acts as the “server” in the center of my three-node “star.” Why this topology? I didn’t/don’t want to have to enable SSH connections into either of my Mac laptops, but I already have SSH connections established to the server. (In this case, the server is a Mac Mini running Snow Leopard Server.)

For my setup, then, I needed to configure public key authentication between the laptops and the Mac Mini. For your setup, it will depend upon your topology, and that will drive the specific steps you must take.

Installing Unison

As I mentioned above in the overview, installing Unison is like installing any other Mac app: mount the .DMG, copy the application to the desired location. The prebuilt Mac binaries of Unison that I used are no different, so I’ll skip any more details on that step and move instead to creating the Unison profiles.

Creating the Unison Profiles

While the Unison GUI provides a very sparse UI for creating profiles, you will most assuredly need to supplement the GUI with editing the profile yourself by hand. Profiles created by Unison are stored in ~/Library/Application Support/Unison as *.prf files that can be edited by any text editor (I use TextMate).

Follow this general procedure to get a Unison profile set up properly:

  1. Launch Unison and create the profile. Supply the necessary information (the local root, remote username, remote host, and remote root).
  2. Quit Unison.
  3. Navigate to ~/Library/Application Support/Unison and open the .PRF file that corresponds to the profile you just created.
  4. At the very least, you must add a servercmd statement to the profile, or Unison won’t work at all (you’ll get “fatal error”-type message about not being able to connect to the server). This is where I was stuck for quite some time—see below for more information.
  5. Launch Unison, select the profile you just edited, and open it. It should now work.

Now, let’s talk about the servercmd statement. This statement tells Unison where to find the Unison executable on the remote host. With the prebuilt binaries of Unison that I use (and these are the binaries to which most Google searches will point you, found here), it will prompt you to install a command-line tool. If you opt to install this command-line tool, it places an executable at /usr/bin/unison. Naturally, you would think that this would be the value you’d specify for servercmd, right? You’d be wrong.

The executable at /usr/bin/unison simply launches the Unison GUI. If you try to run that via SSH (as Unison will attempt to do when you try to open the profile), it will report an error—you can’t launch a GUI app on a remote system via SSH. This is the root cause of the “unable to connect” or “fatal error” or “server not responding” error messages with Unison: it doesn’t know how/where to find the server-side executable.

The fix is to specify the full path the Unison executable that is buried inside the Mac application package. Let’s say you install Unison (which is an application bundle; bundles look like folders at the command line) to /Applications/Utilities, like I did. In that case, the right binary to point to is this one:

/Applications/Utilities/Unison.app/Contents/MacOS/Unison

When you specify that value for the servercmd statement in the Unison profile, everything works (assuming that your public key authentication via SSH is working as expected).

Therefore, you have two options to make Unison work. Both options involve editing the .PRF file and adding a servercmd statement:

  1. In Option 1, you specify the full path to the Unison executable inside the application bundle (like specified above) in the servercmd statement.
  2. In Option 2, you create a symlink between /usr/bin/unison and the full path to the Unison executable, and specify /usr/bin/unison for the servercmd statement. This is the route I chose.

I highly recommend you read this page on the Unison Wiki, as it provides a wealth of other information on what should or should not be included in your Unison profile. It also reminds you that you must edit your .PRF file in order to make Unison work.

Here’s a sanitized version of the Unison profile that I’m using to keep files synchronized:

root = /Local/Path/To/Files
root = ssh://username@remote.host.com//Remote/Path/To/Files
servercmd = /usr/bin/unison
fastcheck = true
sortnewfirst = true
confirmbigdeletes = true
ignore = Name .FBCIndex
ignore = Name .FBCLockFolder
ignore = Name .Apple*
ignore = Name *.tmp

There are a few more ignore statements in there, but you get the idea. Refer to the Wiki page for a more detailed listing of suggested ignore statements. Oh, and the double forward slash in the second root statement is intentional, not a typo (this is the right syntax).

Keep in mind that this profile assumes that you’ve created a symlink (using ln -s) to the Unison executable inside the application bundle, as I described earlier. If you didn’t create the symbolic link, the servercmd statement must have the full path all the way inside the application bundle.

Once you have your profile configured correctly, you can run the Unison GUI app, open the profile, and you should be off to the races. (In other words, it should work just fine.) In my case, I did an initial synchronization of around 6GB of data in a matter of minutes, and subsequent synchronization operations have been astonishingly fast.

If there are any questions, tips, clarifications, or corrections, please speak up in the comments. Thanks, and I hope you find this useful!

Tags: ,

As you probably already know, I’ve been working extensively with Markdown (and MultiMarkdown) over the last few months, and it has rapidly become my preferred format for content creation. To help me more extensively leverage Markdown for all my content creation, I came across this OmniOutliner plug-in by Fletcher Penny that allows me to export outlines as Markdown.

The instructions on how to install this plug-in are vague, so here are the steps you need (verified on two different Mac laptops running OmniOutliner 3.10.3 on Snow Leopard 10.6.8):

  1. Copy the Markdown.ooxsl folder (this is Fletcher’s plug-in) into the ~/Library/Application Support/The Omni Group/OmniOutliner/Plug-Ins directory.
  2. Restart OmniOutliner, if it is running.

Once you install the plug-in, then you’ll see two new options for exporting documents when you select File > Export:

  • Markdown (Text)
  • Markdown (With Attachments)

Enjoy!

Tags: ,

(This is Part 1 of a two-part series on some open source software I’ve incorporated into my home office setup, which is primarily Mac-based. Part 2 is here.)

Since my move to Denver a couple months ago, I’ve had a home office large enough to do a full multi-computer setup. Space constraints in my home office in Raleigh-Durham had prevented me from being able to fully take advantage of the multiple laptops that I have. So, with the new space in Denver, I set out to go full-bore. At the time, I had a late 2006 era 15″ MacBook Pro, a mid-2009 MacBook Pro 15″, and a Dell Latitude E6400 running Ubuntu Linux. (I’ve since replaced the late 2006 15″ MacBook Pro with an early 2011 13″ MacBook Pro.)

Of course, the real challenge with a multi-computer setup is the need for a shared keyboard and mouse, and that was the first challenge I had to tackle. The answer was found in Synergy, an open source project that provides a shared keyboard and mouse across multiple computers.

For those unfamiliar with Synergy, here’s a little background: one computer (known as the “server”) hosts the keyboard and mouse. The server’s keyboard and mouse are shared with other computers referred to as “clients”. The server/client designation makes sense to me now, but I recall at the time it seemed a bit odd.

I messed around with a few different distributions or variations of Synergy (like SynergyKM) for a little while before realizing that only the “real” version of Synergy was going to give me the flexibility that I wanted. For example, I wanted a bit more control over how and when the cursor jumped from screen to screen, and none of the prepackaged versions of Synergy offered customizable controls, even though the underlying Synergy package did.

From this Synergy downloads page, I downloaded the Mac and Linux versions of the 1.4.x beta version of Synergy. Despite my best efforts, I could not make it work. Keystroke mappings were off, the screen switching was intermittent, and it was buggy. Finally, I dropped back to the latest stable release at the time (1.3.6). Using the exact same configuration files, the 1.3.6 release worked flawlessly the first time. Nice!

Here’s my setup:

  • One of the MacBook Pro laptops (the 15″ 2009 MBP originally, now the 13″ 2011 MBP) is the Synergy server. It sits in the “center” of the three computers on my desk. It has a 24″ Apple Cinema display, external keyboard, Bluetooth Magic Mouse, and Magic Trackpad.
  • The other MBP (formerly the 15″ 2006 MBP, now the 15″ 2009 MBP) sits to the left of the Synergy server. It is, of course, a Synergy client.
  • The Dell laptop running Ubuntu Linux sits to the right of the Synergy server and is a Synergy client.

With that in mind, here is a sanitized version of the synergy.conf file I use on the Synergy server (currently the 13″ 2011 MacBook Pro):

section: screens
    center-laptop:
    left-laptop:
    right-laptop:
end

section: aliases
    center-laptop:
        center-laptop.domain.com
        center-laptop-wlan
        center-laptop-wlan.domain.com
    right-laptop:
        right-laptop.domain.com
        right-laptop-wlan
        right-laptop-wlan.domain.com
    left-laptop:
        left-laptop.domain.com
        left-laptop-wlan
        left-laptop-wlan.domain.com
end

section: links
    center-laptop:
        left = left-laptop
        right = right-laptop
    right-laptop:
        left = center-laptop
    left-laptop:
        right = center-laptop
end

section: options
    screenSaverSync = false
    switchCorners = bottom-right
    switchCornerSize = 20
    switchDoubleTap = 150
    keystroke(control+left) = switchInDirection(left)
    keystroke(control+right) = switchInDirection(right)
end

The documentation for Synergy is pretty straightforward, so I’d recommend you read the docs for more details on each of the directives and configuration options above and their function. What this configuration gives me:

  • I can use Control+Left Arrow to move one screen to the left, and Control+Right Arrow to move one screen to the right.
  • The switchDoubleTap option allows me to have to “double-tap” the edge of the screen before it will switch to the next screen; this prevents me from accidentally switching screens when I didn’t mean to.
  • The Mac versions of Synergy didn’t support synchronizing the screen saver, hence the screenSaverSync = false statement.
  • Although it’s not explicitly called out anywhere here, installing the stable 1.3.6 build of Synergy on my Ubuntu laptop was straightforward, and launching Synergy is as simple as /path/to/synergyc center-laptop.

On the Macs, launching Synergy (as either server or client) is handled via shell script called by ControlPlane, a handy Mac application that is a fork of the older (and apparently abandoned) Marco Polo project. The shell script is quite simple; it checks to see if Synergy is running and launches it if it isn’t. (Nothing special there.) On the Linux laptop, I launch it manually as needed.

If you use multiple computers in your office, I’d strongly recommend having a look at Synergy—I’ve found it to be quite useful. If anyone has any other tips or tricks pertaining to Synergy or any of the other topics mentioned in this post, please feel free to speak up in the comments.

Tags: , ,

While I was in Copenhagen for VMworld EMEA 2011, I ran into a few EMC colleagues from the Solutions Center in Cork, Ireland. I’d visited Cork a couple of times last year (haven’t had the opportunity this year, sadly), so it was great to catch up with them. During our conversation, one of them mentioned that the EMC Proven Solutions Group has a YouTube channel and had posted some new vSphere 5-related content.

Here’s some of the new vSphere 5-related content that they’ve generated over the last month or so:

Multi-NIC vMotion in vSphere 5 with SQL:
http://www.youtube.com/watch?v=X8AqMhdz3OE

Using EMC VSI 5 VMware vCenter Plug-In:
http://www.youtube.com/watch?v=6lRq9ha7_5w

Using VMware vSphere 5 Hot-Add to Dynamically Add CPU:
http://www.youtube.com/watch?v=GnvXt6bug00

VMware vSphere 5 – Using Image Builder to Create Custom ISO:
http://www.youtube.com/watch?v=AfjEyB2FTwc

vSphere 5 Storage DRS based on Datastore Capacity Utilization:
http://www.youtube.com/watch?v=1hFQOFc8coE

Clearly there are other video tutorials/overviews that cover this material as well, but sometimes it’s helpful to see it from multiple perspectives. I wanted to point this out in case someone might find it useful. Enjoy!

Tags: , , ,

vSphere HA and vApps

This is probably obvious to most everyone, but for those who don’t already know it’s important to point this out: vSphere HA does not honor vApp startup settings. So while you can go into the properties for a vApp and define the order in which VMs will start (or stop) and the timing between those actions, vSphere HA will not recognize or honor those settings. Therefore, in a situation where an ESX/ESXi host fails and that host is running a vApp, the individual VMs in the vApp could be restarted in an entirely different order than what you specified in the vApp settings.

Be sure to plan accordingly when using vApps in your environment.

Tags: , ,

« Older entries