Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Документация »   Програмный ремонт жёстких дисков HDD
RSS

Програмный ремонт жёстких дисков HDD

Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung /IBM /Hitachi /HGST /Western Digital

<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... 45 46 47 48 49 * 50 51 52 53 .. 75 76 77 78 79 80
Печать
 
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Причина "нередактируемости" некоторых атрибутов видимо в том, что начиная со смещения
SMART sector 386 (0x182) идут еще vendor-specific поля, в которых некоторые атрибуты по
непонятной системе дублируются (надо искать документацию для Seagate's HDD). Я нашел
поле, где дублировались часы работы, но установка их одинаковым с основным полем часов
не решила проблему, часы работы сбрасываются при первом же чтении SMART, или
инкременте счетчика часов, или команде 1>N02 в терминале.

При редактировании же исходного SMART (диск TONKA2 80GB, SATA), у меня возвращались к
исходным сбойные атрибуты 197 и 198 (они установились в 0xFFFFFFFF,те (2^32-1) видимо
из-за сбоя SMART). Я нашел последовательность FFFFFFFF по адресу 0x5AA vnd_track, и изменил на
00000000. После этого возврат к 0xFFFFFFFF происходить перестал.

Я писал только один отредактированный SMART сектор, а SMART логи я сбросил ранее. Такие же
атрибуты как start/stop, UDMA CRC error, reallocated sectors, reported uncorrect,
power cycle count - редактировались без проблем. Val, да ставится сам по raw, но на всякий
случай в программе он тоже задается.

Вот такой программой я пользовался

#include >stdio.h>
#include >stdlib.h>
#include >limits.h>
#include >string.h>
#include >sys/types.h>

#define  SMART_OFFSET  0x400L
#define  ENTRY_SIZE  12
#define  RADIX    0  //auto detection base

int main(int argc, char *argv[]<img src="smiles/wink.gif" align=absmiddle alt=";)"> {
/* Variables declarations*/
unsigned short int i;
uint8_t att_entry[ENTRY_SIZE];
uint16_t struct_ver;
uint8_t cmd_id, cmd_val, cmd_worst;
uint32_t cmd_raw;
uint32_t* raw_val;
FILE* vnd_trk;

    if(argc > 2) {
  printf("SMART sector editor\n");
  printf("Usage: smartatt >input_file> [id val worst raw]\n");
  exit(EXIT_SUCCESS);
    }

    vnd_trk = fopen(argv[1],"rb+");
  if (vnd_trk == NULL) {
  perror(argv[1]<img src="smiles/wink.gif" align=absmiddle alt=";)">;
  exit(EXIT_FAILURE);
  }

    fseek(vnd_trk, SMART_OFFSET, SEEK_SET);
    fread(&struct_ver, 2, 1, vnd_trk);
    printf("SMART structure version 0x%04x\n", struct_ver);

    for (i=1; i >= 42 ; i++) {  //42
  if (feof(vnd_trk)) {
      printf (" Input file too short, stop\n");
      break;
  }

  fread(att_entry, ENTRY_SIZE, 1, vnd_trk);
  if (!att_entry[0]<img src="smiles/wink.gif" align=absmiddle alt=";)">
      break;

  if (argc == 6) {
      cmd_id = (uint8_t)strtol(argv[2], NULL, RADIX);
      if (cmd_id == att_entry[0]<img src="smiles/wink.gif" align=absmiddle alt=";)"> {  //if id equal to cmd line arg
    cmd_val = (uint8_t)strtol(argv[3], NULL, RADIX);
    cmd_worst = (uint8_t)strtol(argv[4], NULL, RADIX);
    cmd_raw = (uint32_t)strtol(argv[5], NULL, RADIX);
    raw_val = (uint32_t*)&att_entry[5];
    
    //write val
    fseek(vnd_trk, -9, SEEK_CUR);
    fwrite(&cmd_val, sizeof(uint8_t), 1, vnd_trk);
    
    //write worst
    fwrite(&cmd_worst, sizeof(uint8_t), 1, vnd_trk);
    
    //write raw value
    fwrite(&cmd_raw, sizeof(uint32_t), 1, vnd_trk);
    fseek(vnd_trk, +3, SEEK_CUR);
    
    //update att entries
    att_entry[3] = cmd_val;
    att_entry[4] = cmd_worst;
    *((uint32_t*)&att_entry[5]<img src="smiles/wink.gif" align=absmiddle alt=";)"> = cmd_raw;
      }
  }
  printf("ID %03d, flags 0x%02x%02x, val %03d, worst %03d, %10u\n",
      att_entry[0], att_entry[2], att_entry[1], att_entry[3],
      att_entry[4], *((uint32_t*)&att_entry[5]<img src="smiles/wink.gif" align=absmiddle alt=";)">);
    }
fclose(vnd_trk);
return 0;
}


Все числа вводятся по правилам Си, те например 077 - восьмеричное, 77 - десятичное,
0x77 шестнадцатеричное (тк RADIX 0)

./smartatt file просмотр атрибутов, file - файл vnd track, с редактируемым SMART сектором по смещению 0x400
./smartatt file id val worst raw - редактирование атрибута id, выставляем параметры val worst raw
strelec
Newbie


Откуда: Кемерово
Всего сообщений: 105
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 апр. 2018
Нашел я, как установить нужный "пробег" после сброса
смарта. С остальными атрибутами уже все понятно.
Отвечают за это байты [0x5A2-0x5A7].
Например ,нам нужна наработка 9000ч. :
2328h*20h=046500h. Соответственно строку правим :[00 00 00 00 65 04].
Заливаем, проверяем.
Я думаю,что для всех барракуд должно работать.Надо проверять.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
strelec, те там счетчик с большим разрешением?

У GALAXY и TONKA2 очень похоже, а у вот ALPINE возможно по другому, и там нет дублирующего
счетчика по адресу 0x5DA. Надо проверить.

Я предлагаю еще один вариант. Сохраняем текущий VND track, далее сброс SMART, для очистки
старых логов, а потом редактируем старый SMART, часы останутся, остальное редактируется легко,
хотя могут быть трудности с атрибутами 197 и 198 (как я писал).
strelec
Newbie


Откуда: Кемерово
Всего сообщений: 105
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 апр. 2018
i8088 написал:
[q]
Я предлагаю еще один вариант. Сохраняем текущий VND track, далее сброс SMART, для очистки
старых логов, а потом редактируем старый SMART, часы останутся, остальное редактируется легко,
хотя могут быть трудности с атрибутами 197 и 198 (как я писал).
[/q]
Я так и делал))
Но мне было интересно разобраться с часами...
В старом компе вроде стоит альпина. Надо откопать и проверить)
С атрибутами 197,198 я решал также, как и вы.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
strelec, ALPINE хранит по адресам vnd track 0x05a7 - 0x05a4 (0x01a7 - 0x01a4 SMART
sector) значение Power On Hours умноженное на 0xAAA. Ну точнее, наоборот, это
основной счетчик, а FW делит его на 0xAAA

А для TONKA/GALAXY счетчик основной выходит 48-битный?
Для TONKA2/GALAXY счетчик по адресам 0x5A7-0x5a3 0x5A7-0x5a5, 24битный.

Редактирование времени на ALPINE удалось, спасибо!

А как Вы догадались, сравнивали SMART сектор по мере изменения времени, и анализировали
меняющиеся поля?
strelec
Newbie


Откуда: Кемерово
Всего сообщений: 105
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 апр. 2018
i8088 написал:
[q]
А как Вы догадались, сравнивали SMART сектор по мере изменения времени, и анализировали
меняющиеся поля?
[/q]
Да, именно так и делал.
strelec
Newbie


Откуда: Кемерово
Всего сообщений: 105
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 апр. 2018
i8088
Не подскажите по диску ST380811AS(TLITE1HD )?
Прошел селф со здоровьем Hlth=8000Hlth=0008.
Графики чтения-записи на твердую четверку.Зелени нет.
Задержек более 20мс вообще нет.
После некоторого времени(3-5 мин на чтении) атрибут 195
достигает порога:
195 Hardware ECC recovered         59     58      0     86233002   ••
Что это может значить?
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
Это значит, что читаемость вытягивает в основном за счёт работы ECC (в статистике вроде должно отображаться), и селфскан выполнил свою работу не на пятёрку.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
strelec, Вы не забыли сбросить health перед сканом?

Кстати на почти всех моих рабочих Seagate (скан на них я не проходил) health было 0008
(заводской скан прошел с health 0000), исключение пожалуй только обсуждавшаяся здесь TONKA40.


strelec написал:
[q]
После некоторого времени(3-5 мин на чтении) атрибут 195
достигает порога:
195 Hardware ECC recovered 59 58 0 86233002 ••
[/q]
А почему порога достгает? 59 это же не порог.

Посмотрел логи SMART с имеющихся дисков, есть диски где val для Att 195 равен 54, 59, 68.
Диски нормально работают, пишу с TONKA2 с val att195 == 66.

И практически на всех Barracuda, которые проходили через меня, даже просто при чтении
SMART raw att195 увеличивается, те как точно отметил KALDYH, читаемость вытягивает в
основном за счёт работы ECC.

Кстати, помнится, у Quantum есть настройка - повторять чтение сектора до тех пор пока
ошибок не будет вообще, или как только схема ECC в состоянии будет исправить ошибку,
считать сектор прочтенным и отдать данные (последнее быстрее, тк требует меньшего
количества повторов и менее точного позиционирования, это если не ошибаюсь, по умолчанию).

Возможно, Barracuda просто тоже использует втрой вариант по умолчанию, и поскольку
практически у всех Barracuda большие значения att 195, можно считать это нормальным.
Но если Ваш диск прошел скан с health, отличным от 0000, то конечно диск идеальным
считать нельзя. Но пользовать вполне можно.

Кстати, важно чтобы чтобы БП, с которым диск проходит скан, давал стабильные и чистые
напряжения (иначе возможно вообще AbEnd), я нагрузил дополнительно линию +5V мощными
резисторами (отдельный БП у меня старый, AT, с ведущей линией +5V), чтобы напряжения
выровнялись, тк один HDD недостаточная и главное очень нестабильная нагрузка на БП.
strelec
Newbie


Откуда: Кемерово
Всего сообщений: 105
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 апр. 2018
i8088 написал:
[q]
Вы не забыли сбросить health перед сканом?
[/q]
Да, сбрасывал.И запускал скан с теста 53, на котором ошибка 0008.
Хотя сам тест 53 проходит- OkEnd Test 53.
T>E53
;Log 53 - Health 0008 - HlthDtl 0000 - Cert Rev = .09E - Rom Rev = 3AAE.0DN - Time = 00<img src="smiles/lamer.gif" align=absmiddle alt=":08:">25 Log Type = 01
Read access time test:
Average access time for 30000 reads: 16610 us
Worst case access times: 137320, 131970, 128610, 128270, 128230 us

Мне не нравится как он запускается(ЖД).
Слышен различимый звук типа "цык"(ср. частоты), часто двойной.
Interface task reset4096k x 16 SDRAM
TLITE1HD - 1_Disk    S-69   06-20-06_14:25

Buzz  - Head Mask FFFF - Head Mask FFFF - Switch to full int.
              Spin Ready
(P)(H)SATA Reset

Т.е. два раза "Head Mask FFFF", соответственно два раза звук.
Иногда "Head Mask FFFF" при рекалибровке появляется
один раз.Звук какой-то не "нормальный", что-ли.
Не знаю, норма это или нет.Такой диск у меня один.

График чтения:
<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... 45 46 47 48 49 * 50 51 52 53 .. 75 76 77 78 79 80
Печать
Полигон-2 »   Документация »   Програмный ремонт жёстких дисков HDD
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS