LINUX.ORG.RU

Уменьшить таймауты ошибок чтения с диска


0

1

Как уменьшить таймауту чтения с диска в Linux? Ну то есть время, если за которое диск не отдаст данные сектора, программа идёт дальше, а в консоль сыпится DMA READ ERROR - FREEZE (как-то так, точно не помню). Допустим, если за 100 миллисекунд не прочитается, то плюнуть и пойти дальше, а то сейчас такое ощущение, что он по несколько десятков секунд ждёт. Необходимо это, как можно догадаться, для комфортной работы с данными на сбойном HDD. Желательно самый быстрый вариант, если возможно, то без пересборки ядра.

P.S.: Для тех, кто будет сейчас кричать «купи новый жёсткий диск, не нищебродствуй!» - даже если я и куплю новый, было бы не плохо спасти данные со старого, а если их много, то это удобнее делать избирательно (т. е. ходя по файловой структуре через Nautilus и просматривая файлы). Времени у меня предостаточно, сыпаться окончательно диск завтра не будет, инфа 100% :-)

★★★★★

Последнее исправление: KivApple (всего исправлений: 1)

DMA READ ERROR

Желательно самый быстрый вариант, если возможно, то без пересборки ядра

выкинуть труп винта

anonymous
()
Ответ на: комментарий от anonymous

Мне данные нужны. Причём не все (много ненужного, которое долго, да и некуда копировать). А ждать пять минут пока Nautilus отобразит мне содержимое директории как-то не очень приятно. Диск завтра не умрёт. Инфа 100% :-)

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

ждать пять минут пока Nautilus

facepalm

dd conv=noerror dd_rescue

anonymous
()
Ответ на: комментарий от KivApple

некуда копировать

копируй на файлохостинг, например

anonymous
()
Ответ на: комментарий от KivApple

А ждать пять минут пока Nautilus отобразит мне содержимое директории как-то не очень приятно

Либо посекторное копирование, что предпочтительнее, с указанием пропуска ошибок, на новый носитель либо в образ.

Либо в консоли / эмуляторе терминала командами 'cp <source> <dest>', либо через mc.

Наутилус долго строит дерево файлов.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Если он будет получать READ ERROR в сто раз быстрее, то скорость будет приемлема. В общем моя задача - ЛЮБОЙ ЦЕНОЙ сделать комфортную работу со сбойным диском. Решение: более быстрое игнорирование ошибок чтения. Вопрос: как это проще сделать?

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Если диск уже посыпался и уже невозможно переназначить повреждённые (не читающиеся) сектора это означает что диск пора выкидывать а данные с него переносить на другой.

READ ERROR может свидетельствовать как о физическом повреждении самого накопителя, повреждены магнитные пластины, к примеру. Так и о плохом питании накопителя, проседает напряжение на 12 или 5 вольтовой линии или плохо подключен кабель питания накопителя. Так же причиной этому может быть повреждённый DATA кабель или плохо подключённый.

Для начала переподключите диск или замените кабель питания и DATA кабель (SATA/IDE).

Если проблема осталась посмотрите таблицу S.M.A.R.T., на предмет наличия переназначенных секторов и сбоев в работе механики.

Для надёжности прогоните тест MHDD, но если диск действительно уже «помирает» это может быть для него фатально.

Поэтому, если вам нужны данные, берёте ещё один диск и копируете либо посекторно данные с одного на другой с пропуском ошибок, как указали здесь: Уменьшить таймауты ошибок чтения с диска (комментарий), но предварительно проверьте / замените провода. Или копируйте файлы с помощью mc.

Убрать задержки чтения сбойных секторов нельзя, такова логика работы внутреннего программного обеспечения жёсткого диска.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Убрать задержки чтения сбойных секторов нельзя, такова логика работы внутреннего программного обеспечения жёсткого диска.

Но ведь процессор не связан с жёстким диском. В смысле, что работает параллельно с ним. Значит он может перестать ждать ответ от диска раньше, чем нужно и продолжить исполнять другие инструкции.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Он и выполняет другие операции, ожидает только процесс, который инициировал обращение к сбойной области диска.

Сколько у вас дисков в системе ?

Если один этот сбойный диск - то это логично что задачи, которые требуют считывания с диска данных «замерзают», даже если им нужно считать данные с не сбойной области диск не может производить доступ к нескольких участкам магнитной поверхности одновременно, пока не обработает сбойную область.

Вы прочитали то что я написал о проблемах питания и не надёжном подключении диска ? Попробовали заменить провода / переподключить диск, может он просто не надёжно подключен?

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Вы прочитали то что я написал о проблемах питания и не надёжном подключении диска ? Попробовали заменить провода / переподключить диск, может он просто не надёжно подключен?

Помогает, но ненадолго, хотя системник никто не трогает.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Ну значит замените провод и для надёжности подключите диск к другому каналу контроллера дисков на материнской плате. И уберите его, что бы его даже не зацепали.

kostik87 ★★★★★
()

ddrescue
или dd_rescue

и диск на помойку.

drBatty ★★
()
Ответ на: комментарий от kostik87

Убрать задержки чтения сбойных секторов нельзя, такова логика работы внутреннего программного обеспечения жёсткого диска.

Верно.

Если ТС хочет ограничить это значение, то ему нужен диск RE (raid edition), которые необосновано стоят дороже обычных.

soomrack ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.