summaryrefslogtreecommitdiff
path: root/xfs-raid
diff options
context:
space:
mode:
Diffstat (limited to 'xfs-raid')
-rwxr-xr-xxfs-raid48
1 files changed, 48 insertions, 0 deletions
diff --git a/xfs-raid b/xfs-raid
new file mode 100755
index 0000000..29963f1
--- /dev/null
+++ b/xfs-raid
@@ -0,0 +1,48 @@
+#!/bin/bash
+# source: http://www.mythtv.org/wiki/Optimizing_Performance#Optimizing_XFS_on_RAID_Arrays
+BLOCKSIZE=512 # Make sure this is in bytes
+CHUNKSIZE=128 # Make sure this is in KiB
+NUMSPINDLES=3
+RAID_TYPE=5
+RAID_DEVICE_NAME="/dev/md0" # Specify device name for your RAID device
+FSLABEL="stor5" # specify filesystem label for generating mkfs line here
+
+case "$RAID_TYPE" in
+0)
+ RAID_DISKS=${NUMSPINDLES};
+ ;;
+1)
+ RAID_DISKS=${NUMSPINDLES};
+ ;;
+10)
+ RAID_DISKS=${NUMSPINDLES};
+ ;;
+5)
+ RAID_DISKS=`echo "${NUMSPINDLES} - 1" | bc`;
+ ;;
+6)
+ RAID_DISKS=`echo "${NUMSPINDLES} - 2" | bc`;
+ ;;
+*)
+ echo "Please specify RAID_TYPE as one of: 0, 1, 10, 5, or 6."
+ exit
+ ;;
+esac
+
+SUNIT=`echo "${CHUNKSIZE} * 1024 / 512" | bc`
+SWIDTH=`echo "$RAID_DISKS * ${SUNIT}" | bc`
+
+echo "System blocksize=${BLOCKSIZE}"
+echo "Chunk Size=${CHUNKSIZE} KiB"
+echo "NumSpindles=${NUMSPINDLES}"
+echo "RAID Type=${RAID_TYPE}"
+echo "RAID Disks (usable for data)=${RAID_DISKS}"
+echo "Calculated values:"
+echo "Stripe Unit=${SUNIT}"
+echo -e "Stripe Width=${SWIDTH}\n"
+echo "mkfs line:"
+echo -e "mkfs.xfs -b size=${BLOCKSIZE} -d sunit=${SUNIT},swidth=${SWIDTH} -L ${FSLABEL} ${RAID_DEVICE_NAME}\n"
+echo "mount line:"
+echo -e "mount -o remount,sunit=${SUNIT},swidth=${SWIDTH}\n"
+echo "Add these options to your /etc/fstab to make permanent:"
+echo "sunit=${SUNIT},swidth=${SWIDTH}"