From ddd614192d05c767012fccedb73b30cef5bf4927 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Mon, 19 Jul 2010 06:09:57 +0000 Subject: volgen now takes 'num-replica' and 'num-stripe' options Signed-off-by: Amar Tumballi Signed-off-by: Anand V. Avati BUG: 1155 (currently volgen doesn't take num-replica and num-stripe options) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1155 --- extras/volgen/CreateVolfile.py | 40 +++++++++++++++++++-------------------- extras/volgen/glusterfs-volgen.in | 26 +++++++++++++++++++------ 2 files changed, 40 insertions(+), 26 deletions(-) (limited to 'extras') diff --git a/extras/volgen/CreateVolfile.py b/extras/volgen/CreateVolfile.py index 378766cf7..c9744a21d 100644 --- a/extras/volgen/CreateVolfile.py +++ b/extras/volgen/CreateVolfile.py @@ -17,8 +17,6 @@ import os, sys, string -num_replica = 2 -num_stripe = 4 #Cachesize calculator cache_size = "`echo $(( $(grep 'MemTotal' /proc/meminfo | sed 's/[^0-9]//g') / 5120 ))`" @@ -43,6 +41,8 @@ class CreateVolfile: self.volume_size_server = options.size_server self.volume_size_client = options.size_client self.nfs = options.need_nfs + self.num_replica = options.num_replica + self.num_stripe = options.num_stripe def create_mount_volfile (self): @@ -76,11 +76,11 @@ class CreateVolfile: if self.transport == 'ib-verbs': mount_fd.write (" option transport.ib-verbs.port %d\n" % self.ib_devport) - mount_fd.write (" option transport.remote-port %d\n" % + mount_fd.write (" option remote-port %d\n" % self.gfs_ib_port) if self.transport == 'tcp': mount_fd.write (" option transport.socket.nodelay on\n") - mount_fd.write (" option transport.remote-port %d\n" % + mount_fd.write (" option remote-port %d\n" % self.gfs_port) mount_fd.write (" option remote-subvolume brick%s\n" % @@ -99,7 +99,7 @@ class CreateVolfile: # Stripe section.. if given if raid_type is 0: - max_stripe_idx = len (subvolumes) / num_stripe + max_stripe_idx = len (subvolumes) / self.num_stripe stripe_idx = 0 index = 0 while index < max_stripe_idx: @@ -107,29 +107,30 @@ class CreateVolfile: mount_fd.write (" type cluster/stripe\n") mount_fd.write ("# option block-size 128k\n") mount_fd.write ("# option use-xattr no\n") - - mount_fd.write (" subvolumes %s %s %s %s\n" % - (subvolumes[stripe_idx], - subvolumes[stripe_idx+1], - subvolumes[stripe_idx+2], - subvolumes[stripe_idx+3])) - mount_fd.write ("end-volume\n\n") - stripe_idx += 4 + mount_fd.write (" subvolumes %s" % subvolumes[stripe_idx]) + sub_idx = 1 + while sub_idx < self.num_stripe: + mount_fd.write (" %s" % subvolumes[stripe_idx+sub_idx]) + sub_idx += 1 + mount_fd.write ("\nend-volume\n\n") + stripe_idx += self.num_stripe index +=1 # Replicate section if raid_type is 1: - max_mirror_idx = len (subvolumes) / num_replica + max_mirror_idx = len (subvolumes) / self.num_replica mirror_idx = 0 index = 0 while index < max_mirror_idx: mount_fd.write ("volume mirror-%d\n" % index) mount_fd.write (" type cluster/replicate\n") - mount_fd.write (" subvolumes %s %s\n" % - (subvolumes[mirror_idx], - subvolumes[mirror_idx+1])) - mount_fd.write ("end-volume\n\n") - mirror_idx += 2 + mount_fd.write (" subvolumes %s" % subvolumes[mirror_idx]) + sub_idx = 1 + while sub_idx < self.num_replica: + mount_fd.write (" %s" % subvolumes[mirror_idx + sub_idx]) + sub_idx += 1 + mount_fd.write ("\nend-volume\n\n") + mirror_idx += self.num_replica index += 1 # Distribute section @@ -270,7 +271,6 @@ class CreateVolfile: exp_fd.write ("# option background-unlink yes # (default: no) boolean type\n") exp_fd.write (" option directory %s\n" % export) - exp_fd.write (" option hostname %s\n" % host) exp_fd.write ("end-volume\n\n") if self.nfs: diff --git a/extras/volgen/glusterfs-volgen.in b/extras/volgen/glusterfs-volgen.in index a8e157e2e..0b96f0d28 100755 --- a/extras/volgen/glusterfs-volgen.in +++ b/extras/volgen/glusterfs-volgen.in @@ -31,10 +31,8 @@ from Common import * def generate_volume_files (): - num_stripe = 4 - num_replica = 2 - - usage_str = "%prog: -n -t -p -a -r " + usage_str = "%s%s" % ("%prog: -n -t -p -a ", + "-r [--num-replica N] [--num-stripe N]") version_str = "%prog 3.0" desc_str = "A tool to generate volume files for GlusterFS." @@ -71,6 +69,10 @@ def generate_volume_files (): group.add_option("--safe-mode", action="store_true", dest="enable_safe_mode", default=False, help="generate volume files in safe mode") + group.add_option("--num-replica", type="int", dest="num_replica", + help="number of file replica needed") + group.add_option("--num-stripe", type="int", dest="num_stripe", + help="number of stripe count needed") parse.add_option_group(group) @@ -139,14 +141,26 @@ def generate_volume_files (): print "Error: no servers provided, please provide atleast one server" raise ValueError + if options.num_replica is None: + options.num_replica = 2 + + if options.num_stripe is None: + options.num_stripe = 4 + + if options.num_replica < 2: + print "--num-replica option (%d) is not valid" % options.num_replica + + if options.num_stripe < 2: + print "--num-stripe option (%d) is not valid" % options.num_stripe + if options.raid_type == 1: - if (len(server_array) % num_replica) != 0: + if (len(server_array) % options.num_replica) != 0: print "raid type (%d) and number of volumes (%d) invalid" % (options.raid_type, len(server_array)) raise ValueError if options.raid_type == 0: - if (len(server_array) % num_stripe) != 0: + if (len(server_array) % options.num_stripe) != 0: print "raid type (%d) and number of volumes (%d) invalid" % (options.raid_type, len(server_array)) raise ValueError -- cgit