отображаемое на экране буду отображать в квадратных скобках - [ ].
Как обычно, я снимаю с себя ответственность за вред, причиненный этой
программой. Читайте доки внимательнее. Они - рулез!
Одно я могу сказать - я пишу эту программу не для убиения
ваших накопителей а для упрощения ремонта
и диагностики, т.е. использовать ее надо как инструмент.
Чтобы понимать, как работает накопитель, следует, как минимум,
прочитать документацию, выложенную в разделе
free download на сайте http://www.acelab.ru.
Также было бы неплохо ознакомиться с ATA/ATAPI стандартом (www.t13.org).
Что же такое MHDD? Первоначально MH! (да, тогда она называлась именно
так) была писана исключительно для быстрой и наглядной диагностики любого
IDE накопителя. Но, с течением времени, она "обросла" всякими нужными мне
"фишками" и "примочками", благодаря чему начала нравиться народу :).
С тех пор она была переписана заново несколько раз. Теперь, когда
размер исходного кода около 200к (версия 2.7.0), переписывать что-либо
бесполезно. Я это понимал, когда переписывал её в последний раз :),
поэтому был сделан упор не на полноту функций, а на способность быстро
добавить необходимую процедуру. По правде говоря, из-за этого MHDD выглядит
немного сыроватой. Но, постепенно, все процедуры будут отлажены
полностью и доведены до ума.
Сразу сделаю замечание по поводу windows. Внимание: под windows эта программа
работает, но с некоторыми ограничениями: накопитель лучше не определять в BIOS,
а в windows лучше отключить Дополнительный контроллер HDD (ну или тот,
на котором у вас "висит" тестируемый накопитель). При работе под win
результаты замера скорости, естественно, будут немного отличаться в
неизвестном направлении :-). Если же у вас для какого-то из накопителей
включен режим DMA, то при попытке переключиться на этот накопитель в MHDD
загорятся все лампочки регистра состояний.
Программа работает с дополнительными UDMA-контроллерами, начиная с версии 2.8.
ВНИМАНИЕ: Если хотите, чтобы данные на ваших дисках были целы - не запускайте
MHDD на том же накопителе, который тестируете.
Это не значит, что у вас 100% что-то накроется при таком запуске (у меня еще
ничего не портилось), но можно себе представить, что "чувствует" накопитель,
к которому MHDD обращается через порты одновременно с обращениями ОС (тоже,
в итоге, через порты). Получается "каша" из различных команд, посылаемых в
HDD, и никто не может предсказать, куда там и что в таком случае запишется ;).
Вся работа с HDD ведётся исключительно через порты. То есть, никаких BIOS,
никаких прерываний, всё делается напрямую. Так что MHDD "по барабану", какая
ОС у вас установлена на диагностируемом накопителе,
она имеет доступ ко ВСЕМУ накопителю от
первого до последнего сектора в независимости от того,
есть ли там какая-либо информация или нет.
MHDD не работает с CDROM-а, т.к. не может создать файлы,
необходимые для работы. Для работы MHDD необходимо:
1. отсутствие защиты от записи на накопителе, с которого она загружается;
2. наличие свободного места на диске (хотя бы 70 килобайт), лучше - мегабайт 20.
3. атрибуты Read-Only нужно снять (при копировании с CDROM)!
Итак, первый запуск.
Если на диске нету файла MHDD.CFG, программа создает его и предлагает выбрать
накопитель (в дальнейшем выбор накопителя осуществляется клавишами <SHIFT+F3>
или командой "port"). В квадратных скобках указано значение по умолчанию.
Его можно выбрать, сразу нажав <ENTER>.
Мы попадаем в командную строку [MHDD>].
В MHDD нету меню, все вводится командами. Нажатия на комбинации клавиш просто
автоматически вводят каку-либо команду.
Сверху моргают лампочки :) - немного о них. В левой части - регистр состояния.
Тут отображается состояние накопителя. Самые важные биты:
BUSY - накопитель занят и на команды не реагирует,
WRFT - ошибка записи,
DREQ - накопитель жаждет обменяться данными с внешним миром,
ERR - в результате какой-либо операции возникла ошибка. Когда загорается
этот бит, обратите внимание на правую верхнюю часть экрана. Там
будет отображен тип последней ошибки.
Правая часть (действительно только при зажженной лампочке "ERR"):
AMNF - Adress Mark Not Found,
T0NF - Track 0 Not Found - невозможно "найти" 0 трек,
ABRT - Abort, команда отвергнута,
IDNF - Sector ID Not found,
UNCR - Uncorrectable Error.
Между этими 2мя полями, в середине, есть пустое место. Так вот, если накопитель
запаролен, тут загорается лампочка "PWD", а если "обрезан" процедурой HPA,
появится лампочка "HPA". Если и то, и другое - появятся обе лампочки :).
Лампочки появляются и исчезают только при инициализации и
идентификации HDD (<F2> - прежде, чем с накопителем что-нибудь делать -
нажмите F2!).
Под строкой с этими лампочками есть строка с кучей квадратных скобок -
строка параметров HDD.
Левая часть отображает текущие параметры накопителя (Обновляется только
при идентификации - <F2>). Правая часть отображает текущее положение головок
при прохождении различных тестов.
При выполнении проверки поверхности справа появится окно.
В первой строке этого окна будет отображаться текущая скорость работы с
поверхностью. В последней - два значения в процентах. Первое значение
показывает процент выполнения текущего теста в заданном промежутке, а второе
отображает, насколько далеко головки "ушли" от 0 цилиндра и
"пришли" к последнему.
В процессе тестирования поверхности один квадратик
равен 255 секторам (при тестировании в режиме LBA),
либо числу секторов в строке параметров HDD (обычно, 63 - при
тестировании в режиме CHS). Чем "мутнее" квадратик - тем больше накопителю
потребовалось времени для чтения этого блока секторов. Если пошли цветные
квадратики - значит, накопитель не "вписался" в отведенный ему для работы
промежуток времени. Цветными квадратиками отображается ненормальное состояние
поверхности (но еще без "BAD'ов"). Чем "ниже" по меню цвет - тем больше
накопителю понадобилось времени для чтения этого трудночитаемого участка.
Красный цвет - признак того что на этом месте уже почти "сформировался"
BAD block.
Вопросительный знак появляется при превышении максимального
времени ожидания готовности. То есть, при появлении [?] можно считать, что
накопитель "подвис" на этом месте и здесь явно присутствует либо серъёзный
дефект поверхности, либо неисправен блок магнитных головок (БМГ).
Всё, что ниже вопросительного знака - это ошибки (BAD block).
Если они появляются в процессе тестирования, значит, на поверхности есть
физические дефекты.
Стоит заметить, что старые накопители работают медленно :). Поэтому, если вы
тестируете старый накопитель (до 2-3 Гб), то зеленые квадратики -
нормальное явление.
Описание команд, вводимых в командной строке.
Слева - команда, рядом, если есть, способ быстрого вызова по нажатию
клавиш. Дальше - буква B, S, P или U (Beta/Stable/Unstable/Partial).
Beta - отлаженная процедура, предполагается стабильная её работа.
Stable - отлаженная процедура, Unstable - используйте внимательно,
Partial - процедура должна работать нормально, но рекомендуется
"наблюдение" за поведением программы в нестандартных
ситуациях.
exit <ALT+X> S выход на один уровень вверх/выход из программы
id S вывод информации о накопителе. Число головок/цилиндров/
секторов, lba, какие режимы dma поддерживаются,
поддерживается ли HPA, SMART, Security mode...
Вобщем, все, что можно полезного сказать про накопитель.
scan <F4> B сканирование поверхности. результат можно занести в log.
можно также включить попытки сделать reassign/remap на блоках,
содержащих ошибки.
p.s. менюшку можно двигать :) - "A", "D", "W", "S".
[Scan in: CHS/LBA] - Сканировать в CHS или в LBA
[Starting CYL] - стартовый цилиндр при скане в CHS
[Starting LBA] - номер начального сектора (для LBA)
[Log: On/Off] - вести ли лог (mhdd.log)
[Remap: On/Off] - Попытка сделать Remap
[Starting CYL] - конечный цилиндр при скане в CHS
[Starting LBA] - номер конечного сектора (для LBA)
[Timeout(sec)] - таймаут в секундах (1-200)
[Advanced LBA log] - лог состояния поверхности
(по нему потом строится график)
[Standby after scan] - После теста останавливать ли двигатель
[Loop the test/repair] - зациклить выполнение сканирования.
[Erase WAITs] - см. ниже
! Некоторые из позиций меню сохраняют значения в MHDD.CFG.
! Позиция меню также запоминается в MHDD.CFG
С версии 2.8 появилась возможность сбрасывать накопитель
во время сканирования в любом месте клавишей "R" (удобно,
если накопитель подвисает). Также появилась возможность
включить попытку записи в группу секторов, которые нестабильно
читаются или повреждены (меню ERASE WAITS).
Очень удобно использовать на IBM'ах с BADами.
При включенной опции Erase Waits, если накопитель наткнулся
на нестабильный или BAD сектор (остановилась верификация),
ему через 1/4 сек. дается команда сброса,
за которой следует попытка записи в те сектора,
которые вызвали задержку. При этом накопитель не "трыкает" на
BAD block'ах, а сразу выполняет remap (если это необходимо).
Необходимо учесть, что это - деструктивная
функция (для данных).
aerase S Посекторное стирание диска. Иногда помогает при
нестабильно читающихся секторах. Иногда ней можно скрывать
дефекты. Но работает она очень медленно (зависит от
подключенного накопителя), так что использовать
её целесообразно только для небольших участках диска.
hpa S работа с hpa - Host Protected Area - для накопителей,
которые "умеют" это делать... узнать, умеют ли, можно,
дав команду id и посмотрев в поле "Features": если там
есть слово "HPA", значит, поддержка HPA есть. HPA
позволяет "отрезать" часть пространства накопителя с конца,
и, таким образом, уменьшить его объем. Это можно сделать
"насовсем" - накопитель станет меньшего объема (Hard HPA),
или до выключения питания (Soft HPA) - для того что бы
"попробовать", как оно будет, после выключения/включения
питания параметры накопителя восстановятся.
rx S Если накопитель "поднял" бит DREQ для вывода информации,
можно ввести эту команду. Она считает данные из
буфера HDD. Попутно создается файл mhdd_rx.buf, в который
дописываются эти данные.
rhpa S Показывает значение Native HPA ("Настоящий" объем HDD).
cls S ;) очистка консоли.
pwd S установка пароля на накопитель. Пароль задается при запуске
процедуры.
unlock S открыть запароленный накопитель.
Пароль задается при запуске процедуры.
dispwd S снять пароль. Пароль задается при запуске процедуры.
Перед тем как снимать пароль, накопитель
необходимо открыть (unlock).
rpm S определение частоты вращения шпинделя по полю INDEX,
приблизительно. Работает только на накопителях, где поле
INDEX задействовано.
ff S Копирование из файла-образа на диск поблочно.
В процессе работы нужно будет указать имя файла.
При этом программа предложит (в квадратных скобках)
разместить файл так, чтобы он лежал с 0-го сектора.
Файл должен иметь длину, кратную 2. Если копироать больше
секторов, чем есть в файле, лишнее заполняется нулями.
nhpa S восстановить полный объем накопителя.
aam S Automatic Acoustic Management - регулировка уровня
шума, издаваемого накопителем в результате перемещения
головок за счёт уменьшения скорости перемещения оных.
tof S Создание образа диска. Файл может быть объемом ДО 2Gb.
В процессе работы нужно указать начальный, конечный секторы,
а также имя файла для вывода.
init S Сброс накопителя, например, если он "завис".
Также выполняется установка параметров
и рекалибровка накопителя.
fdisk S Создает в текущем каталоге файл с именем bootsect.mhd,
в котором содержится сгенерированный MBR для
подключенного накопителя. В этом MBR будет
описан 1 активный раздел FAT32, на полную ёмкость
накопителя. Потом этот файл, после вопроса, будет записан
на накопитель в MBR.
Вот старое описание этой команды, для понимания
принципа функционирования:
------------------------------------------------------------
быстрое разбиение на разделы.
Разбивает накопитель на 1 раздел на всю емкость
и делает его активным через порты (т.е. BIOS -
по барабану).
Сама "Fdisk" на накопитель ничего не пишет,
она создает файл в текущем каталоге "!bs!",
в котором содержится сгенеренный MBR.
Потом даёте команду "FromF" - запись из файла на диск,
указываете, что надо записать 1 сектор и вводите
имя файла "!bs!" (без кавычек).
все! остается только отформатировать :-), для чего
включаю в архив MHDD программу MS Format.com
(Win98 SE RU), в которой вырезана процедура
верификации поверхности. Теперь
форматировать раздел в 30 гиг можно за 10 секунд :-).
------------------------------------------------------------
smart S Работа с функциями SMART. Пробуйте "smart" без параметров,
помощь по SMART интегрирована в MHDD.
port <SHIFT+F3> S Выбор накопителя.
stop <SHIFT+F4> S Останов шпинделя.
i <F2> S Включает в себя 2 команды: id + init, друг за другом.
cx S SeekTest для quantum CX, LCT (с м/с TDA5247HT)
Продолжается до нажатия "ESC" или до того момента,
когда время позиционирования резко возрастает.
При любой ошибке сразу же выключает двигатель.
erase S Посекторное стирание диска (ускоренное за счет
блочной работы). Можно задать начальный и конечный сектора.
Процедура сама предлагает в качестве последнего сектора -
последний на диске.
wait S Ожидание готовности. После получения готовности (когда
бит BUSY будет сброшен) программа издает звуковой сигнал.
ibme B IBM Explorer. Пока - просмотр дефект-листов.
Создает каталог IBMLST, где создает файл, в качестве
имени которого берется серийный номер HDD.
В этот файл сливается все, что можно было достать
из накопителя. В том числе, и P-List.
fujlst B FUJITSU Explorer. Просмотр дефект-листов.
Создает каталог FUJLST, где создает файл, в качестве
имени которого берется серийный номер HDD.
В этот файл сливается P-List.
2.6.1
+ Реализовал нормально работу с password (по настойчивым требованиям) :)
см. команды "pwd", "unlock", "dispwd".
2.6.2
+ SeekTest для квантумов CX и LCT :-). см. команда "cx".
+ "Copy" почти готова.
2.6.4c.
+ Переделал переключение портов, то есть, теперь нормально детектятся
все винты, даже подключенные SLAVE'ом :)
+ Ускорил процедуру идентификации винтов.
+ "Copy" готова. (только в версии "с", в "f" copy отключена).
+ Написал "fdisk" - быстрое разбиение. Смотрите соотв. описание.
+ Пропатчил MS format.com - убрал процедуру верификации поверхности,
теперь форматирование любого винта займет не более 10-15 секунд :)
2.7.0b
+ Переписано много процедур, набор команд изменен.
+ Добавлен Remap - скрытие дефектных секторов.
+ Работа с HPA избавлена от глюков. В частности, теперь нормально
восстанавливается размер диска командой NHPA.
! Добавлено много всего, что я пока боюсь новинки декларировать :).
Это - бета версия, выпущенная для того, чтобы народ "погонял"
документированные в этой доке команды.
2.7.4
+ добавлены процедуры создания/копирования образов диска.
+ включено переработанное копирование.
+ переработаны процедуры стирания дисков
+ добавлено уничтожение дисков фирмы Fujitsu.
+ работа с HPA теперь нормально работает на дисках IBM. Раньше она
не работала, но из-за ошибки не в MHDD, а в firmware IBM HDD.
+ добавил ведение лога при сканировании для построения графика верификации.
! нашел ошибку, которую внес еще 2 года назад :-)
теперь MHDD должна работать стабильнее.
2.7.4.3
- отключены процедуры убивания HDD FUJITSU.
+ модифицирована процедура ERASE (stable )(см. описание)
+ модифицирована процедура FDISK (stable) (см. описание).
+ добавлена процедура WAIT (stable) (см. описание).
+ процедуры FF, TOF, ERASE и AERASE теперь Stable.
2.8b (2.7.9b)
! исправил баг с ABORT'ами при сканировании в CHS.
+ введена поддержка PCI ATA контроллеров. Thanks to Mishail Mavritsin за
модуль для сканирования PCI шины.
+ введена возможность чтения дефектлистов HDD IBM, FUJITSU.
+ теперь по умолчанию сканирование запустится в LBA режиме, если это
возможно на данном накопителе.
+ ускорено :) определение устройств, оптимизирована и
ускорена процедура сброса HDD.
- вычистил ВСЕ остатки от COPY. Теперь в MHDD нету копировщика. Да
и зачем он нужен???
+ переработал код. Удалено 20% ненужного :) исходного кода.
+ очень много изменений, прошу наблюдать за работой программы.
2.8
+ введена оценка времени сканирования.
+ исправлено несколько багов, внесенных в версию 2.7.9 (зависание при детекте,
неправильное определение UDMA контроллеров),
+ введена клавиша "R" при скане. Она посылает накопителю сигнал сброса прямо в
любое время и в любом месте при сканировании.
+ выход из сканирования по <ESC> улучшен, выход теперь происходит моментально
независимо от того, в каком состоянии находится накопитель.
+ добавлена опция ERASE в процедуру сканирования. Это нечто похожее на Remap,
но намного интереснее. См. описание процедуры scan.
+ немного расширено ведение LOG файла.
Привет!
Есть предложение по программе - почему бы не сделать "batch" процесс - тоесть задаешь, что накопителю делать, чем ему заниматься - и идешь спать - с утра встаешь - все сделано, например чтобы можно было задать так:
1) scan по лба просто с ремапом
2) сделать erase всему диску.
3) scan по лба с Erase включенным
4)затем scan по лба просто и без ремапа
ну и вариации
И еще, я что-то не понял, можно ли выводить значения атриботов смарт?????
Если можно, то пункт 0) записать в файл смарт
пункт 3а) записать в файл смарт, пункт 5)записать в файл смарт.
И Еще чтобы cx можно было включать на какое-то время - например минут на 5. - Чтобы тоже в такой batch процесс добавить.
Вроде все ))))))))
Hi Dmitry, my respects for your great work, this version is very nice, command erase waits, very important, but I dont'understand the use of the file .cfg.
The UDMA controller still don't work, at least with mine ( Promise TX2 100 UDMA ), same thing since last report,
The others commands ( I tested the program for 6 hours, with many differents HDs ) is working very fine, also the program is very stable.
Can I ask one thing ?
Using the command HPA it is possible to cut the end of the HDD, also using the IBM feature Tool you can do the same; why don't do a command to cut the start of the HDD ?
Anyway this is a very powerfull tool to work with hard drivers, and the interface is very nice, at least for me, I allways work with DOS.
Best Regards
Jose Pinto
PS: Now in my Town is 08:33 morning time the sun is shinning and the temperature is 28 celsius ( hot ), by miday it will be 35 celsius, vey hot, and sometimes 42 celsius.
Есть предложение по программе - почему бы не сделать "batch" процесс - тоесть задаешь, что накопителю делать, чем ему заниматься - и идешь спать - с утра встаешь - все сделано, например чтобы можно было
--
Hi Dmitry, my respects for your great work, this version is very nice, command erase waits, very important, but I dont'understand the use of the file .cfg.
--
thanks :-).
.сfg file - for internal use, not for user :-).
---
The UDMA controller still don't work, at least with mine ( Promise TX2 100 UDMA ), same thing since last report,
---
I need to get one for explore the problem...
I will try to find it here.
---
Using the command HPA it is possible to cut the end of the HDD, also using the IBM feature Tool you can do the same; why don't do a command to cut the start of the HDD ?
---
It is very hard to do this ;-).
Отловил такой глюк:
Винт IBM DHAA-2405(2.5'') 344MB 915/15/49 Определяется в последней и во всех предыдущих версиях как нечто около 589Гб, при этом все процедуры (erase, scan, tof и т.д) зависают после достижения реального конца диска, что наверно неудивительно.
Аналогичная ситуация с винтом DHAA-2540(2.5'') 540Mb 1047/16/63 тоже определяется как огромное количество гигабайт.
Дмитрий, если интересуют точные цифры, могу написать, но думаю, не стоит возится, - винты то старые.
Отловил такой глюк:
Винт IBM DHAA-2405(2.5'') 344MB 915/15/49 Определяется в последней и во всех предыдущих версиях как нечто около 589Гб, при этом все процедуры (erase, scan, tof и т.д) зависают после достижения реального конца диска, что наверно неудивительно.
Аналогичная ситуация с винтом DHAA-2540(2.5'') 540Mb 1047/16/63 тоже определяется как огромное количество гигабайт.
Дмитрий, если интересуют точные цифры, могу написать, но думаю, не стоит возится, - винты то старые.
А если попробовать другую версию MHDD?
странно вообще. Может, в переходнике проблема?
MHDD определяет число СЕКТОРОВ (не то, что "49", я имею в виду LBA.)? Если да, значит глюк в этом, и я догадываюсь, где ;).
Я извинясь, допустил ошибку, - не знал, что уже вышла 2.8 версия.
Сегодня скачаю и проверю на ней.
Возможно проблема в переходнике, но все остальные винты более новые IBM DSOA; DPRA определяются нормально.
Сейчас проверю в ноуте....
Та-а-ак. Похоже ложная тревога. Поставил точно такой же другой винт - все ОК, ставлю старый та же фигня. Это особенность 2-х конкретных винтов, странное совпадение.... ???
Поставил старый винт в ноут так там MHDD вообще пишет "drive not ready". Хотя все работает и в биосе определяется нормально. Биос старый, но ведь работаем то через порты :O
Даже предположить не могу в чем глюк....
Сейчас попробую поставить другой точно такой же в ноут, тогда уж точно станет ясно в чем дело, - в биосе\железе или в винте...mhdd наверно не при чем...