LINUX.ORG.RU
решено ФорумAdmin

Обновить винт из Linux, подскажите прогу читающую сектора и опять их записывающую.

 , , regenerate


1

3

Вернее даже не «починить», а тупо перезаписать уже существующую информацию. Неужели в Линукс так и нет инструмента для этой работы? Можно конечно с CD загрузить какой нибудь HDD Regenerator, но некошерно это. Хочется средствами Линукс.
Нагуглить не получилось, промпт не подобрал.

Суть в том что буквально вчера побилась некошерная XP на древнем Максторе в древнем системнике, но с DVD и FDD. Включается крайне редко, для специфических нужд, и выяснилось что ошибка чтения hdd.

Нагуглил свою же тему, поднимавшуюся тут, где расписал пошагово как восстановить, но восстанавливается тупой записью нулей в битые сектора.
Какие в Линуксе есть средства поиска/ремапа бэдов на винтах?

Помогает, но не хочется дожидаться когда информация «протухнет» и перезаписать её.

Просто тупо данные записываются в сектора и они «отживают».
И это не РЕМАП, не увеличивается Reallocated_Sectors_Count.

Неужели в Линукс нет такого инструментария? Может гуру скриптоплёты - придумают скрипт для подобной работы?

★★★

Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от superuser

Говорят в современных дисках - записуй не записуй, все равно получиш что записал, там внутри хитрая микросхема

т.е. перед операцией записи, она проверяет а отличаеся ли то что надо записать от того что уже записано?
тем не менее, записанные 0 - лечат бэд, без ремапа.
Идея в том чтобы записать то что уже записано.
Ну если там и правда, что то такое - есть, придётся перезаписывать в 2 прохода. ЗаXORить, и ещё раз заXOR-ить...

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

Зачем тебе восстанавливать древний maxtor? Точно не помню, но maxtor исчезли году так в 2008. И диск, ещё IDE, скорее всего.

Если ты думаешь про «заксорить», то данные тебе не нужны - купи новый диск. Возможно, даже IDE ещё где-нибудь найдёшь.

Только смысл в этом всём какой?

kostik87 ★★★★★
()

Слей всё с винта, залей туда нули или рандом, потом накати обратно.

Или badblocks -n натрави - оно прочтёт каждый блок и запишет его обратно не испортив ничего.

А вообще - купи переходник IDE->SATA за 200-300 рублей на алике или даже на озоне и поставь некошерную XP на любой новый SATA HDD/SSD

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

Вернее даже не «починить», а тупо перезаписать уже существующую информацию. Неужели в Линукс так и нет инструмента для этой работы?

Кто сказал dd ?

и выяснилось что ошибка чтения hdd.

Доктор сказал в морг, значит в морг.

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

Далеко не любой. Уже все забыли, что хрюшка в самом конце только научилась «128гб». А уж чтобы она умела устанавливаться на УСБ, ещё большая фантастика.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)
block_size=512*2048
pos=0
f=open(device,"r+b")
while (data:=f.read(block_size)):
  pos=f.tell()
  f.seek(pos-len(data))
  f.write(data)

но его надо корректировать.создавать через fallocate файл, на нем файловую систему и пробовать ее скриптом перезаписывать. мне с телефона не проверить

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

Зачем тебе восстанавливать древний maxtor? Точно не помню, но maxtor исчезли году так в 2008. И диск, ещё IDE, скорее всего.

Не хочу лезть в этот комп, и грузить не хочу. Может там и IDE.

Если ты думаешь про «заксорить», то данные тебе не нужны - купи новый диск. Возможно, даже IDE ещё где-нибудь найдёшь.

Тут уже все смеялись, я ща пишу с МикроПК и 4+4+1+2+1+1+1Т дисков на USB3. Но я маньяк, у мну есть даже Pentium 200 :) - живой, там 10Gb винт какой то и Debian Wheezy. И есть даже VIA C3 Epia в форм-факторе MicroITX.

Только смысл в этом всём какой?

Ну не получается у меня выкинуть ни один старый компьютер. Вон их 6 стоит, каждый готов к включению и работе. Хотя вот один P5 ноут - умер совсем, но и даже его не смог выкинуть. Валяется в деревне, надо как нибудь привезти и местным чинильщикам на запчасти пожертвовать, как минимум матрица там ещё жива.

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

Слей всё с винта, залей туда нули или рандом, потом накати обратно.

Это мне НЕ НАДО! Меня это интересует просто как решение. Когда будет - буду использовать.
Вообще есть мысли, если не найду решение - то буду изучать скриптописание. По идее есть же какое то API в Линукс, позволяющее в памяти сделать блочное устройство. Сделать 1Gb РамДиск и тупо через dd писать туда 1Gb секторов с диска, затем оттуда обратно на диск. Но тут главная засада - обработка ошибок, а то понапишется...

Или badblocks -n натрави - оно прочтёт каждый блок и запишет его обратно не испортив ничего.

[ЦЕНЗОРЕД!] Как меня моя бошка задолбала... Я же это ЗНАЮ, но «переклинило» что -n читает.
Как раз это искомая команда!

А вообще - купи переходник IDE->SATA за 200-300 рублей на алике или даже на озоне и поставь некошерную XP на любой новый SATA HDD/SSD

Да ладно, это не надо. У меня этих винтов, стотыщпяцот в столе валяется (если точнее в столе штук 12, и в компах понатыкано). Живые, а вот на Сигейты я обиделся. Умерло уже штуки 3 3Т Барракуды. Причём во время очередного рсинка помер и источник и резерв - куда рсинкался источник, а вот рейда тогда не было. Да и сейчас нет. Рейд в десктопе, стоит выключенным. Ну его - гудит и лопает 200Вт тока.

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

Вернее даже не «починить», а тупо перезаписать уже существующую информацию. Неужели в Линукс так и нет инструмента для этой работы?

Кто сказал dd ?

На самом деле #badblocks -n

и выяснилось что ошибка чтения hdd.

Доктор сказал в морг, значит в морг.

Не просекаешь, «Я ДОКТОР».

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

dd_rescue −A −d −D −b 512 /dev/sda /dev/sda
https://www.garloff.de/kurt/linux/ddrescue/dd_rescue.html
Unreadable blocks however will contain zeroes after this.

Спасибо за пруф! По мотивам сразу пошел в apt. В дистрибутиве есть myrescue, в котором упомянается dd_rescue.

Но нашлось то что искал: #badblocks -n

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

dd bs=1m iflag=direct oflag=direct conv=noerror if=/dev/sdx of=/dev/sdx прочитает и запишет блоками по 1MB. Только разделы с этого диска не должны быть смонтированы.

РЕСПЕКТ! Интересное решение.

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

ЕМНИП хрюшка просто не увидит пространство больше своего предела, а размер диска не имеет значения.

USB совершенно не причём при использовании IDE-SATA переходника.

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

arch wiki пишет:

A non-destructive read-write test makes a backup of the original content of a sector before testing with a single random pattern and then restoring the content from the backup.

И приводит пример выхлопа

# badblocks -nsv /dev/device

Checking for bad blocks in non-destructive read-write mode
From block 0 to 488386583
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

Testing with random pattern: done

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

На самом деле #badblocks -n

Ну если на то пошло, то и -w можно.

и выяснилось что ошибка чтения hdd.

Доктор сказал в морг, значит в морг.

Не просекаешь, «Я ДОКТОР».

И вы как доктор рекомендуете этой железке ещё потрудится?

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

-n Use non-destructive read-write mode.

Ну? Он читает, потом пишет несколько паттернов в этот сектор, если все запишутся нормально - только тогда возвращает данные взад.

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

Ну? Он читает, потом пишет несколько паттернов в этот сектор

Я имел в виду: прочитать, записать ОДИН тестовый паттерн, проверить и записать исходные данные назад.

а -t - что это по-твоему?

https://linuxcookbook.ru/articles/komanda-linux-badblocks
Пишет: "-t, test_pattern - Обеспечить шаблон теста только для чтения"

можно указать шаблонг принудительно череp -t

И что сделать с этим шаблоном? Сравнить прочитанное?

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

не читай всякую хурму, вот дословно из мана:

-t test_pattern
Specify a test pattern to be read (and written) to disk blocks.

доступно?

и да -я написал проверенное решение, я сам его проверял и именно это там остаётся в секторах если писать в другом режиме, без восстановления. например, можно задать -t «BadCafe.»

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

и да -я написал проверенное решение, я сам его проверял и именно это там остаётся в секторах если писать в другом режиме, без восстановления. например, можно задать -t «BadCafe.»

Спасибо. т.е. Если я сделаю badblocks -svn -t 0xAA /dev/sda - Он пропишет лишь AA во время теста и сохранит содержимое?

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

типа того.

ты ман вообще читал, не?

там вроде понятно всё написано

смысл ключа в том, чтобы, например, сразу попутно обнулить диск или bitwalk проверить, 0xaa55 типичный шаблон для этого

mumpster ★★★★★
()