summaryrefslogtreecommitdiffstats
path: root/extras/scale-n-defrag.sh
diff options
context:
space:
mode:
Diffstat (limited to 'extras/scale-n-defrag.sh')
-rw-r--r--extras/scale-n-defrag.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/extras/scale-n-defrag.sh b/extras/scale-n-defrag.sh
new file mode 100644
index 00000000000..1031b3931a8
--- /dev/null
+++ b/extras/scale-n-defrag.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# This script runs over the GlusterFS mountpoint (from just one client)
+# to handle the distribution of 'data', after the distribute translator's
+# subvolumes count changes.
+#
+# (c) 2009 Gluster Inc, <http://www.gluster.com/>
+#
+#
+# Make sure the following variables are properly initialized
+
+MOUNTPOINT=/tmp/testdir
+directory_to_be_scaled="${MOUNTPOINT}/"
+
+logdir=$(dirname $0)
+cd $logdir
+LOGDIR=$(pwd)
+cd -
+
+# The below command is enough to make sure the new layout will be scaled across new
+# nodes.
+find ${directory_to_be_scaled} -type d -exec setfattr -x "trusted.glusterfs.dht" {} \;
+
+# Now do a lookup on files so the scaling/re-hashing is done
+find ${directory_to_be_scaled} > /dev/null
+
+
+# copy the defrag (to copy data across for new nodes (for linkfiles))
+#
+
+
+cd ${directory_to_be_scaled};
+for dir in *; do
+ echo "Defragmenting directory ${directory_to_be_scaled}/$dir ($LOGDIR/defrag-store-$dir.log)"
+ $LOGDIR/defrag.sh $dir >> $LOGDIR/defrag-store-$dir.log 2>&1
+ echo Completed directory ${directory_to_be_scaled}/$dir
+done