Очистка ZFS в Ubuntu - снижение производительности системы - PullRequest
1 голос
/ 20 января 2020

Ubuntu с файловыми системами ZFS (zfsutils- linux) запускает очистку zfs во второе воскресенье каждого месяца. Однострочная очистка находится в файле /etc/cron.d/zfsutils-linux. Я не знал об этом, пока у меня не возникли проблемы с производительностью из-за высокого IO. После того, как я покопался в некоторых, мне пришлось написать собственный скрипт BASH, чтобы изменить это поведение. Очистка ZFS по-прежнему необходима, но я хотел очистить только пару файловых систем одновременно. Сценарий размещен ниже. У кого-нибудь есть более элегантное решение? Пока работает, но похоже на взлом.

# Declaring the array to store zpools.
declare -a myZpools

# Populating the array with system zpools.
while read line;
do
  myZpools+=($line)
done <<< "$(/sbin/zpool list | awk -F" " '{print $1}' | grep -v NAME)"

# Length of the array is saved in totalPools variable
totalPools="${#myZpools[@]}"
# Dividing total number of zpools into five portions. The hard-coded denominator can be changed to any desired value. Smaller denominator yields bigger zpool portions to scan.
let portion=$totalPools/5 

# If input parameter is not specified, or if it is outside of boundaries of the array length, set it to the beginning of the array.
if ( [ -z $1 ] || [ $1 -ge $totalPools ] )
then
   day=0
else
   day=$1
fi

# Execute the scrubs.
/sbin/zpool scrub ${myZpools[@]:$day:$portion} & 
...