[linux-lvm] metadata format processing
Dieter Stüken
stueken at conterra.de
Mon Sep 12 14:22:59 UTC 2005
I want to develop a tool to get a graphical representation of my LVM configuration.
I thought about parsing the output of lvm commands, or even using the C-API directly.
Unfortunately I did not found a way to enforce read only access when using the API.
All user space tools have to run as root and may modify/destroy my LVM. So I think
they are a bad choice to build any CGI-scripts upon. Finally I discovered the external
metadata format, which describes any aspects of my LVM in detail. After I even found
a parser for this syntax within the LVM libs, I was able to convert the metadata
into XML. Once having XML it should be possible to transfer any informations towards
HTML or SVG.
My very first try looks like this:
<?xml version="1.0" encoding="ISO-8859-1"?>
<lvm>
<contents>Text Format Volume Group</contents>
<version>1</version>
<description>Created *after* executing 'lvextend /dev/raster/eglv -l 7452 /dev/sdg1'</description>
<creation_host>linux2</creation_host>
<creation_time>1124130973</creation_time>
<group name="raster">
<id>6FmvZu-mLHD-AIQV-jnFu-hMUN-oTwe-X2zCRm</id>
<seqno>54</seqno>
<status>RESIZEABLE</status>
<status>READ</status>
<status>WRITE</status>
<extent_size>65536</extent_size>
<max_lv>255</max_lv>
<max_pv>255</max_pv>
<group name="physical_volumes">
<group name="pv0">
<id>ruo3gO-jHR7-QV3Z-rUa4-jYnF-GyAn-uUR3vA</id>
<device>/dev/sde1</device>
<status>ALLOCATABLE</status>
<pe_start>384</pe_start>
<pe_count>7452</pe_count>
</group>
<group name="pv1">
<id>ARjpMz-A6iP-8x3t-7aCg-CCSH-kZpo-vt1KPD</id>
<device>/dev/sdd1</device>
<status>ALLOCATABLE</status>
<pe_start>384</pe_start>
<pe_count>7452</pe_count>
</group>
</group>
<group name="logical_volumes">
<group name="eglv">
<id>ylp7ol-r6wT-e2Py-4KZ9-cgjU-6fU0-luciPx</id>
<status>READ</status>
<status>WRITE</status>
<status>VISIBLE</status>
<segment_count>1</segment_count>
<group name="segment1">
<start_extent>0</start_extent>
<extent_count>7452</extent_count>
<type>striped</type>
<stripe_count>1</stripe_count>
<stripes>pv0</stripes>
<stripes>0</stripes>
</group>
</group>
</group>
</group>
</lvm>
I manually shortened it, just as an example...
I used the parser to get it into a "struct config_tree" and developed
some procedure to dump it out as XML. There are some aspects that can be
discussed (why are all nesting elements simply called <group> whereas
arrays are not grouped ...)
I'm just about to learn XSLT to get this processed further.
Is some one interested to participate?
Dieter.
--
Dieter Stüken, con terra GmbH, Münster
stueken at conterra.de
http://www.conterra.de/
(0)251-7474-501
More information about the linux-lvm
mailing list