LINUX.ORG.RU
ФорумAdmin

Какие в Линуксе есть средства поиска/ремапа бэдов на винтах?

 , ,


3

6

Надеюсь здесь найдётся пруфлинк с описанием этой операции.
Можно конечно качнуть флэшку с виндой и Викторией. Но неужели это не исполнимо в Линукс? Или местные адепты начну топырить пальцы: «Если на винте попался бэд - ф памойку такой винт»?

P.S. Резюмирую, после пальцетопырчатого срача от «крутых» пацанов, благодаря комментариям порядочных гуру - решил проблему просто:

Для начала собрал список «битых» файлов:

find ./ -type f -exec cat '{}' \; |pv|dd of=/dev/null

Список файлов получил на консоль и скопировал в лог, выделив и скопипастив.
Предлагаю попробовать другой вариант:
find ./ -type f -exec cat '{}' \; >/dev/null 2>Errors.log

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

Далее сделал список плохих секторов командой:
badblocks -o badblocks.log /dev/sdX

В этом файле - плохие блоки были сериями. Для каждой серии сначала проверил:
badblocks -o 01set.log /dev/sdX <LastBlock> <FirstBlock>

Получал список блоков этого диапазона.
Далее затирал эти блоки нулями:
badblocks -f -w /dev/sdX <LastBlock> <FirstBlock>

Снова проверял:
badblocks -o 01set.log /dev/sdX <LastBlock> <FirstBlock>
Получал пустой список - т.е. блоки исправились.

Теперь запустил:
smartctl -t long и по его результатам допишу.

НИКАКОГО РЕМАПА! Просто перезаписал данные в нечитаемые сектора!
Ну и опять прогоню рекурсивное чтение файлов, данные конечно неправильные, но ошибок быть не должно.
И на этом диске zfs, посмотрю что скажет: zpool scrub

P.P.S. Результаты -t long:
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       40%     39752         3352487288

Проверяем:
badblocks -o 07-sdd-badblocks.log /dev/sdd 3352488289 3352487288

Но! Факир был пьян! SMART и BADBLOCKS видимо оперируют разными размерами сектора!
# badblocks -o 07-sdd-badblocks.log /dev/sdd 3352488289 3352487288
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek

Придётся повторить badblocks и посмотреть его видение!

★★★

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

WHDD?

Спасибо, но с ходу собрать не удалось.

badblocks hdparm

Спасибо, но я пока не владею математикой по вычислению и затиранию найденных секторов.

Буду курить обе темы.

Думаю для начала нужен просто инструмент перезаписывающий диск. Тупо - все сектора, прочитал-записал. А то таки запустил Оффтопичную Викторию - сыпет номерами секторов с задержками 200-2500мс. Их бы просто прочитать и перезаписать для начала.

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

smartctl –test=long

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

n0mad ★★★
() автор топика

А может кто подскажет «заклинания» или ссылку на хауту - позволящее просто рекурсивно читать всё содержимое fs и вести журнал с ошибками чтения?
Конечно как факт - на zfs можно просто всё прочитать и ошибки она покажет у себя в журнале. Сейчас там фигурирует 1 файл.

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

Спасибо, но я пока не владею математикой по вычислению и затиранию найденных секторов.

Не надо ничего вычислять. badblocks -o journal.txt ... найдет сектора, badblocks -w ... их затрет.

Думаю для начала нужен просто инструмент перезаписывающий диск. Тупо - все сектора, прочитал-записал.

badblocks -n

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

Конечно как факт - на zfs можно просто всё прочитать и ошибки она покажет у себя в журнале. Сейчас там фигурирует 1 файл.

Можно спросить у ФС сектора этого файла и сократить время чтения до минимума.

anonymous
()

Ремапом уже лет дцать занимается только сам контроллер диска. Ни у одной программы нет прямого доступа к головам диска. Ремапы может делать только прошивка жесткого диска.

