Primeiramente, eu configuro meu RHEL7-x64
para acomodar as unidades zfs usando este , este e isso . Eu acredito que tentei hd-idle
primeiro, quando os problemas começaram.
Eu escrevi um script idle_drives_enable
para lidar com ele @reboot
in crontab -e
(em um estado atual usando o método hdparm
, como meu último esforço) .
#!/bin/bash
# idle_drives_enable
# Sets idle times to drives, usually needed at boot
# Default idle time covers all drives, including zfs drives, unless otherwise specified
DEFAULT_IDLE_TIME=120;
# Root drive we want to increase a bit, so specify separately
ROOT_IDLE_TIME=360;
#------------------------------------------------------------------
# Using hd-idle
# @dependency sudo yum install hd-idle
#
## 120 seconds is 10 minutes, 360 is 30 minutes
## Set default idle time on all.
#/sbin/hd-idle -i $DEFAULT_IDLE_TIME;
## Set root drive idle time longer, incase doing work, dont want to continually be waking it up
## sdb is current root, but sometimes changes
##/sbin/hd-idle -a /dev/sdb
## Use uuid instead because it never changes. Specifying the root partition is enough to trigger the whole drive.
#/sbin/hd-idle -a /dev/disk/by-uuid/bbc69fc6-12fa-499a-a0c6-e0f65e248ce2 -i $ROOT_IDLE_TIME;
#echo "/usr/local/bin/idle_drives_enable complete! Default idle time of $DEFAULT_IDLE_TIME seconds was set. Additionally, the root drive is set to idle after $ROOT_IDLE_TIME seconds.";
#------------------------------------------------------------------------
# hd-idle is not allowing wake, are these considered scsi??
# testing with hdparm instead
echo "executing /usr/local/bin/idle_drives_enable..."
echo "using hdparm"
echo "Here is the output of the current hdparm -C"
/sbin/hdparm -C /dev/sd?
echo "setting idle times now..."
/sbin/hdparm -q -S $DEFAULT_IDLE_TIME -y /dev/sd?
echo "done settting idle times. to default idle time ($DEFAULT_IDLE_TIME seconds)."
echo "Here is the output of the current hdparm -C"
/sbin/hdparm -C /dev/sd?
echo "/usr/local/bin/idle_drives_enable complete!"
eu defino zfs
prop atime=off
Eu também defino em /etc/fstab
noatime
para minha unidade de inicialização que contém root
/ home
xfs
& swap
apenas.
Essas foram as únicas alterações feitas.
Após o primeiro teste de reinicialização, os zfs
pools não estão mais disponíveis e isso continua.
Após o teste com hdparm
, descobri que ele apresentava os mesmos sintomas (sem zfs
na inicialização). Eu finalmente percebi que apenas não estava importando corretamente na inicialização. Se eu apenas zfs export
, em seguida, zfs import
, o pool voltar a ficar on-line bem, e o sono em modo inativo, e rewaking no acesso ao pool funciona bem neste ponto. (pelo menos quando usar hdparm
). Ainda não pensei nisso quando usei hd-idle
.
Curiosamente, descobri que no array 6 unidade RaidZ2
, quando eu acesso determinadas pastas, somente certas unidades despertam, isso é muito legal.
O que eu fiz para tentar corrigir:
Eu suspeito que eu tentei hd-idle
primeiro, e tem algumas configurações residuais que podem não estar funcionando e precisam ser redefinidas.
Alguma idéia de onde procurar e porque o pool do zfs não está mais disponível no boot?
Atualizar No final, acho que acabei de alguma forma atrapalhando minha implementação do ZFS. Este script funciona muito bem. Aqui está o que acabei com se alguém mais quer dormir suas unidades.
#!/bin/bash
# idle_drives_enable
# Sets idle times to drives, usually needed at boot
# Default idle time covers all drives, including zfs drives, unless otherwise specified
DEFAULT_IDLE_TIME=120;
# Root drive we want to increase a bit, so specify separately
ROOT_IDLE_TIME=360;
#ALLDRIVELIST=("a" "b" "c" "d" "e" "f" "g");
#for DRIVE in "${ALLDRIVELIST[@]}";
#do
# #/sbin/hdparm -C /dev/sd$DRIVE
#
#done
#------------------------------------------------------------------
# Using hd-idle
# @dependency sudo yum install hd-idle
#
## 120 seconds is 10 minutes, 360 is 30 minutes
## Set default idle time on all.
#/sbin/hd-idle -i $DEFAULT_IDLE_TIME;
## Set root drive idle time longer, incase doing work, dont want to continually be waking it up
## sdb is current root, but sometimes changes
##/sbin/hd-idle -a /dev/sdb
## Use uuid instead because it never changes. Specifying the root partition is enough to trigger the whole drive.
#/sbin/hd-idle -a /dev/disk/by-uuid/bbc69fc6-12fa-499a-a0c6-e0f65e248ce2 -i $ROOT_IDLE_TIME;
#echo "/usr/local/bin/idle_drives_enable complete! Default idle time of $DEFAULT_IDLE_TIME seconds was set. Additionally, the root drive is set to idle after $ROOT_IDLE_TIME seconds.";
#------------------------------------------------------------------------
# hd-idle is not allowing wake, are these considered scsi??
# testing with hdparm instead
echo "executing /usr/local/bin/idle_drives_enable..."
echo "using hdparm"
echo "Here is the output of the current hdparm -C"
/sbin/hdparm -C /dev/sd?
echo "setting idle times now..."
/sbin/hdparm -q -S $DEFAULT_IDLE_TIME -y /dev/sd?
echo "done settting idle times. to default idle time ($DEFAULT_IDLE_TIME seconds)."
echo "Here is the output of the current hdparm -C"
/sbin/hdparm -C /dev/sd?
echo "/usr/local/bin/idle_drives_enable complete!"
Tags sleep zfs filesystems hdparm rhel