#!/bin/bash

echo "Collect System information"

echo "OS: $(cat /etc/system-release)"

echo "Kernel: $(uname -r)"

echo "MD version: $(mdadm --version 2>&1)"

echo "fio version: $(fio --version)"

echo "XFS version: $(mkfs.xfs -V)"

echo "Display NVME information"

lspci -vt | grep P4500

while read line
do
    PCI_BUS=$(echo $line | cut -d ' ' -f 1)
    NVME_IDX=$(ls /sys/bus/pci/drivers/nvme/0000:${PCI_BUS}/nvme)
    NUMA_NODE=$(lspci -vvvs ${PCI_BUS} | grep NUMA) 
    echo ${PCI_BUS} ${NVME_IDX} ${NUMA_NODE}
done < <(lspci | grep Non-)

if [ $(lspci | grep Non- | wc -l) != 33 ]; then
    echo "NVME count is not 32, exit script"
    exit
fi

if [ $(cat /proc/mdstat | grep chunks | wc -l) != 0 ]; then
    echo "Please remove all MD raid before run the script, exit script"
    exit
fi

echo "Create md array"

# note that /dev/nvme0 is a M.2 drive that is extra. So dont use that
export MADMOPTS="-Cv -l 0 --chunk=2M"
#export MADMOPTS="-Cv -l 0"

yes | sudo mdadm $MADMOPTS /dev/md0 -n 8 /dev/nvme{1,2,3,4,5,6,7,8}n1
yes | sudo mdadm $MADMOPTS /dev/md1 -n 8 /dev/nvme{9,10,11,12,13,14,15,16}n1
yes | sudo mdadm $MADMOPTS /dev/md2 -n 8 /dev/nvme{17,18,19,20,21,22,23,24}n1
yes | sudo mdadm $MADMOPTS /dev/md3 -n 8 /dev/nvme{25,26,27,28,29,30,31,32}n1

echo "create file system"

sudo mkfs.xfs -f -i size=2048 -d su=2m,sw=1 /dev/md0
sudo mkfs.xfs -f -i size=2048 -d su=2m,sw=1 /dev/md1
sudo mkfs.xfs -f -i size=2048 -d su=2m,sw=1 /dev/md2
sudo mkfs.xfs -f -i size=2048 -d su=2m,sw=1 /dev/md3

echo "mount file system"

sudo mkdir /mnt/array0
sudo mkdir /mnt/array1
sudo mkdir /mnt/array2
sudo mkdir /mnt/array3

sudo mount -t xfs -o noatime,nodiratime,nodiscard /dev/md0 /mnt/array0
sudo mount -t xfs -o noatime,nodiratime,nodiscard /dev/md1 /mnt/array1
sudo mount -t xfs -o noatime,nodiratime,nodiscard /dev/md2 /mnt/array2
sudo mount -t xfs -o noatime,nodiratime,nodiscard /dev/md3 /mnt/array3

sudo chown clameter /mnt/array{0,1,2,3}


