#!/bin/bash BLOCKSIZE=4096 CHUNKSIZE_MD0=4096 #CHUNKSIZE_MD0=131072 CHUNKSIZE_MD1=131072 MEMBERS_MD0=23 MEMBERS_MD1=6 BCACHE_META_SIZE=8192 EXT4_STRIDE=$((CHUNKSIZE_MD1/BLOCKSIZE)) EXT4_STRIPE_WIDTH=$(()) EXT4_INODE_RATIO=33554432 EXT4_INODE_SIZE=256 STRIPE_WIDTH_MD0=$((CHUNKSIZE_MD0*MEMBERS_MD0)) STRIPE_WIDTH_MD1=$((CHUNKSIZE_MD1*MEMBERS_MD1)) BCACHE_OFFSET_MD0=$((STRIPE_WIDTH_MD0/512)) BCACHE_OFFSET_MD1=$((STRIPE_WIDTH_MD1/512)) BCACHE_BUCKET_SIZE=16777216 n=2 A[0]=${STRIPE_WIDTH_MD0} A[1]=${STRIPE_WIDTH_MD1} prev=${A[0]} next=${A[1]} for ((i=1;i<=n;i++));do temp1=$prev temp2=$next #find the GCD while [ $prev -ne $next ];do if [ $prev -gt $next ];then prev=`expr $prev - $next` else next=`expr $next - $prev` fi done gcd=$prev # now get the LCM buff=`expr $temp1 \* $temp2` lcm=`expr $buff / $gcd` next=${A[$i]} prev=$lcm done EXT4_STRIPE_WIDTH=$((lcm/BLOCKSIZE)) echo "CHUNKSIZE_MD0 $CHUNKSIZE_MD0" echo "CHUNKSIZE_MD1 $CHUNKSIZE_MD1" echo "EXT4_STRIPE_WIDTH $EXT4_STRIPE_WIDTH" echo "EXT4_STRIDE $EXT4_STRIDE" echo "BCACHE_OFFSET_MD0 $BCACHE_OFFSET_MD0" echo "BCACHE_OFFSET_MD1 $BCACHE_OFFSET_MD1" #exit #FS_UUID=$(blkid -o value -s UUID /dev/md1) if [ "$WIPE_RAID" = "yes" ]; then #UUID_CACHE_OLD=$(lsblk -ndo UUID /dev/md0) UUID_CACHE_OLD=$(bcache-super-show -f /dev/md0 | tail -1 | awk '{ print $2 }') ###unmount### umount /mnt/bcache0 ###wipe bcache### echo 1 > /sys/fs/bcache/${UUID_CACHE_OLD}/unregister echo 1 > /sys/block/bcache0/bcache/stop wipefs -a /dev/md0 wipefs -a /dev/md1 #mdadm /dev/md127 --fail detached --remove detached ###wipe md raid### mdadm --stop /dev/md0 mdadm --stop /dev/md1 # mdadm -v --zero-superblock /dev/sdh2 /dev/sdi2 /dev/sdd3 /dev/sdc3 /dev/sdg2 /dev/sdb3 /dev/sdf1 /dev/sda4 /dev/nvme0n1p3 /dev/nvme0n1p4 /dev/sda3 /dev/sde1 /dev/nvme0n1p2 /dev/nvme0n1p1 mdadm -v --zero-superblock /dev/sdf1 /dev/nvme0n1p1 /dev/nvme0n1p2 /dev/sde1 /dev/nvme0n1p3 /dev/nvme0n1p4 \ /dev/sda3 /dev/nvme0n1p5 /dev/nvme0n1p6 /dev/sde2 /dev/nvme0n1p7 /dev/nvme0n1p8 /dev/sda4 /dev/nvme0n1p9 /dev/nvme0n1p10 /dev/sdf2 /dev/nvme0n1p11 /dev/nvme0n1p12 /dev/sda5 \ /dev/nvme0n1p13 /dev/nvme0n1p14 /dev/nvme0n1p15 /dev/nvme0n1p16 mdadm -v --zero-superblock /dev/sdb3 /dev/sdc3 /dev/sdd3 /dev/sdg2 /dev/sdh1 /dev/sdi1 fi ###need sanity checks here/everywhere### if [ "$CREATE_RAID" = "yes" ]; then ###create new md raids### mdadm --create --verbose --assume-clean -f /dev/md0 --level=stripe --raid-devices=${MEMBERS_MD0} --chunk=${CHUNKSIZE_MD0} /dev/sdf1 /dev/nvme0n1p1 /dev/nvme0n1p2 /dev/sde1 /dev/nvme0n1p3 /dev/nvme0n1p4 \ /dev/sda3 /dev/nvme0n1p5 /dev/nvme0n1p6 /dev/sde2 /dev/nvme0n1p7 /dev/nvme0n1p8 /dev/sda4 /dev/nvme0n1p9 /dev/nvme0n1p10 /dev/sdf2 /dev/nvme0n1p11 /dev/nvme0n1p12 /dev/sda5 \ /dev/nvme0n1p13 /dev/nvme0n1p14 /dev/nvme0n1p15 /dev/nvme0n1p16 #mdadm --create --verbose --assume-clean -f /dev/md0 --level=stripe --raid-devices=12 --chunk=128K /dev/nvme0n1p1 /dev/nvme0n1p2 /dev/sda3 /dev/nvme0n1p3 /dev/sde1 /dev/nvme0n1p4 /dev/nvme0n1p5 /dev/sdf1 /dev/nvme0n1p6 /dev/sda4 /dev/nvme0n1p7 /dev/nvme0n1p8 mdadm --create --verbose --assume-clean -f /dev/md1 --level=stripe --raid-devices=${MEMBERS_MD1} --chunk=${CHUNKSIZE_MD1} /dev/sdb3 /dev/sdc3 /dev/sdd3 /dev/sdg2 /dev/sdh1 /dev/sdi1 ###create new bcache devices### bcache make --force -B -b ${BCACHE_BUCKET_SIZE} -w ${BLOCKSIZE} -o ${BCACHE_OFFSET_MD1} /dev/md1 bcache make --force -C -b ${BCACHE_BUCKET_SIZE} -w ${BLOCKSIZE} -o ${BCACHE_OFFSET_MD0} /dev/md0 #UUID_CACHE_NEW=$(lsblk -ndo UUID /dev/md0) UUID_CACHE_NEW=$(bcache-super-show -f /dev/md0 | tail -1 | awk '{ print $2 }') ###setup bcache backing device settings### echo writeback > /sys/block/bcache0/bcache/cache_mode echo 0 > /sys/block/bcache0/bcache/sequential_cutoff echo 40 > /sys/block/bcache0/bcache/writeback_percent echo 3600 > /sys/block/bcache0/bcache/writeback_delay echo 0 > /sys/block/bcache0/bcache/writeback_rate ###attach bcache cache set to backing device### echo ${UUID_CACHE_NEW} > /sys/block/bcache0/bcache/attach #EXT4_STRIPE_WIDTH=$((STRIPE_WIDTH_MD1/BLOCKSIZE)) ###partition and mount bcache device### mke2fs -t ext4 -v -i ${EXT4_INODE_RATIO} -I ${EXT4_INODE_SIZE} -b ${BLOCKSIZE} -m .1 -O ^has_journal -E stride=${EXT4_STRIDE},stripe-width=${EXT4_STRIPE_WIDTH} /dev/bcache0 mkdir /mnt/bcache0 mount /dev/bcache0 /mnt/bcache0 chown soul.users /mnt/bcache0 ###setup bcache cache device settings### echo 0 > /sys/fs/bcache/${UUID_CACHE_NEW}/cache0/discard echo 0 > /sys/fs/bcache/${UUID_CACHE_NEW}/congested_read_threshold_us echo 0 > /sys/fs/bcache/${UUID_CACHE_NEW}/congested_write_threshold_us #echo 0 > /sys/block/bcache0/bcache/writeback_running echo 50 > /sys/fs/bcache/${UUID_CACHE_NEW}/journal_delay_ms #echo 0 > /sys/block/bcache0/bcache/writeback_running #echo 0 > /sys/fs/bcache/${UUID_CACHE_NEW}/synchronous fi