То, что вы именуете «ремап» - всего лишь попытка записи в плохо читаемые сектора. Так что можете просто прогнать запись на диск нулями обычной dd-шкой. Всё, что не запишется - контроллер сам пометит как сбойный сектор.

И да - фпомойку =)

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

Есть ddrescue чтобы многократно читать плохо читаемые сектора.

Есть badblocks который много чего умеет. Читайте опции, там есть и для вывода прогресса, а то без прогресса когда оно крутится полдня и непонятно то ли почти готово, то ли только начало - как-то уныло. Например есть тест который малодеструктивный - читает блок, перезаписывает несколько раз и пишет данные обратно. При сбое питания теряешь только один блок.

Есть shred который просто позволяет многократно перезаписывать что угодно. Он конечно не для этого, но тоже годится.

Есть hdparm который позволяет отключить кэширование. И свой тест встроенный имеет, но я им не умею пользоваться.

Ещё есть интересная утилита nvme которая позволяет больше всяких штук чем smartctl в случае NVMe накопителей.

Есть утилита blockdev которая позволяет посмотреть некоторые опции и сбросить кэши.

Ещё полезен виртуальный файл /proc/sys/vm/drop_caches

Есть pv который как cat, но с полоской прогресса. Я обычно им и пользуюсь. Параметрами вроде pv -Ss 1256M /dev/zero > /dev/foo задаёшь размер всего устройства. Я пользуюсь такой штукой для проверки флешек и SSD размером больше оперативной памяти компьютера:

fdisk -l /dev/foo 

## посмотреть размер в байтах, для удобства поделить на 1024² чтобы узнать размер в мебибайтах, если он ровный, дальше им и пользоваться, но можно и просто копировать размер в байтах.

pv -Ss 125000M /dev/urandom | tee /dev/foo | md5sum ; time sync

## Если накопитель внешний, передёрнуть, если внутренний, сбросить кэши

pv /dev/foo | md5sum ; echo d41d8cd98f00b204e9800998ecf8427e

## В конце подставляешь md5 от того что получилось, чтобы в выводе удобно было одна строка под другой и сравниваешь.

blkdiscard /dev/foo

## Чтобы потом очистить SSD можно использовать эту команду. Опасная штука, но зато в отличии от полной перезаписи нулями изнашивает диск меньше и действует мгновенно.

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

Ну и наконец есть dd с опциями вроде conv=fsync которые позволяют дожидаться физической записи блока прежде чем идти за следующим. А то pv как в предыдущем примере может мгновенно прокрутиться, а потом жди пока светодиод накопителя мигает без индикации прогресса. И кстати у pv есть опция -L для ограничения скорости потока данных.

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

badblocks: Это утилита, которая может сканировать диск на наличие бэд-секторов. Она может работать в режиме только чтения или в режиме записи, чтобы попытаться выявить и пометить поврежденные

fsck: Эта утилита используется для проверки и исправления файловых систем. Она может обнаруживать и помечать бэд-секторы на диске. Используйте её с параметром -c, чтобы проверить наличие бэд-секторов

smartctl: Это часть пакета smartmontools, который позволяет получать информацию о состоянии жесткого диска и выполнять тесты. ddrescue: Это утилита для восстановления данных, которая может помочь в случае, если диск имеет бэд-секторы. Она пытается скопировать данные с поврежденного диска на другой носитель, пропуская бэд-секторы

GSmartControl: Это графический интерфейс для smartctl, который позволяет удобно просматривать информацию о состоянии диска и выполнять тесты.

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

Спасибо, но я пока не владею математикой по вычислению и затиранию найденных секторов.

Не надо ничего вычислять. badblocks -o journal.txt ... найдет сектора, badblocks -w ... их затрет.

СПАСИБО, о Гуру! Кратко и ёмко. А то тут троллям лишь кактусы видятся и zfs поперёк горла стоит.

Думаю для начала нужен просто инструмент перезаписывающий диск. Тупо - все сектора, прочитал-записал.

badblocks -n

Спасибо, а то «non destructive» я понял как read-only.

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

Конечно как факт - на zfs можно просто всё прочитать и ошибки она покажет у себя в журнале. Сейчас там фигурирует 1 файл.

Можно спросить у ФС сектора этого файла и сократить время чтения до минимума.

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

find . -type f -exec dd if='{}' of=/dev/null \;

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

Ремапом уже лет дцать занимается только сам контроллер диска. Ни у одной программы нет прямого доступа к головам диска. Ремапы может делать только прошивка жесткого диска.

Вот это я и называю «крючкотворство». Я прекрасно понимаю что «ремап», сторонние программы делают не сами, но они создают условия для того чтобы контроллер сделал этот ремап, и кстати разные условия. Одни «ремапят» пока диск не загнётся, а другие - вызывают какие то другие механизмы поведения прошивки и всё решается «влёт».

То, что вы именуете «ремап» - всего лишь попытка записи в плохо читаемые сектора. Так что можете просто прогнать запись на диск нулями обычной dd-шкой. Всё, что не запишется - контроллер сам пометит как сбойный сектор.

Мне совершенно не хочется затирать нулями 3Т данных. Почтенный гуру, уже сказал по делу: «badblocks», она может и сканить и писать адресно. Впрочем у меня родилась другая мысль. Тупо рекурсивно прочитать и по идее всё что не прочитается - zfs пометит бэдами. Вынести бэды в отдельный подкаталог и восстановить эти файлы из бэкапа.

И да - фпомойку =)

Обязательно, когда появятся деньги на новый винт. Жалко Тошибку... Верой и правдой служила 5.5 лет онлайна.

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

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

Спасибо за мануал, чётко всё в одном месте, а для флешек, в том же Debian - есть f3

f3/stable,now 8.0-2 amd64 [установлен]
  test real flash memory capacity

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

badblocks: Это утилита, которая может сканировать диск на наличие бэд-секторов. Она может работать в режиме только чтения или в режиме записи, чтобы попытаться выявить и пометить поврежденные
fsck: Эта утилита используется для проверки и исправления файловых систем. Она может обнаруживать и помечать бэд-секторы на диске. Используйте её с параметром -c, чтобы проверить наличие бэд-секторов
smartctl: Это часть пакета smartmontools, который позволяет получать информацию о состоянии жесткого диска и выполнять тесты. ddrescue: Это утилита для восстановления данных, которая может помочь в случае, если диск имеет бэд-секторы. Она пытается скопировать данные с поврежденного диска на другой носитель, пропуская бэд-секторы
GSmartControl: Это графический интерфейс для smartctl, который позволяет удобно просматривать информацию о состоянии диска и выполнять тесты.

Спасибо за пост по делу. Вот всей этой фигнёй и буду заниматься, а сам пока скопировал основную часть данных на USB3 винты и буду «ютиться на МикроПК, пока десктоп со своей sata - жуёт диски... Хотя по началу копировал эти данные для того чтобы выключить гудящий и „жрущий не в себя“ электричество, десктоп.
Всякие Виктории,HDD Regeneratorы и всякая другая „ересь“, увы - из 3Т видят только 746Гб. У меня эти загрузочные флешки, есть лишь времен ~2010 года.

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

система не важна - попробуй HDAT2

Спасибо за «заклинание», с неё и начну - её домашняя страничка, мартовской свежести. Но в плане «системы» - нужно знать и инструментарий, который есть в системе.

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

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

Ну почему? Можно ещё начать «религиозную войну», когда у всех в общем то одна и та же точка зрения, но: «Есть ньюансы».
Может ты просто не знаешь какой нибудь секретный нормативный документ - предписывающий регулярное обновление записи на магнитном носителе?
По факту, при перезаписи, может не потребоваться ни какого ремапа, просто данные обновятся и всё! Увы, намагниченность теряется, хотя как бы сам диск - это экранирующий корпус, но даже если его положить лет на 10 в стальной сейф - то через 10 лет, часть данных - запросто может не считаться.
И думаю если «погуглить», на эту тему есть уже масса споров с противоположными аргументами.

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

для порнухи сойдёт

Да в общем то всё скачанное с интернета - «порнуха», вон про того же «Дебиана», регулярно выходят новые серии... И в каждой - свой главный герой. У меня в общем то на этом диске и лежит подтом :DL в который я и скачиваю всё подряд... В данном случае побился какой то исошник с виндой... Редкая серия...

n0mad ★★★
() автор топика

блоки помечаются для файловой системы для ext4 как-то так делал

https://vhernando.github.io/badblocks-e2fsck-scan-harddisk-howto

находим: $ sudo badblocks -b 4096 -n -o sda1_badblocks_4096 -s -v /dev/sda1 976754384 11481408

добавляем: $ sudo e2fsck -l sda1_badblocks_4096 -t -v /dev/sda1

посмотреть таблицу: sudo dumpe2fs -b /dev/sda1

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

Можно конечно качнуть флэшку с виндой и Викторией

Victoria может работать вне Windows. Есть специальный загрузочный образ — vcr35cd.

Вы давно пробовали Викторию без Винды? Уверяю - она далеко не всегда видит ваши диски. Со времён её выпуска - существенно обновились контроллеры на материнках. У меня она видит лишь Primary Master. Виндовая версия - к диску обращается через систему. Но, и виндовая видит лишь 760Гб из 3Т диска.

Благо тут в теме порекомендовали HDAT2, зашел на страничку, обновлялась в марте (страничка), но ещё не скачивал и не запускал.

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

У автора темы терабайты неких бесценных воспоминаний (вероятно, видео, фото), тут на расходниках экономить не стоит.

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

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

Какие в Линуксе есть средства поиска/ремапа бэдов на винтах?

Почти в каждом Линуксе, кроме серверных версий, есть браузер, в котором можно заказать новый винт.

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

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

а для флешек, в том же Debian - есть f3

Я как-то больше доверяю тому что делаю сам. То есть тут чётко вижу, записалось столько-то рандомных байт (то есть несжимаемых! По идее хитрый контоллер может сжать данные и сохранить на показываемую ёмкость, хотя вряд ли китайцы заморочатся настолько), а потом прочиталось столько же и контрольная сумма сошлась. А в какой-то утилите, badblocks или f3 — я уже не имею настолько чёткого представления, что происходит, пока не почитаю исходники. Набрать команду будет проще.

Про dd status=progress забыл упомянуть, да, но я про него знал.

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

а для флешек, в том же Debian - есть f3

Я как-то больше доверяю тому что делаю сам. То есть тут чётко вижу, записалось столько-то рандомных байт (то есть несжимаемых! По идее хитрый контоллер может сжать данные и сохранить на показываемую ёмкость, хотя вряд ли китайцы заморочатся настолько), а потом прочиталось столько же и контрольная сумма сошлась. А в какой-то утилите, badblocks или f3 — я уже не имею настолько чёткого представления, что происходит, пока не почитаю исходники. Набрать команду будет проще.

f3 позволяет разные алгоритмы. Может просто - Делить флешку на 2 и записывать данные. Зачем читать и сравнивать. Если всё в порядке, то пишет в /2+/4 и так математически идёт по всей флешке. Но нынешние «умные» флешки (в варианте фейк ССД) умеют обманывать, и подставлять начало в середину, посекторно. (Попадалась фейкссд, которая его проходила, она была на 128Gb но не вначале, а расходовала их по мере записи и в начало и в конец устройства. Вот когда исчерпывались все 128Gb - Дальше читались лишь нули. Но f3write/f3read - вывели её на чистую воду)
Впрочем для полного прогона - запускается f3write и пишет 1G файлы, до исчерпания места. Не пустые файлы, а случайные, с CRC. Как исчерпается место - запускаешь f3read, он читает все эти файлы и сверяет контрольные суммы.

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

Не пустые файлы, а случайные, с CRC

Вот! А чем мой вариант хуже? Там ещё и не CRC. а md5, более надёжно, вряд ли в контроллере есть подделка md5, но можно sha256 взять если сомнения.

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

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

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

