The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Раздел полезных советов: Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту, auto_tips (??), 29-Ноя-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


8. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 30-Ноя-23, 09:22 
Вот пример работы скрпита и выхлоп dmesg

https://dpaste.org/wBgp2/raw

Когда в dmesg: sdc: detected capacity change from 240057409536 to 0

То ddrescue естественно перестает читать.

ddrescue: Can't reopen input file: No medium found

Происходит

DDLOOP #1

Кусок dmesg:

ata6: hard resetting link
ata6: COMRESET failed (errno=-16)
ata6: reset failed, giving up
ata6.00: disabled
...
sdc: detected capacity change from 240057409536 to 0
...
sd 5:0:0:0: [sdc] Stopping disk
sd 5:0:0:0: [sdc] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
ata6: link is slow to respond, please be patient (ready=0)
ata6: COMRESET failed (errno=-16)
ata6: link is slow to respond, please be patient (ready=0)
...
ata6: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata6.00: ATA-10: Western Digital SSD 240GB, ZD0R3G40, max UDMA/133
ata6.00: 468862128 sectors, multi 1: LBA48 NCQ (depth 32), AA
ata6.00: configured for UDMA/133
scsi 5:0:0:0: Direct-Access     ATA      Western Digital  3G40 PQ: 0 ANSI: 5
sd 5:0:0:0: [sdc] 468862128 512-byte logical blocks: (240 GB/224 GiB)
sd 5:0:0:0: [sdc] Write Protect is off
sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00
sd 5:0:0:0: Attached scsi generic sg3 type 0
sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdc: sdc1 sdc2 sdc3
sd 5:0:0:0: [sdc] Attached SCSI removable disk

Ответить | Правка | Наверх | Cообщить модератору

10. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от Аноним (-), 30-Ноя-23, 10:49 
> ata6: link is slow to respond, please be patient (ready=0)
> ata6: COMRESET failed (errno=-16)
> ata6: link is slow to respond, please be patient (ready=0)

Если девайс со временем вышел из комы сам то может катить что-то типа...

echo "- - -" > /sys/class/scsi_host/host1/scan
// Это вообще рескан на нужном scsi-контроллере чтобы найти отпавший девайс.

echo 1 > /sys/block/sdb/device/rescan
// А это вернет ему правильную емкость...


Разумеется девайс и scsi_host надо заменить на актуальные.

Ответить | Правка | Наверх | Cообщить модератору

11. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 30-Ноя-23, 10:57 
Вы почти пересказали то что делает мой скрипт.

Но я сначала удаляет echo 1 > /sys/block/sdb/device/delete
Затем echo '0 0 0' > /sys/class/scsi_host/host1/scan

А пути по которым писать в /sys получает из /sys/class/ata_port/ataN по номеру SATA порта.

Ответить | Правка | Наверх | Cообщить модератору

12. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 30-Ноя-23, 11:01 
> Если девайс со временем вышел из комы сам то может катить что-то

Нет сам не оживает. В примере он ожил как раз из за удаления и повторного сканирования хоста скрпитом.

Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

18. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +1 +/
Сообщение от Аноним (-), 01-Дек-23, 00:08 
>> Если девайс со временем вышел из комы сам то может катить что-то
> Нет сам не оживает. В примере он ожил как раз из за
> удаления и повторного сканирования хоста скрпитом.

Про оживание девайса я насчет фирмварного уровня имел в виду. Кернел сам это не прочухает без таких пинков - вон то по сути десинк протокольной логики, когда фимвар долго жует команду, с пофигом на все, а кернел пытается истерить и в результате потуг делает еще хуже и вообще теряет девайс - который не отвечает на все эти потуги. Ибо фирмвар все еще жует вон ту команду.

Я просто заметил что через несколько минут девайс таки зачастую попускает, видимо команда таки таймаутится и вот тут уже рескан все возвращает в виде как надо, кернел радостно находит девайс.... но вообще это все и показывает зачем надо режим чтения через SCSI команды. Чтобы с обычной логикой кернела в IO поменьше общаться. Если девайс битый, она - таки "не очень", особенно в дефолтном виде.

А передерг девайса кернелом таки часто не срабатывает если девайс задумался и ведет к протокольному десинку с потерей девайса. Другое дело что у кернела и выбора так то не сильно много что делать с "зависшим" девайсом.

Ответить | Правка | Наверх | Cообщить модератору

15. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 30-Ноя-23, 17:31 
Продолжаю. Перезапустил с размером сектора 16K, вместо 4K. Побыстрее пошло -b 16Ki

ddrescue-loop -ata 6 -loop 9999 -act 200 /dev/loop0 WD240.log -b 16Ki -O -P -m domain.map -u -r -1 -n

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

19. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от Аноним (-), 01-Дек-23, 00:16 
> Продолжаю. Перезапустил с размером сектора 16K, вместо 4K. Побыстрее пошло -b 16Ki
> ddrescue-loop -ata 6 -loop 9999 -act 200 /dev/loop0 WD240.log -b 16Ki -O
> -P -m domain.map -u -r -1 -n

Я разок смухлевал выччитав whdd большие блоки а потом сконвертив его логи чтения в формат myrescue, кажется, только там уже вместо тех больших блоков - мелкие нативные сектора. Идея такая что при конверсии битмапы мы маркируем все сектора большого блока как успешные в терминах адресата конверсии(с мелкими блоками), а неуспешные - ну, как неуспешные. И вон то более мелкими блоками дожать остатки. И там было просто, типа конверсии битмапа в битмап с раздуванием в эн раз. Так можно попытаться состыковать более разумное время bulk чтения с высоким КПД recovery в целом. И накодить такое не сильно долго.

В любом случае, удачи в рекавери. Поклацав по вашему профайлу и посмотрев новость про открытие некоей проги - я там и в профайле гитхаба автора нашел интереснейших ссылей. За что и спасибо.

Ответить | Правка | Наверх | Cообщить модератору

20. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 01-Дек-23, 00:52 
> В любом случае, удачи в рекавери. Поклацав по вашему профайлу и посмотрев новость про открытие некоей проги - я там и в профайле гитхаба автора нашел интереснейших ссылей. За что и спасибо.

Про hddsuperclone и форк opensuperclone ?

Странно что раньше не знали. Но вообще разочарование.
Модуль собирается, но
Режим Direct AHCI не видит диски на моей плате. Проверял с ядром 5.10

Режим Direct IDE использовал 1 раз в бесплатной версии еще до открытия.
С 32bit ядром 4.4

Тогда удалось с особо медленного жесткого диска инфу выдернуть успешно. Недели 2-3 заняло.

Для жестких дисков некоторых Passthrough auto detect был быстрее чем ddrescue

Для SSD последнее время сколько ни пробовал - они отваливаются в Passthrough auto detect режиме
Причем или на окне выбора источника все зависает либо если удалось выбрать то уже в процессе
Этот GUI дурацкий каждый раз все заново тыкать выбирать.

SSD все восстанавливаю ddrescue

Ответить | Правка | Наверх | Cообщить модератору

24. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от Аноним (24), 04-Дек-23, 15:00 
> Про hddsuperclone и форк opensuperclone ?

Да, там в профайле гитхаба его автора нашлось немало забавных артефактов. Например какой-то "типа сервистул" для alcor чтоли. Я питаю определенную слабость к таким артефактам.

> Для жестких дисков некоторых Passthrough auto detect был быстрее чем ddrescue

Я поймал себя на том что часто юзал MyRescue. А пару раз даже корябал утилитки под местные нужды. Скажем какой-то SD карте я по приколу вправил транслятор переписав всю площадь несколькими паттернами несколько раз. До сих пор пашет. Но памятуя о слете транслятора - выдергивать ЭТО на ходу ессно ненене, уже проверено кем-то что голимая идея :). А мне было интересно проверить теорию перестроится ли трансляция если несколько раз проехать по всей площади. Вроде прокатило.

> Для SSD последнее время сколько ни пробовал - они отваливаются в Passthrough
> auto detect режиме Причем или на окне выбора источника все зависает либо если
> удалось выбрать то уже в процессе Этот GUI дурацкий каждый раз все заново тыкать
> выбирать. SSD все восстанавливаю ddrescue

Если честно я вообще не особый фанат GUI для подобных вещей, текстовые штуки проще при случае немного скриптануть под какие-то странные причуды и проч. Которых в таких случаях разумеется можно отхватить.

А кстати не знаете? Я как-то WDшник вбил в safe mode по заполнению дефект листа, он при таком зарубает все кроме 1-секторного чтения. Интересно линухкернел/libata реально заставить такое жрать? Ему можно мультисекторный DMA READ запретить? Я правда доигрался уже когда образа нормально отстроил и пытался в перфекционизм, минимищацию урона, так что на рекавери не повлияло, но интересно стало.

Ответить | Правка | Наверх | Cообщить модератору

26. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 05-Дек-23, 07:54 
> А кстати не знаете? Я как-то WDшник вбил в safe mode по заполнению дефект листа, он при таком зарубает все кроме 1-секторного чтения. Интересно линухкернел/libata реально заставить такое жрать? Ему можно мультисекторный DMA READ запретить? Я правда доигрался уже когда образа нормально отстроил и пытался в перфекционизм, минимищацию урона, так что на рекавери не повлияло, но интересно стало.

hddsuperclone --tool -t /dev/sdX -f /usr/local/bin/hddscripts/ata_disable_look_ahead

Возможно то же самое можно сделать hdparm -a или hdparm -A0

И ddrescue запускать с ключем -c 1 тогда будет по одному сектору читать.

Ответить | Правка | Наверх | Cообщить модератору

21. "Cкрипт ddrescue-loop с функцией автоматической остановки/перезапуска диска на SATA порту"  +/
Сообщение от gumanzoyemail (?), 01-Дек-23, 11:20 
> Я разок смухлевал выччитав whdd большие блоки а потом сконвертив его логи чтения в формат myrescue, кажется, только там уже вместо тех больших блоков - мелкие нативные сектора. Идея такая что при конверсии битмапы мы маркируем все сектора большого блока как успешные в терминах адресата конверсии(с мелкими блоками), а неуспешные - ну, как неуспешные. И вон то более мелкими блоками дожать остатки. И там было просто, типа конверсии битмапа в битмап с раздуванием в эн раз. Так можно попытаться состыковать более разумное время bulk чтения с высоким КПД recovery в целом. И накодить такое не сильно долго.

Теоретически можно так:
Первый проход запускаем ddrescue -d -b 64Ki in out 1pass.map
Вычитываем полностью со scrapping
Затем инвертируем полученный mapфайл чтобы превратить его в файл домена для ограничения по чтению.
ddrescuelog --invert-mapfile 1pass.map > 2pass.dom.map
То есть все бэды которые там есть станут финишед и только по ним будем читать второй проход.
ddrescue -d -b 4096 in out 2pass.map -m 2pass.dom.map

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру