hd-idle/hdparm을 사용하여 noatime 및 드라이브 유휴 시간을 설정한 후 시작 시 zfs 풀을 사용할 수 없습니다.

hd-idle/hdparm을 사용하여 noatime 및 드라이브 유휴 시간을 설정한 후 시작 시 zfs 풀을 사용할 수 없습니다.

먼저 다음을 RHEL7-x64사용하여 zfs 드라이브를 최대 절전 모드로 설정했습니다.이것,이것, 그리고이것. 나는 hd-idle그것이 문제가 시작되었을 때 내가 먼저 시도한 것이라고 믿습니다 .

나는 그것을 idle_drives_enable처리하기 위해 스크립트를 작성했습니다@rebootcrontab -e (이 방법을 사용하는 현재 상태에서 hdparm최근 노력으로).

#!/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!"

zfs소품을 설정 하고 atime=off
부팅 드라이브의 소품에도 / & 만 /etc/fstab noatime포함하도록 설정했습니다 .roothome xfsswap

이것이 유일한 변경 사항입니다.

첫 번째 테스트를 다시 시작한 후에는 zfs풀을 더 이상 사용할 수 없으며 이는 계속됩니다.

뒤쪽에테스트 결과 hdparm동일한 증상이 있는 것으로 나타났습니다( zfs시작 시 없음). 결국 시작 시 올바르게 가져오지 않는다는 것을 깨달았습니다. 그러면 풀이 정상으로 돌아가고 절전 모드가 유휴 상태가 되어 풀에 액세스할 때 다시 깨어납니다 zfs export .zfs import잘 작동이 지점에서. (적어도 그것을 사용할 때는 hdparm). 사용하면서 이런 생각은 못했어요 hd-idle.

RaidZ2흥미롭게도 6개 드라이브 배열에서 특정 폴더에 액세스할 때 특정 드라이브만 깨어난다는 사실을 발견했습니다 . 이는 매우 멋진 일입니다.

나는 다음과 같은 조치를 취하여 문제를 해결했습니다.

  • zfs에서 atime 속성을 켜도 문제가 해결되지 않아 종료되었습니다.
  • 시작 시 유휴 시간이 설정되지 않도록 크론 작업에 주석을 달았습니다.

아마도 hd-idle처음 시도해 본다면 작동하지 않아 재설정해야 할 일부 잔여 설정이 있을 것 같습니다.

시작 시 더 이상 사용할 수 없는 zfs 풀을 찾을 수 있는 위치에 대한 아이디어가 있습니까?

고쳐 쓰다 결국 ZFS 구현을 망친 것 같습니다. 이 스크립트는 훌륭하게 작동합니다. 다른 사람이 자신의 드라이브를 최대 절전 모드로 전환하고 싶다면 이것이 바로 제가 한 일입니다.

#!/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!"

관련 정보