Multiple syntax errors fixed

This commit is contained in:
thorstenspille 2021-04-24 20:39:58 +02:00
parent c9406c46f9
commit 01268655e7

View File

@ -5,29 +5,20 @@
# Define basic tools to install
TOOLS="sudo vim ifupdown2 net-tools dnsutils ethtool git curl unzip screen iftop lshw smartmontools nvme-cli lsscsi sysstat zfs-auto-snapshot htop mc rpl"
# Define target dataset for backup of /etc
# IMPORTANT NOTE: Don't type in the leading /, this will be set where needed
PVE_CONF_BACKUP_TARGET=rpool/pveconf
# Define timer for your backup cronjob (default: every 15 minutes)
PVE_CONF_BACKUP_CRON_TIMER="*/15 * * * *"
###### SYSTEM INFO AND INTERACTIVE CONFIGURATION SECTION ######
#### L1ARC SIZE CONFIGURATION ####
# get total size of all zpools
ZPOOL_SIZE_SUM_BYTES=0
zpool list -o size -Hp | while read size_per_pool; do
ZPOOL_SIZE_SUM_BYTES=$(($ZPOOL_SIZE_SUM_BYTES + $size_per_pool))
done
zpool list -o size -Hp | while read line; do SUM=$(($SUM+$line)); echo "ZPOOL_SIZE_SUM_BYTES=$SUM" > ./ZPOOL_SIZE_SUM_BYTES; done
source ./ZPOOL_SIZE_SUM_BYTES
# get information about available ram
MEM_TOTAL_BYTES=$(free -tb | tail -1 | cut -d ' ' -f3)
# get values if defaults are set
ARC_MAX_DEFAULT_BYTES=$((MEM_TOTAL / 2))
ARC_MIN_DEFAULT_BYTES=$((MEM_TOTAL / 32))
ARC_MAX_DEFAULT_BYTES=$(($MEM_TOTAL_BYTES / 2))
ARC_MIN_DEFAULT_BYTES=$(($MEM_TOTAL_BYTES / 32))
# get current settings
ARC_MIN_SET_BYTES=$(cat /sys/module/zfs/parameters/zfs_arc_min)
@ -39,35 +30,35 @@ ZFS_ARC_MAX_BYTES=$(($ZPOOL_SIZE_SUM_BYTES / 1024))
echo -e "######## CONFIGURE ZFS L1ARC SIZE ########\n"
echo "System Summary:"
echo -e "\tSystem Memory:\t$(($MEM_TOTAL_BYTES / 1024 / 1024)) MB"
echo -e "\tZpool size (sum):\t$(($ZPOOL_SIZE_SUM_BYTES / 1024 / 1024)) MB"
echo -e "\tSystem Memory:\t\t$(($MEM_TOTAL_BYTES / 1024 / 1024))\tMB"
echo -e "\tZpool size (sum):\t$(($ZPOOL_SIZE_SUM_BYTES / 1024 / 1024))\tMB"
echo -e "Calculated l1arc if set to defaults:"
if [ $ARC_MIN_DEFAULT_BYTES -lt 33554432 ]; then
echo -e "\tDefault zfs_arc_min:\t32 MB"
echo -e "\tDefault zfs_arc_min:\t32\tMB"
else
echo -e "\tDefault zfs_arc_min:\t$(($ARC_MIN_DEFAULT_BYTES / 1024 / 1024)) MB"
echo -e "\tDefault zfs_arc_min:\t$(($ARC_MIN_DEFAULT_BYTES / 1024 / 1024))\tMB"
fi
echo -e "\tDefault zfs_arc_max:\t$(($ARC_MAX_DEFAULT_BYTES / 1024 / 1024)) MB"
echo -e "\tDefault zfs_arc_max:\t$(($ARC_MAX_DEFAULT_BYTES / 1024 / 1024))\tMB"
echo -e "Current l1arc configuration:"
if [ $ARC_MIN_SET_BYTES > 0 ]; then
echo -e "\tCurrent zfs_arc_min:\t$(($ARC_MIN_SET_BYTES / 1024 / 1024)) MB"
echo -e "\tCurrent zfs_arc_min:\t$(($ARC_MIN_SET_BYTES / 1024 / 1024))\tMB"
else
echo -e "\tCurrent zfs_arc_min:\t0"
fi
if [ $ARC_MAX_SET_BYTES > 0 ]; then
echo -e "\tCurrent zfs_arc_max:\t$(($ARC_MAX_SET_BYTES / 1024 / 1024)) MB"
echo -e "\tCurrent zfs_arc_max:\t$(($ARC_MAX_SET_BYTES / 1024 / 1024))\tMB"
else
echo -e "\tCurrent zfs_arc_max:\t0"
fi
echo -e "Note: If your current values are 0, the calculated values above will apply."
echo ""
echo "The l1arc cache will be set relative to the size (sum) of your zpools by the policy 'zfs_arc_min = 256 MB / 1 TB' and 'zfs_arc_max = 1 GB / 1 TB'"
echo "zfs_arc_min=\t$(($ZFS_ARC_MIN_BYTES / 1024 / 1024)) MB"
echo "zfs_arc_max=\t$(($ZFS_ARC_MAX_BYTES / 1024 / 1024)) MB"
echo -e "The l1arc cache will be set relative to the size (sum) of your zpools by policy"
echo -e "zfs_arc_min:\t\t\t$(($ZFS_ARC_MIN_BYTES / 1024 / 1024))\tMB\t\t= 256 MB RAM per 1 TB ZFS storage"
echo -e "zfs_arc_max:\t\t\t$(($ZFS_ARC_MAX_BYTES / 1024 / 1024))\tMB\t\t= 1 GB RAM per 1 TB ZFS storage"
echo ""
RESULT=not_set
while [[ "$(echo $RESULT | awk '{print tolower($0)}')" != "y" ]] && [[ "$(echo $RESULT | awk '{print tolower($0)}')" != "n"]]; do
echo "You can now adjust the l1arc values. Change settings [y/N]?"
while [ "$(echo $RESULT | awk '{print tolower($0)}')" != "y" ] && [ "$(echo $RESULT | awk '{print tolower($0)}')" != "n" ] && [ "$(echo $RESULT | awk '{print tolower($0)}')" != "" ]; do
echo "If you want to adjust the values yourself type 'y', type 'n' to apply the values by script policy [y/N]?"
read
RESULT=${REPLY}
done
@ -75,40 +66,53 @@ if [[ "$(echo $RESULT | awk '{print tolower($0)}')" == "y" ]]; then
echo "Please type in the desired value in MB for 'zfs_arc_min' [$(($ZFS_ARC_MIN_BYTES / 1024 / 1024))]:"
read
if [[ ${REPLY} -gt 0 ]]; then
$ZFS_ARC_MIN_BYTES=$((${REPLY} * 1024 * 1024))
ZFS_ARC_MIN_BYTES=$((${REPLY} * 1024 * 1024))
fi
echo "Please type in the desired value in MB for 'zfs_arc_max' [$(($ZFS_ARC_MAX_BYTES / 1024 / 1024))]:"
read
if [[ ${REPLY} -gt 0 ]]; then
$ZFS_ARC_MAX_BYTES=$((${REPLY} * 1024 * 1024))
ZFS_ARC_MAX_BYTES=$((${REPLY} * 1024 * 1024))
fi
fi
#### ZFS AUTO SNAPSHOT CONFIGURATION ####
# get information about zfs-auto-snapshot and ask for snapshot retention
dpkg -l zfs-auto-snapshot
declare -A auto_snap_keep
if [ $1 -ne 0 ]; then
auto_snap_keep["frequent"]=8 ; auto_snap_keep["hourly"]=48 ; auto_snap_keep["daily"]=31 ; auto_snap_keep["weekly"]=8 ; auto_snap_keep["monthly"]=3
else
for interval in "${auto_snap_keep[@]}"; do
declare -A auto_snap_keep=( ["frequent"]="8" ["hourly"]="48" ["daily"]="31" ["weekly"]="8" ["monthly"]="3" )
dpkg -l zfs-auto-snapshot > /dev/null
if [ $? -eq 0 ]; then
echo "'zfs-auto-snapshot' already installed. Reading config..."
for interval in "${!auto_snap_keep[@]}"; do
if [[ "$interval" == "frequent" ]]; then
auto_snap_keep["$interval"]=$(cat /etc/cron.d/zfs-auto-snapshot | grep keep | cut -d' ' -f19 | cut -d '=' -f2)
auto_snap_keep[$interval]=$(cat /etc/cron.d/zfs-auto-snapshot | grep keep | cut -d' ' -f19 | cut -d '=' -f2)
else
auto_snap_keep["$interval"]=$(cat /etc/cron.$interval/zfs-auto-snapshot | grep keep | cut -d' ' -f6 | cut -d'=' -f2)
auto_snap_keep[$interval]=$(cat /etc/cron.$interval/zfs-auto-snapshot | grep keep | cut -d' ' -f6 | cut -d'=' -f2)
fi
done
else
echo "'zfs-auto-snapshot' not installed yet, using scrpit defaults..."
fi
echo -e "######## CONFIGURE ZFS AUTO SNAPSHOT ########\n"
for interval in "${auto_snap_keep[@]}"; do
for interval in "${!auto_snap_keep[@]}"; do
echo "Please set how many $interval snapshots to keep (current: keep=${auto_snap_keep[$interval]})"
read
if [ "${auto_snap_keep[$interval]}" != "${REPLY}" ]; then
auto_snap_keep["$interval"]=${REPLY}
auto_snap_keep[$interval]=${REPLY}
fi
done
#### PVE CONF BACKUP CONFIGURATION ####
# Define target dataset for backup of /etc
# IMPORTANT NOTE: Don't type in the leading /, this will be set where needed
PVE_CONF_BACKUP_TARGET=rpool/pveconf
# Define timer for your backup cronjob (default: every 15 minutes)
PVE_CONF_BACKUP_CRON_TIMER="*/15 * * * *"
###### INSTALLER SECTION ######
# disable pve-enterprise repo and add pve-no-subscription repo
@ -121,7 +125,7 @@ DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt -y -qq dist-upgrade
DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt -y -qq install $TOOLS
# configure zfs-auto-snapshot
for interval in "${auto_snap_keep[@]}"; do
for interval in "${!auto_snap_keep[@]}"; do
if [[ "$interval" == "frequent" ]]; then
CURRENT=$(cat /etc/cron.d/zfs-auto-snapshot | grep keep | cut -d' ' -f19 | cut -d '=' -f2)
if [[ "${auto_snap_keep[$interval]}" != "$CURRENT" ]]; then
@ -146,8 +150,7 @@ update-initramfs -u -k all
# create backup jobs of /etc
zfs list $PVE_CONF_BACKUP_TARGET
if [ $? -ne 0 ]
if [ $? -ne 0 ]; then
zfs create $PVE_CONF_BACKUP_TARGET
fi