Ну почему?

Ну, потому что он неисправен.

По факту, при перезаписи, может не потребоваться ни какого ремапа, просто данные обновятся и всё!

Может. Или не может. Попробовать можно, но всё равно диск уже сомнительный.

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

Не пустые файлы, а случайные, с CRC

Вот! А чем мой вариант хуже? Там ещё и не CRC. а md5, более надёжно, вряд ли в контроллере есть подделка md5, но можно sha256 взять если сомнения.

Тот вариант включается командой: #apt install f3, и есть мануал. Ваш вариант требует больших навыков, хотя конечно считать urandom на лету - идея интересная.

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

Не думаю что это настолько критично.

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

Спасибо, теперь на LOR есть подробный мануал, как нибудь попробую.

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

Думаю для начала нужен просто инструмент перезаписывающий диск

badblocks -w. Лучшее, из того, что придумано. Даже лучше, чем smartctl -t long потому, что ловит проблемы со шлейфами, разъёмами и контроллерами.

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

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

Да, у меня такое бывалос HDD. На флешках этот эффект ещё сильнее.

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

рекурсивно читать всё содержимое fs и вести журнал с ошибками чтения
find /mnt/foobar -type f -exec cat {} \; > /dev/null 2> error.log

Ты какие-то слишком простые вопросы задаёшь.

Я там чуть ниже поправился, но да. Я временами забываю то что давно и хорошо знаю.

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

Думаю для начала нужен просто инструмент перезаписывающий диск

badblocks -w.

Я думаю, в моём случае нужен badblocks -n, у меня нет столько свободного места, чтобы раскидывать то что есть.

Лучшее, из того, что придумано.

Возможно, пользовался, но забыл. Спасибо что напомнил.

Даже лучше, чем smartctl -t long потому, что ловит проблемы со шлейфами, разъёмами и контроллерами.

А вот с smartctl -t long я выпал в осадок.
Тест дошел до 50% и остановился, а в тех украденных сеотекстах про smartctl - говорится одно и то же под копирку, и нигде нет того как продолжить тест с 50% (Или точнее сектора после того места где остановился).
Пока запустил:
find ./ -type f -exec cat '{}' \; |pv|dd of=/dev/null
Он читает всё и пихает через pv и dd в пустоту, показывая прогресс. За 1:10 пропихнул 246Gb, часам к 7 оттарахтится, а
zpool status -v пополнит:

  pool: T3T1S
 state: DEGRADED
status: One or more devices has experienced an error resulting in data
	corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
	entire pool from backup.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
  scan: scrub repaired 0B in 09:40:37 with 0 errors on Sun Feb  9 10:04:43 2025
config:

	NAME        STATE     READ WRITE CKSUM
	T3T1S       DEGRADED     0     0     0
	  sdd3      DEGRADED     0     0     0  too many errors

errors: Permanent errors have been detected in the following files:

        /zfs/=T3T1S/:DL/0C0py/_MultiSystemCDDVD/ISO/LiveCD&USB/Multiboot-Flash/Multiboot Flash Filth Edition 2013 + UEFI 7.0 Final 32 Гб/Multiboot Flash Filth Edition 2013.GHO

Пока только один древний имидж, скачанный 11 лет назад.
Как раз посмотрю когда пополнятся остальные ошибки, в момент рсинка или после scrub после этого рсинка. Сначала надо найти все файлы попавшие на бэды.

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

И да - фпомойку =)

Остальное было излишним))

Чуваки, я раз за то что у вас всё так хорошо, что вы легко можете купить новый диск, а битый выкинуть в помойку. На инвалидную пенсию, это гораздо сложнее себе позволить. Мне, увы, пока придётся использовать и его. Сначал выяснив что побилось и вынеся что то критичное на другие диски, радует что он у меня не единственный. Иногда удаётся куда то устроиться и получить больший доход. Но увы, знают что принимают инвалида, а требования как к здоровым, а нагрузку здорового - я не тяну.

n0mad ★★★
() автор топика