Могу немножко рассказать, как работают правильные копировщики.
Средствами ОС, которыми пользуются практически все обычные пограммы копирования, очень сложно, а скорее и не возможно, все это организовать.
Обычно хард чистается в UDMA режиме боками по 256 секторов.
Если хард выдал ошибку на блок в 256 секторов. Происходит переключение в PIO режим и сбойный блок читается по одному сектору. в UDMA читать по одному сектору нельзя. Получается, что все хорошие сектора, заберутся из кеша харда.
После сбойного сектора делается прыжок, назаданное количество секторов и также в PIO происхоит чтение небольшими порциями или по одному сектору в обратном направлении. До сбоя. После чего этот кусок пропускается и читается следующий после прыжка сектор, если он нормальный опять преключение на чтение в поблочный UDMA режим. Чтобы читать максимально быстро..
Если после прыжка, вновь сбой, то опять прыжок, и так далее, пока не будет пройдено все сбойное место. Что сбергает головки от запиливания.
Когда хард зависает, приходится его сбрасывать, Кешь очищается, читать приходится только в PIO по 1 сектору. Методов сброса собствено не много. Програмный сброс, аппаратный, и передерг питания. Ну и у сигейта, фуджей и самсунга возможен еще сброс через терминал, у остальных такой возможности нет.
Само зависание, обычно вызвано тем, что плохая голова не может произвести запись в логи обработки ошибок в служебной зоне.
Отключить такую обработку весьма не просто. Готовых команд у харда обычно просто нет, для подобного отключения.
А разбирать, дезасемблировать, сотни вариантов версий прошивок и изменять код микропраграммы, для отключения обработки ошибок, сами понимаете очень и очень не просто.
Могу немножко рассказать, как работают правильные копировщики.
Средствами ОС, которыми пользуются практически все обычные пограммы копирования, очень сложно, а скорее и не возможно, все это организовать.
Обычно хард чистается в UDMA режиме боками по 256 секторов.
Если хард выдал ошибку на блок в 256 секторов. Происходит переключение в PIO режим и сбойный блок читается по одному сектору. в UDMA читать по одному сектору нельзя. Получается, что все хорошие сектора, заберутся из кеша харда.
После сбойного сектора делается прыжок, назаданное количество секторов и также в PIO происхоит чтение небольшими порциями или по одному сектору в обратном направлении. До сбоя. После чего этот кусок пропускается и читается следующий после прыжка сектор, если он нормальный опять преключение на чтение в поблочный UDMA режим. Чтобы читать максимально быстро..
Если после прыжка, вновь сбой, то опять прыжок, и так далее, пока не будет пройдено все сбойное место. Что сбергает головки от запиливания.
Когда хард зависает, приходится его сбрасывать, Кешь очищается, читать приходится только в PIO по 1 сектору. Методов сброса собствено не много. Програмный сброс, аппаратный, и передерг питания. Ну и у сигейта, фуджей и самсунга возможен еще сброс через терминал, у остальных такой возможности нет.
Само зависание, обычно вызвано тем, что плохая голова не может произвести запись в логи обработки ошибок в служебной зоне.
Отключить такую обработку весьма не просто. Готовых команд у харда обычно просто нет, для подобного отключения.
А разбирать, дезасемблировать, сотни вариантов версий прошивок и изменять код микропраграммы, для отключения обработки ошибок, сами понимаете очень и очень не просто.