diff --git a/lib/backend.py b/lib/backend.py
index 382eec55a69f0a26c980b9e636038b95d8e94c23..f0569750d565356ce1744ea0842f5d97d2370bfd 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -258,11 +258,14 @@ def GetVolumeList(vg_name):
                  result.output)
     return result.output
 
+  valid_line_re = re.compile("^ *([^|]+)\|([0-9.]+)\|([^|]{6})\|?$")
   for line in result.stdout.splitlines():
-    line = line.strip().rstrip(sep)
-    name, size, attr = line.split(sep)
-    if len(attr) != 6:
-      attr = '------'
+    line = line.strip()
+    match = valid_line_re.match(line)
+    if not match:
+      logger.Error("Invalid line returned from lvs output: '%s'" % line)
+      continue
+    name, size, attr = match.groups()
     inactive = attr[4] == '-'
     online = attr[5] == 'o'
     lvs[name] = (size, inactive, online)