A few months ago I build a 1u server to go into a colo facility. Not knowing any better, I used WD Caviar Green drives. My users have been complaining that the system can be a little slow off the mark, and smartctl
shows a very high Load_Cycle_Count. I've been reading that this is due to the "Green" meaning that they attempt to spin down frequently, and so the lag people are seeing is when the drives are spinning back up. The only suggestions I've seen for stopping them from spinning down involve bringing the server home and putting the disks into a Windows box to run a program. But I had a similar problem with a Seagate external drive once and fixed it with sdparm
. Is there an sdparm
command that will fix this problem?
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 168 133 021 Pre-fail Always - 4558
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 65
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 092 092 000 Old_age Always - 6213
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 58
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 42
193 Load_Cycle_Count 0x0032 196 196 000 Old_age Always - 14941
194 Temperature_Celsius 0x0022 120 106 000 Old_age Always - 27
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
Working solution follows, tested right now!
Download the WDSpinUp DOS Utility.
Make a bootable FreeDOS USB drive with UNetbootin (
sudo apt-get install unetbootin
).Copy the downloaded utility to the USB drive.
Configure your BIOS to have disk controllers running in Compatible or Legacy mode (depends by your motherboard manufacturer).
Boot FreeDOS via USB, select FreeDOS Live CD with HIMEM + EMM386
Move to C: (the USB drive) with
C:
Finally execute the utility with
wdidle3.exe /D
Remember to re-enable Enhanced or SATA controllers from BIOS.
Is there any way you can image that server onto another set of drives that are server grade, rather than altering the way those drives are designed to work? It sounds like you have a little time on your hands, since nothing has actually failed.
Running anything that alters how a HDD works on a production server is bad news, IMO. Using these types of drives that have constant activity is going to wear them out incredibly fast. I recommend trying a different approach that involves new hardware, as much as you probably don't want to do that.
I've kept the green drives active by setting a cron to run every few minutes that forces some disk activity. This can be as simple as
echo $(date) >> somefile
just so that the drives inactivity timer is reset before it goes to sleep.It's a hack, but it seemed to help with the problems that I was having in my file server at home. In the end, I wouldn't consider it a long-term solution.
If the drives are SATA, you should be able to disable the spindown with: