| 
|  | |  | |  | | 4.4, Аноним (4), 00:37, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  | Примечательнее, что код небрежно без отступов. Небрежно - небрежение к читателю. 
 |  |  | 
 |  | | 5.5, gumanzoy (?), 00:56, 30/11/2023 [^] [^^] [^^^] [ответить] | –4 +/– |  |  Если нет вложенных if 2 и более уровня. То не делаю отступы. Мне наоборот так больше нравится. Тут уже на вкус и цвет.
 
 |  |  | 
 | 
 | 
 | 3.6, Аноним (-), 01:35, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  | > Зря вы так. Это ссылка на форум а не на новостной сайт. Хобот нынче не работает без JS. И вообще - изг@внякали форум до полной непригодности как по мне. И регистрация требуется в обязаловку. Когда-то был прикольный форум - но сейчас скатился куда-то.
 И кстати еще для линуксоидов стоит упомянуть (открытую) программу WHDD для тестирования поверхности и чтения. Имеет жирное преимущество: умеет работать через SCSI команды в обход обычного интерфейса кернела. А также понимает как читать побитые диски правильно. И ... есть недостаток: размер блока все ж здоровый. Урон неоптимальный. Но иногда очень полезно SCSI командами вместо насилования кернела, он довольно криво реагирует на побитые диски временами.
 И да, когда было совсем душно - я при затыках чтения ресетил девайс контроллером. Но вообще реинециализацию девайсов без острой нужды лучше не делать, если служебка не прочтется девайс может не выйти на режим - и гудбай, тогда с него вообще нифига не прочитать уже.
 |  |  | 
 |  | | 4.7, gumanzoy (?), 08:50, 30/11/2023 [^] [^^] [^^^] [ответить] | +1 +/– |  |  Про WHDD знаю и использую. Но она тут ни причем. Все же больше для диагностики. > Но вообще реинециализацию девайсов без острой нужды лучше не делать, если служебка не прочтется девайс может не выйти на режим - и гудбай, тогда с него вообще нифига не прочитать уже.
 Данный скрит только для SSD о чем написал в самом начале. С ними нет такой проблемы как что то читалось, а затем перестанет читаться. Все стабильно.
Для неисправных жестких дисков такой метод и не поможет скорее всего. Диск не остановится и нужно будет пере-подключать питание.
 
 |  |  | 
 |  | | 5.9, Аноним (-), 09:38, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  | > Про WHDD знаю и использую. Но она тут ни причем. Все же > больше для диагностики.
 В некоторых случаях - и для вычитки бывает полезна, если диск тупит и кернел постоянно пытается его ресетнуть - чем делает только хуже. Эта штука писана кем-то практикующим DataRecovery, по образу и подобию Виктории. Откуда и такое вот умение. Чем и интересно.
 >> Но вообще реинециализацию девайсов без острой нужды лучше не делать, если
>> служебка не прочтется девайс может не выйти на режим - и гудбай, тогда с него вообще
 >> нифига не прочитать уже.
 > Данный скрит только для SSD о чем написал в самом начале. С
 > ними нет такой проблемы как что то читалось, а затем перестанет
 > читаться. Все стабильно.
 Ну это да, для SSD - причин к такому раскладу сильно меньше.
 > Для неисправных жестких дисков такой метод и не поможет скорее всего. Диск 
> не остановится и нужно будет пере-подключать питание.
 Я пару раз делал ремотно вон то - там не вариант, пришлось выкручиваться ресетами и ресканами если девайс уходил в себя насовсем.
 |  |  | 
 |  | | 6.13, gumanzoy (?), 11:26, 30/11/2023 [^] [^^] [^^^] [ответить] | +1 +/– |  |  > если диск тупит и кернел постоянно пытается его ресетнуть - чем делает только хуже. А не пробовали увеличивать /sys/block/sdb/device/timeout ? По умолчанию 30. Я наоборот уменьшаю для моих случаев.
 |  |  | 
 |  | | 7.14, gumanzoy (?), 12:07, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  |  Блин. Выставил 200 оказалось что лучше дело пошло. Без лишних hard resetting link Тогда нужно скрипт чуть поправить
 if [ -n "$1" ] && [ "$1" = "-act" ]; then
if [ -n "$2" ] && [ "$2" -gt 0 -a "$2" -lt 30 ]; then
 ATACMDT="$2"; shift; shift; fi
 fi
 Убрать ограничение -a "$2" -lt 30
 if [ -n "$1" ] && [ "$1" = "-act" ]; then
if [ -n "$2" ] && [ "$2" -gt 0 ]; then
 ATACMDT="$2"; shift; shift; fi
 fi
 
 |  |  | 
 | 7.16, Аноним (-), 23:56, 30/11/2023 [^] [^^] [^^^] [ответить] | +1 +/– |  | >> если диск тупит и кернел постоянно пытается его ресетнуть - чем делает только хуже. > А не пробовали увеличивать /sys/block/sdb/device/timeout ? По умолчанию 30.
 > Я наоборот уменьшаю для моих случаев.
 В ряде случаев это может сработать. Суть проблемы:
1) Кернел кидает команду.
 2) Девайс испытывает проблемы, скажем нечитаемый сектор, и надолго задумывается, пытаясь retry дофига раз или что там еще, кто ж его фирмвару знает что она там делает внутрях столько.
 3) Кернел начинает истерить, ресетя девайс.
 4) Поскольку интерфейс рюхается тоже фирмрварью (сюрприз!) это может иметь не совсем тот эффект и зачастую ведет к "рассинхрону".
 5) Кернел пытается в ресет и рескан.
 6) фирмвар все еще занят командой из 1) - и ему все эти потуги похрен.
 7) Кернел теряет девайс, recovery failed.
 А если таки погодить энное время и пнуть рескан, девайс зачастую сам выходит из комы. Скан его находит, рескан блочного девайса возвращает размер.
 |  |  | 
 |  | | 8.17, Аноним (-), 00:02, 01/12/2023 [^] [^^] [^^^] [ответить] | +1 +/– |  | А, главное забыл  при чтении через SCSI команды вся эта чудная логика ядра - не ... текст свёрнут, показать |  |  | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 
 | 1.8, gumanzoy (?), 09:22, 30/11/2023  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Вот пример работы скрпита и выхлоп 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
 
 |  |  | 
 
|  | | 2.10, Аноним (-), 10:49, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  | > 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 надо заменить на актуальные.
 
 |  |  | 
 |  | | 3.11, gumanzoy (?), 10:57, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  |  Вы почти пересказали то что делает мой скрипт. Но я сначала удаляет echo 1 > /sys/block/sdb/device/delete
Затем echo '0 0 0' > /sys/class/scsi_host/host1/scan
 А пути по которым писать в /sys получает из /sys/class/ata_port/ataN по номеру SATA порта.
 |  |  | 
 | 3.12, gumanzoy (?), 11:01, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  |  > Если девайс со временем вышел из комы сам то может катить что-то Нет сам не оживает. В примере он ожил как раз из за удаления и повторного сканирования хоста скрпитом.
 |  |  | 
 |  | | 4.18, Аноним (-), 00:08, 01/12/2023 [^] [^^] [^^^] [ответить] | +1 +/– |  | >> Если девайс со временем вышел из комы сам то может катить что-то > Нет сам не оживает. В примере он ожил как раз из за
 > удаления и повторного сканирования хоста скрпитом.
 Про оживание девайса я насчет фирмварного уровня имел в виду. Кернел сам это не прочухает без таких пинков - вон то по сути десинк протокольной логики, когда фимвар долго жует команду, с пофигом на все, а кернел пытается истерить и в результате потуг делает еще хуже и вообще теряет девайс - который не отвечает на все эти потуги. Ибо фирмвар все еще жует вон ту команду.
 Я просто заметил что через несколько минут девайс таки зачастую попускает, видимо команда таки таймаутится и вот тут уже рескан все возвращает в виде как надо, кернел радостно находит девайс.... но вообще это все и показывает зачем надо режим чтения через SCSI команды. Чтобы с обычной логикой кернела в IO поменьше общаться. Если девайс битый, она - таки "не очень", особенно в дефолтном виде.
 А передерг девайса кернелом таки часто не срабатывает если девайс задумался и ведет к протокольному десинку с потерей девайса. Другое дело что у кернела и выбора так то не сильно много что делать с "зависшим" девайсом.
 |  |  | 
 | 
 | 
 | 2.15, gumanzoy (?), 17:31, 30/11/2023 [^] [^^] [^^^] [ответить] | +/– |  |  Продолжаю. Перезапустил с размером сектора 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
 |  |  | 
 |  | | 3.19, Аноним (-), 00:16, 01/12/2023 [^] [^^] [^^^] [ответить] | +/– |  | > Продолжаю. Перезапустил с размером сектора 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 в целом. И накодить такое не сильно долго.
 В любом случае, удачи в рекавери. Поклацав по вашему профайлу и посмотрев новость про открытие некоей проги - я там и в профайле гитхаба автора нашел интереснейших ссылей. За что и спасибо.
 |  |  | 
 |  | | 4.20, gumanzoy (?), 00:52, 01/12/2023 [^] [^^] [^^^] [ответить] | +/– |  |  > В любом случае, удачи в рекавери. Поклацав по вашему профайлу и посмотрев новость про открытие некоей проги - я там и в профайле гитхаба автора нашел интереснейших ссылей. За что и спасибо. Про 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
 |  |  | 
 |  | | 5.24, Аноним (24), 15:00, 04/12/2023 [^] [^^] [^^^] [ответить] | +/– |  | > Про hddsuperclone и форк opensuperclone ? Да, там в профайле гитхаба его автора нашлось немало забавных артефактов. Например какой-то "типа сервистул" для alcor чтоли. Я питаю определенную слабость к таким артефактам.
 > Для жестких дисков некоторых Passthrough auto detect был быстрее чем ddrescue 
 Я поймал себя на том что часто юзал MyRescue. А пару раз даже корябал утилитки под местные нужды. Скажем какой-то SD карте я по приколу вправил транслятор переписав всю площадь несколькими паттернами несколько раз. До сих пор пашет. Но памятуя о слете транслятора - выдергивать ЭТО на ходу ессно ненене, уже проверено кем-то что голимая идея :). А мне было интересно проверить теорию перестроится ли трансляция если несколько раз проехать по всей площади. Вроде прокатило.
 > Для SSD последнее время сколько ни пробовал - они отваливаются в Passthrough
