diff --git a/scripts/gnt-cluster b/scripts/gnt-cluster
index f0c65132f46c02ef21f63b4f9e4bc74b3613ba93..fdaea3fb87557176077026bf744ffe3a452173ab 100755
--- a/scripts/gnt-cluster
+++ b/scripts/gnt-cluster
@@ -38,10 +38,18 @@ def InitCluster(opts, args):
     args - list of arguments, expected to be [clustername]
 
   """
+  if not opts.lvm_storage and opts.vg_name:
+    print ("Options --no-lvm-storage and --vg-name conflict.")
+    return 1
+
+  vg_name = opts.vg_name
+  if opts.lvm_storage and not opts.vg_name:
+    vg_name = constants.DEFAULT_VG
+
   op = opcodes.OpInitCluster(cluster_name=args[0],
                              secondary_ip=opts.secondary_ip,
                              hypervisor_type=opts.hypervisor_type,
-                             vg_name=opts.vg_name,
+                             vg_name=vg_name,
                              mac_prefix=opts.mac_prefix,
                              def_bridge=opts.def_bridge,
                              master_netdev=opts.master_netdev,
@@ -272,6 +280,27 @@ def SearchTags(opts, args):
     print "%s %s" % (path, tag)
 
 
+def SetClusterParams(opts, args):
+  """Modify the cluster.
+
+  Args:
+    opts - class with options as members
+
+  """
+  if not (not opts.lvm_storage or opts.vg_name):
+    print "Please give at least one of the parameters."
+    return 1
+
+  vg_name = opts.vg_name
+  if not opts.lvm_storage and opts.vg_name:
+    print ("Options --no-lvm-storage and --vg-name conflict.")
+    return 1
+
+  op = opcodes.OpSetClusterParams(vg_name=opts.vg_name)
+  SubmitOpCode(op)
+  return 0
+
+
 # this is an option common to more than one command, so we declare
 # it here and reuse it
 node_option = make_option("-n", "--node", action="append", dest="nodes",
@@ -303,7 +332,7 @@ commands = {
                         help="Specify the volume group name "
                         " (cluster-wide) for disk allocation [xenvg]",
                         metavar="VG",
-                        default="xenvg",),
+                        default=None,),
             make_option("-b", "--bridge", dest="def_bridge",
                         help="Specify the default bridge name (cluster-wide)"
                           " to connect the instances to [%s]" %
@@ -322,6 +351,10 @@ commands = {
                              constants.DEFAULT_FILE_STORAGE_DIR,
                         metavar="DIR",
                         default=constants.DEFAULT_FILE_STORAGE_DIR,),
+            make_option("--no-lvm-storage", dest="lvm_storage",
+                        help="No support for lvm based instances"
+                             " (cluster-wide)",
+                        action="store_false", default=True,),
             ],
            "[opts...] <cluster_name>",
            "Initialises a new cluster configuration"),
@@ -362,6 +395,20 @@ commands = {
   'search-tags': (SearchTags, ARGS_ONE,
                   [DEBUG_OPT], "", "Searches the tags on all objects on"
                   " the cluster for a given pattern (regex)"),
+  'modify': (SetClusterParams, ARGS_NONE,
+             [DEBUG_OPT,
+              make_option("-g", "--vg-name", dest="vg_name",
+                          help="Specify the volume group name "
+                          " (cluster-wide) for disk allocation "
+                          "and enable lvm based storage",
+                          metavar="VG",),
+              make_option("--no-lvm-storage", dest="lvm_storage",
+                          help="Disable support for lvm based instances"
+                               " (cluster-wide)",
+                          action="store_false", default=True,),
+              ],
+             "[opts...]",
+             "Alters the parameters of the cluster"),
   }
 
 if __name__ == '__main__':