Is setting smartd to 1min to prevent load cycles a bad idea? (Seagate Constellation.2 2.5" drives)

SuperWhisk

Dabbler
Joined
Jan 14, 2022
Messages
19
I realized recently, that the Seagate Constellation.2 2.5" drives in my primary NAS have been excessively load-cycling for the past year or so due to them switching to an idle power state that parks the head too often. I noticed when one of them developed two read errors and I replaced it with one of my two cold spares, but that's mostly besides the point.
I probably should have realized what was happening sooner, as I knew the whole time that the drives would "beep" every so often - especially when accessing smart data with smartctl -a, but I didn't recognize that as the sound of the head unloading - the more you know.
In any event, these drives appear to be too old to work properly with openSeaChest, which shows EPC as being supported and enabled, but claims that showing the current settings is not supported, and disabling idle_b to prevent head parking doesn't seem to "stick" despite the command claiming it was successful. APM is not supported, so setting that isn't helpful either. For now I have just set the smart service to poll the drives every 60 seconds since I don't know what the idle_b timeout is set to. Given these are enterprise drives, my best guess is it's probably similar to the 2 minutes of the Seagate Exos drives from this thread, but I am wondering if there is any reason why having smartd hit them every 60 seconds could be a bad thing.
These drives only have about 9500 hours on them, and about 14,500 load cycles, which is really not as bad as it could have been, so I'd like to make sure they can last quite a while longer.
 

Arwen

MVP
Joined
May 17, 2014
Messages
3,611
Yes, I had that same problem on my miniature media server which has a 2.5" laptop type drive, (and uses ZFS).

In my case, that media server does not run TrueNAS, so I used hdparm to fix it;
hdparm -B 254 -M 254 /dev/sda
And I too, could not figure out how to make it stick between power ups, so this is done at every boot.
 

asap2go

Patron
Joined
Jun 11, 2023
Messages
228
I realized recently, that the Seagate Constellation.2 2.5" drives in my primary NAS have been excessively load-cycling for the past year or so due to them switching to an idle power state that parks the head too often. I noticed when one of them developed two read errors and I replaced it with one of my two cold spares, but that's mostly besides the point.
I probably should have realized what was happening sooner, as I knew the whole time that the drives would "beep" every so often - especially when accessing smart data with smartctl -a, but I didn't recognize that as the sound of the head unloading - the more you know.
In any event, these drives appear to be too old to work properly with openSeaChest, which shows EPC as being supported and enabled, but claims that showing the current settings is not supported, and disabling idle_b to prevent head parking doesn't seem to "stick" despite the command claiming it was successful. APM is not supported, so setting that isn't helpful either. For now I have just set the smart service to poll the drives every 60 seconds since I don't know what the idle_b timeout is set to. Given these are enterprise drives, my best guess is it's probably similar to the 2 minutes of the Seagate Exos drives from this thread, but I am wondering if there is any reason why having smartd hit them every 60 seconds could be a bad thing.
These drives only have about 9500 hours on them, and about 14,500 load cycles, which is really not as bad as it could have been, so I'd like to make sure they can last quite a while longer.
Just read the post you linked and disabled the epc state via openSeaChest power control.
Not the best option but better than permanent load cycling.
Seems to work so far.
 

Davvo

MVP
Joined
Jul 12, 2022
Messages
3,222
IMG_20231111_122516.jpg

Have you checked this option from the Disk Settings in the GUI?
 

SuperWhisk

Dabbler
Joined
Jan 14, 2022
Messages
19
Just read the post you linked and disabled the epc state via openSeaChest power control.
Not the best option but better than permanent load cycling.
Seems to work so far.
I just did some more testing, and it appears the idle_b timeout is 4 minutes. Unfortunately despite the below "successful" command, it doesn't stay disabled on my drives. It's back in idle_b 4 minutes later!
Code:
$ sudo openSeaChest_PowerControl -d /dev/sg2 --idle_b disable
==========================================================================================
 openSeaChest_PowerControl - openSeaChest drive utilities - NVMe Enabled
 Copyright (c) 2014-2023 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 openSeaChest_PowerControl Version: 3.3.1-4_1_1 X86_64
 Build Date: Oct 31 2023
 Today: Sat Nov 11 11:08:26 2023        User: root
==========================================================================================

/dev/sg2 - ST91000640NS - 9XG9W7G0 - SN03 - ATA
Successfully configured the requested EPC settings.

This is the script I used to test how long the Idle_b timeout is:
Code:
sudo /usr/sbin/smartctl -a /dev/sg3 > /dev/null && sleep 2m &&
for i in {2..10}; do 
  echo $i;
  if sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode | grep -q "Idle_b"; then
    echo "Got Idle_b";
    break;
  else
    echo "Trying $i + 1...";
    sudo /usr/sbin/smartctl -a /dev/sg3 > /dev/null;
    sleep ${i}m 1m;
  fi
done

And this is the script I used to confirm that disabling idle_b does't work:
Code:
sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode | grep -q "Idle_b" && sudo openSeaChest_PowerControl -d /dev/sg3 --idle_b disable && sleep 2s && sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode && sleep 4m && sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode 

Changing the timeout to something > 4 minutes had the same non-effect.

I'll just set the smart service to poll them every 3 minutes I guess...

Yes, I had that same problem on my miniature media server which has a 2.5" laptop type drive, (and uses ZFS).

In my case, that media server does not run TrueNAS, so I used hdparm to fix it;
hdparm -B 254 -M 254 /dev/sda
And I too, could not figure out how to make it stick between power ups, so this is done at every boot.
Have you checked this option from the Disk Settings in the GUI?
These settings are both for APM (Advanced Power Management). EPC (Extended Power Control) replaced APM on all (most?) enterprise level Seagate drives a while ago.
 

asap2go

Patron
Joined
Jun 11, 2023
Messages
228
I just did some more testing, and it appears the idle_b timeout is 4 minutes. Unfortunately despite the below "successful" command, it doesn't stay disabled on my drives. It's back in idle_b 4 minutes later!
Code:
$ sudo openSeaChest_PowerControl -d /dev/sg2 --idle_b disable
==========================================================================================
 openSeaChest_PowerControl - openSeaChest drive utilities - NVMe Enabled
 Copyright (c) 2014-2023 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 openSeaChest_PowerControl Version: 3.3.1-4_1_1 X86_64
 Build Date: Oct 31 2023
 Today: Sat Nov 11 11:08:26 2023        User: root
==========================================================================================

/dev/sg2 - ST91000640NS - 9XG9W7G0 - SN03 - ATA
Successfully configured the requested EPC settings.

This is the script I used to test how long the Idle_b timeout is:
Code:
sudo /usr/sbin/smartctl -a /dev/sg3 > /dev/null && sleep 2m &&
for i in {2..10}; do
  echo $i;
  if sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode | grep -q "Idle_b"; then
    echo "Got Idle_b";
    break;
  else
    echo "Trying $i + 1...";
    sudo /usr/sbin/smartctl -a /dev/sg3 > /dev/null;
    sleep ${i}m 1m;
  fi
done

And this is the script I used to confirm that disabling idle_b does't work:
Code:
sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode | grep -q "Idle_b" && sudo openSeaChest_PowerControl -d /dev/sg3 --idle_b disable && sleep 2s && sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode && sleep 4m && sudo openSeaChest_PowerControl -d /dev/sg3 --checkPowerMode

Changing the timeout to something > 4 minutes had the same non-effect.

I'll just set the smart service to poll them every 3 minutes I guess...



These settings are both for APM (Advanced Power Management). EPC (Extended Power Control) replaced APM on all (most?) enterprise level Seagate drives a while ago.
I completely disabled epc and power balancing.
That appears to have worked.
 

SuperWhisk

Dabbler
Joined
Jan 14, 2022
Messages
19
I completely disabled epc and power balancing.
That appears to have worked.
Maybe I'll give that a try at some point. I'm not convinced that will be successful on my drives, but I am glad it worked for you. I'm fine with just "poking" the drives every 3 minutes. That's 3 times less often than every 1 minute at least.
 
Top