Steven (unzeugmatic) wrote,

Imagining Software Structures

This is technical work stuff, so be warned. It's an exchange with a developer I found amusing, and I hope you will as well. There are three reasons I am passing this along:

1. It's very difficult for me to explain exactly what I do for a living. "I write manuals about operating systems" yields more questions than it answers. How can I write about things for which I am often not an expert? Do I just get information from software developers and pretty it up? What do I bring to the table? In this case, I am in the process of finding out what the various entries mean in what is supposed to be an internal table of device mappings -- I discovered through watching people work and reading email from the field that people check out this "internal" structure all the time so it might be good if I could document its parameters. In this situation I can spend three weeks pursuing what might turn out to be only a couple of lines of a document. This exchange is me trying to understand what one particular parameter (of about 20 on a single line of the table) means when the result of it all will be only a few words.

2. I am always amused when I see a reference to a UUID -- and believe me, in my line of work I see that a LOT. I am amused because a UUID is a "Universally Unique IDentifier" which sounds as if it should refer to an actual physical thing but actually it refers to a software structure. So already you have the notion that a software structure, a totally made up conceptual aggregate of bits, has a universally unique identifier. That tickles me. But what really amuses me is that this is UNIVERSAL! You can go anywhere in the UNIVERSE and be GUARANTEED that this identifier is UNIQUE! If g$rf*(-dl on Venus wants to use LVM-tOcS1kqFV9drb0X1Vr8sxeYP0tqcrpdegyqj5lZxe45JMGlmvtqLmbLpBcenh2L3 to identify a software structure, well that's just too darned bad for g$rf*(-dl. Venus, heck, even a lifebeing in the Alpha Centauri system is forbidden from using that identifier -- well, that's assuming they follow ISO standards on Alpha Centauri, but of course we assume that. Mind you, this is not to be confused with a mere WWID (Worldwide Identifier), which makes no assumptions about intergalactic protocol and besides it applies to storage networks so it's not as funny.

3. The best part and the reason I decided to reproduce this exchange is that it leads to a software developer beginning an explanation with the word "imagine".

Me to developer, asking about the device-mapping table entry for a mirror in a logical volume:

For two of the log types (clustered_core and clustered_disk), one of the log arguments is UUID. What device is that the UUID for? The node from which the administrator is defining the mirror?

Developer in response

It is simply a unique identifier. When LVM picks it, it is associated with the UUID assigned to the mirror or the mirror log device. If a person were to manually input the device-mapper table, it could be anything they want... as long as it is unique and the same on every node.

Well I knew that it was a unique identifier, but what I hadn't made clear (enough) in my question was that I wanted to know why this parameter only appeared when a mirror is part of a cluster. So I replied as follows:

Why is it necessary only for clustered mirrors? Wouldn't a mirror or a mirror log need to have a unique identifier even on a local system if, for example, there are two mirrors configured?

This yielded the response I love. This truly is one of the nicer-guy developers I've worked with.

Imagine a chunk of memory that holds the state of the (mirror) log. On just one machine, you can create and populate that memory and keep a reference to it based on the device... If you have multiple machines; however, how does one machine tell another machine to change the state of a log if it has no name for it? That's what the UUID is all about. It lets everyone have the same name to associate with a particular log.

More information than I actually require? Extraordinary! All this resulted in one sentence of the document:

In a clustered environment, the UUID argument is a unique identifier associated with the mirror log device so that the log state can be maintained throughout the cluster.

That's what I do for a living. I imagine chunks of memory.

Imagine a chunk of memory. It's easy if you try.
  • Post a new comment


    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.