Jump to content

Physical drive geometry


jbartlett

Recommended Posts

I'm contemplating creating a tool that looks for slowdowns in the drives performance which from another user on here indicates that it can be a sign of trouble even before the SMART data starts reporting issues.

 

Two things are mostly needed, the ability to scan and time the read of specific areas of the hard drive (dd can do that) and knowing the physical geometry. Physical geometry is pretty much useless for accessing data since drives will silently remap bad spots on the drive but the timings to read a given area can indicate a remap took place. Having the physcal geometry would allow a heat map of the drive with specific platters given which would be more clear of problem areas on a platter.

 

If a drive has four platters, it has 8 heads. It reads from head 1 to 8 in sequence before advancing the drive head. If any platter has a bad/remapped spot, the drive head must move to another location in order to read the remapped data which would affect the read time. Being able to read & time each track looking for slowdowns and then read each side on each platter spanning tracks would present a heat map for each side of each platter that would be more clear if areas of a disk are going bad vs one heat map over the entire drive.

 

So my question - does anyone know of a way to programically determine the actual drive geometry or would it be simpler to rely on user input?

 

Example of a heat map: http://www.highcharts.com/demo/heatmap-canvas

Link to comment
  • 4 months later...

I'm contemplating creating a tool that looks for slowdowns in the drives performance which from another user on here indicates that it can be a sign of trouble even before the SMART data starts reporting issues.

 

Two things are mostly needed, the ability to scan and time the read of specific areas of the hard drive (dd can do that) and knowing the physical geometry. Physical geometry is pretty much useless for accessing data since drives will silently remap bad spots on the drive but the timings to read a given area can indicate a remap took place. Having the physcal geometry would allow a heat map of the drive with specific platters given which would be more clear of problem areas on a platter.

 

If a drive has four platters, it has 8 heads. It reads from head 1 to 8 in sequence before advancing the drive head. If any platter has a bad/remapped spot, the drive head must move to another location in order to read the remapped data which would affect the read time. Being able to read & time each track looking for slowdowns and then read each side on each platter spanning tracks would present a heat map for each side of each platter that would be more clear if areas of a disk are going bad vs one heat map over the entire drive.

 

So my question - does anyone know of a way to programically determine the actual drive geometry or would it be simpler to rely on user input?

 

Example of a heat map: http://www.highcharts.com/demo/heatmap-canvas

 

Any progress on this?

 

Just recently had another drive go bad with slow sectors, started like this:

 

I always record my parity check times so if there’s a big difference something is probably wrong:

 

2015/10/30 – 7:45:10

2015/12/06 – 7:46:28

2016/01/11 – 10:41:46

 

So I used you diskspeed script to check for a slower disk and found one, this one has particularly bad slow sectors, read speed is <1MB/s in those areas.

 

SMART still looks perfect:

 

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       -       1512
  3 Spin_Up_Time            0x0027   176   174   021    Pre-fail  Always       -       6200
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       102
  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   100   100   000    Old_age   Always       -       683
10 Spin_Retry_Count        0x0032   100   100   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       -       55
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       4
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       98
194 Temperature_Celsius     0x0022   126   117   000    Old_age   Always       -       24
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

 

 

I used MHDD to confirm the problem, it would be great to be able to do this from Unraid, as MHDD won’t work on HBAs, so I have to take disk out and use another computer to confirm issue.

diskspeed.png.09a0adb496c8bf6a386a1ab3e1da7f34.png

mhdd.png.618faeb4b571eaf57d209bc37d52b744.png

Link to comment

Nada on coming up with a smart heat map by scanning particular platters, there's no way to come up with drive geometry programmatically. Brainstorming of a way to scan the entire drive like MYHDD does but allow the user to map out the reads onto different platters/sides by manually entering the geometry and remapping the tests to match.

 

Thank you for bringing this back to my attention, now I'm brainstorming.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...