> auto detect режиме Причем или на окне выбора источника все зависает либо если
 > удалось выбрать то уже в процессе Этот GUI дурацкий каждый раз все заново тыкать
 > выбирать. SSD все восстанавливаю ddrescue
 Если честно я вообще не особый фанат GUI для подобных вещей, текстовые штуки проще при случае немного скриптануть под какие-то странные причуды и проч. Которых в таких случаях разумеется можно отхватить.
 А кстати не знаете? Я как-то WDшник вбил в safe mode по заполнению дефект листа, он при таком зарубает все кроме 1-секторного чтения. Интересно линухкернел/libata реально заставить такое жрать? Ему можно мультисекторный DMA READ запретить? Я правда доигрался уже когда образа нормально отстроил и пытался в перфекционизм, минимищацию урона, так что на рекавери не повлияло, но интересно стало.
 |  |  | 
 |  | | 6.26, gumanzoy (?), 07:54, 05/12/2023 [^] [^^] [^^^] [ответить] | +/– |  |  > А кстати не знаете? Я как-то 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 тогда будет по одному сектору читать.
 |  |  | 
 | 
 | 
 | 4.21, gumanzoy (?), 11:20, 01/12/2023 [^] [^^] [^^^] [ответить] | +/– |  |  > Я разок смухлевал выччитав 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
 
 |  |  | 
 | 
 | 
 | 
 
 | 1.22, Kuromi (ok), 01:42, 03/12/2023  [ответить] [﹢﹢﹢] [ · · · ] | +/– |  |  Все это здорово, но мне попадались материнки (причем не древние) у которых не было Hot Swap вообще. Может он и есть, но в UEFI\BIOS настройки нет. Почему - непонятно, возможно производители считают что это никому не нужно. 
 |  |  | 
 
|  | | 2.23, gumanzoy (?), 10:20, 03/12/2023 [^] [^^] [^^^] [ответить] | +/– |  |  Какой чипсет ? Вообще на старых чипсетах они и без Hot Swap работает. На современных нужно включать.
 |  |  | 
 |  | | 3.25, Аноним (24), 15:04, 04/12/2023 [^] [^^] [^^^] [ответить] | +/– |  | > Какой чипсет ? Вообще на старых чипсетах они и без Hot Swap работает. > На современных нужно включать.
 Может от контроллера зависит? Линух зачастую довольно брутально реинициализирует многие чипы, вплоть до того что в BIOS как IDE mode, но кернел видит кто это, переключает в AHCI - и работает с ним как обычно с AHCI, клав на эти настройки bios.
 Но это все - не всегда. Некоторые чипы так не умеет. И видит как, реально, IDE в таком случае. Я так понимаю степень реинициализации чипа после системного фирмваре - "варьируется".
 |  |  | 
 | 3.27, n80 (?), 00:25, 07/12/2023 [^] [^^] [^^^] [ответить] | +/– |  | Тут не в чипсете дело, а в дурном BIOS. Например, Dell на своих фирменных десктопах таким грешит, обидно было. 
 |  |  | 
 | 
 | 
 
 
 
 
 |