LINUX.ORG.RU

Ремап битых секторов

 ,


2

3

Привет.

На жестком диске имеются битые сектора. Диск крутится на debian и управляется по сети. smart в bad, whdd показал сектора с долгим откликом и полным отсутствием отклика.

Какими утилитами через ssh можно сделать ремап секторов? Желательно с графикой.

Перемещено hobbit из general

Диск делает ремап, если ты записываешь что-то в bad (количество известных неремапнутых bad показывается в смарте в «current pending sectors»). Насчёт ручного ремапа секторов, которые ещё не bad - это наверно можно только хакерствуя с прошивкой сделать и вероятно зависит от производителя или даже модели диска.

Если тебе нужно обезопасить ОС от использования плохих секторов - есть другой вариант, занять эти сектора специальным файлом (если только сектора не попадают на области которые не для файлов). Какие для этого есть утилиты не знаю.

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

Диск sata, надо думать? Они сами должны ремапить битые кластеры. Можно попробовать через

badblocks -n
подтолкнуть диск к ремапу.

Nightwing
()

Ну и конечно перед этим рекомендуется сделать бекап\снять образ диска. Есть некоторая вероятность, что от нагрузки диск отъедет насовсем.
И конечно стоит задуматься о замене диска

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

Какими утилитами через ssh можно сделать ремап секторов?

Тебе ремап делать скорее всего не надо, тебе надо найти битые сектора и сделать на них hdparm --write-sector - в нормальных условиях диск ремап сделает сам.

Как найти нужные номера, есть ли на них файлы и что делать с файловой системой - нагуглишь сам, на лоре вроде нет статей. Начать можешь с Bad block HOWTO for smartmontools от Bruce Allen.

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

hdparm --write-sector

Человек просит гуёвую утилиту, то есть можно предположить что он не очень опытный.
А --write-sector'ом без опыта можно легко похерить данные (об этом прям в man'е пишут), и его вообще лучше не использовать на диск, на котором есть что-то нужное.

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

ext4 Диск sata. Что с fsck, что с badblocks не запускается в связи с использованием диска в системе, диск отмонтирован. Система debian с медиа инструментами со своим демоном, возможно он и держит диск в себе. Выкорчевывать из него диск много дел, проще даже может с live загрузиться…

Ситуация с диском, что по смарту 100 битых секторов, смарт в красном из за параметра 187 Reported_Uncorrect, хотел попробовать исправить и перепроверить смарт. Раз вы утверждаете, что диск сам переназначит секторы, тогда почему whdd не смог обратиться в 40 секторов?

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

Что с fsck, что с badblocks не запускается в связи с использованием диска в системе, диск отмонтирован.

Так не бывает, либо используется, либо отмонтирован. Если это системный раздел, то проще грузануться с лайв флэшки.

Раз вы утверждаете, что диск сам переназначит секторы, тогда почему whdd не смог обратиться в 40 секторов?

Это не я утверждал. Данной командой я ремапил сектора у себя, сработало.

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

100 битых секторов

Это дофига. Выводи диск из работы и заменяй. Данные-то важные?

Проблема с бедблоками в том, что они не исправятся до тех пор, пока в них не запишут. А записать что-то может только пользователь. чтобы ПЕРЕзаписать надо сначала считать, а считать не получается.

Честно говоря, хорошего инструмента (ни гуёвого ни текстового), чтобы сделать «найди мне все бедблоки и исправь, не потеряв данные и не развалив файловую систему» - нет.

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

Данные не особо важные, диск планирую до конца использовать. Лишним не будет немного набить руку на ваших советах.

Загрузился из под rescue делаю badblocks -n /dev/sda1, наверное до завтра будет крутить. e2fsck -f -y -v -C 0 /dev/sda1 прогнался за пару секунд и ничего не выявил.

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

через ssh можно сделать ремап секторов? Желательно с графикой.

Да вы затейник, графику по ssh :)

e2fsck -f -y -v -C 0 /dev/sda1 прогнался за пару секунд

Странно, точно из под rescue имена не сменились и /dev/sda1 нужный раздел?

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

Проблема с бедблоками в том, что они не исправятся до тех пор, пока в них не запишут. А записать что-то может только пользователь. чтобы ПЕРЕзаписать надо сначала считать

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

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=номер_сектора

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

На 700 гб делаю 8ой час badblocks -n. Какие то блоки/секторы он выводит. Это только подсвечивает сбойные или сразу переназначает? Что делать после полученных данных?

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

Именно поэтому лично я не стал рекомендовать badblocks -n. Он не переназваначет, т.к. не осмелится записать блок, который не сумел считать. Надеюсь, ты сказал ему вести лог или не забудешь скопировать номера секторов из терминала, а то работа будет зряшая.

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

Затем ты можешь перезаписать сектора через dd как советуют выше, но надо не ошибиться с номером сектора, Емнип, badblocks и большинство фс используют 4096-байтные сектора, а вот смещения в сообщениях об ошибка в dmesg, кажется, для 512ых секторов, тут надо быть внимательным. И ещё надо не запутаться, где начало тома и где начало диска и от чего надо отсчитывать.

Я оттого и не люблю этим заниматься, а предпочитаю по возможности делать dd_rescue снимок диска, а уж потом badblocks -w его в своё удовольствие. Но для этого надо иметь место.

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

Выписал 24 сектора из лога badblocks.

Пострадавших файлов кажется нет, а если и есть не страшно, это фильмы которые перекачаю.

Для справки, через dd сделаю сектор с zero, почему в последствии на него ничего не запишется и после форматирования сектор вновь будет доступен к записи?

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

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

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

ФС и badblocks использует блоки, а не сектора. ФС по умолчанию 4096 байт, а badblocks 1024 байта. А главное, они показывают адреса блока того блочного устройства, на котором запущены. То есть, если badblocks запускали для /dev/sda1, то адрес блока будет от начала раздела. А в dmesg адрес сектора (LBA) от начала диска, а не раздела. Но, только ядро обычно читает по 16 секторов, и ошибка чтения любого даст ошибку dmesg (ЕМНИП) и диск может быть с аппаратными 4 кБ секторами.

А, то что ТС пишет, что запускает badblocks на /dev/sda1, а ему совутуют dd на /dev/sda — видимо проверка на внимательность.

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

Делать zero, а самом деле, не всегда полезно (но и не вредно). Да, сектор от этого может ремапнуться, но:

1) если этот сектор сейчас не занят никаким файлом или служебными данными файловой системы - то он с тем же успехом ремапнется в тот момент, когда файловая система попытается записать на него файл; от того, что ты ещё раньше туда запишешь нули, мало что изменится

2) если сектор занят файлом, то после записи нулей кусок файла превратится в нули (причём выяснить, какой именно - отдельная задача), что ты потом с этим файлом будешь делать? иногда проще просто удалить этот файл (особенно если он небольшой и его легко заново установить/скачать), а после удаления файла мы переходим к варианту 1; но иногда действительно нужно сохранить уцелевшее, даже зная что часть файла утеряна - тогда да, можно что-то записывать

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

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

какой именно - отдельная задача

На всякий случай напишу, может кому пригодится The Sleuth Kit (TSK), там всякие ifind, istat. И Ссылка, где показывают, как LBA в номер блока пересчитывать. Ну и там ещё до кучи советуют перед dd if=/dev/zero пробовать dd if=/dev/ , чтобы точно проверить что именно этот сектор не читается...

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

ИМХО, ошиблись. Уменьшится не может, концепция realloc как раз подразумеват наличии резервной области и переназначение секторов из неё. Для обычного софта всё происходит относительно прозрачно и, главное, что ситуация не ухудшается, содержимое сектора пропало, но их не стало меньше. А если бы переназначение было из доступных софту секторов, так что размер стал меньше, то тогда получается, что после realloc ещё какой-то сектор стал софту недоступен.

Только низокуровневое форматирование, возможно с перепрошивкой, может изменить отображаемый в hdparm или /proc/partitions размер устройства.

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

что после realloc ещё какой-то сектор стал софту недоступен

А ещё GPT (которая разметка диска) после такого превращается в тыкву, т.к. у неё метаинформация пишется с энный блок с конца диска. Было бы очень неудобно, если бы нжмд так делали. Так что уменьшение объёма - это разве что удел китайских флешек.

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

Ну это с какой стороны посмотреть, кто у кого бекап. Дублирование это. Но при подрезке диска (на практике уменьшают тома под виртуалками) GPT надо чинить.

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

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

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

Так не бывает, либо используется, либо отмонтирован.

Есть способы такого добиться.

Виртуалка с калькулейтом, sda1 = / https://195.70.211.9/fls/real_sda1_calculate.png

Та же виртуалка, загрузились с лайв-образа, https://195.70.211.9/fls/calculate_initramfs_override_sda1.png sda1 имеет те же id и прочии параметры, но в нём уже /run/initramfs/live из образа смонтирован. Соответственно весь софт считает что реальный /dev/sda1 из образа виртуалки (а не live) «используется», но при этом он фактически не смонтирован.

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

Я наблюдал процесс умирания нескольких десятков дисков, итого: была конечно пара случаев, когда на диске высыпали 1-3 беда и дальше он работал годами (причем это были старые надежные до 1тб), но сотня - диск активно сыпется и надо срочно менять.

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

https://195.70.211.9/fls/mountinfo_for_kott.jpg

Ну и соответственно в / уже собрано то что с лайв-образа грузится по структуре, в хомяке вместо юзеров guest и т.п. Чтобы что-то сделать с реальным /dev/sda1 без загрузки системы (или при сломанной) в этой виртуалке сейчас используется minimal образ генты, а не установочный от самого калькулятора, т.к. он к обозначенным эффектам с захватом реального /dev/sda1 не приводит и ничего поверх него не создаёт при загрузке.

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

но сотня - диск активно сыпется

Лучше вы бы у ТС'а вывод smartctl запросили бы, а то тут вобще непойми что:

100 битых секторов, смарт в красном из за параметра 187 Reported_Uncorrect,

whdd не смог обратиться в 40 секторов

Выписал 24 сектора из лога badblocks.

В смарте bad на 5 Reallocated_Sector_Ct и 187 Reported_Uncorrect

То есть whdd нашёл 40 секторов, а badblocks только 24, причём неизвстно сколько из них стало realloc.

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

А записать что-то может только пользователь. чтобы ПЕРЕзаписать надо сначала считать, а считать не получается.

Справедливости ради: правильно сконфигурированный RAID это провернул бы на автопилоте, причём не только во время периодических проверок, но и во время работы. Не случай ТС, очевидно…

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

Да вы затейник, графику по ssh :)

ssh -X ещё никто не отменял)
ну или export DISPLAY=127.0.0.2:0.0(например) и поехали!
ну в sshd_config Xforward должно быть включено.

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

никто не отменял

Про вяленого не слышали?

и поехали!

И прихали, запускаем многочасовой тест через ssh -X, обрыв коннекта вашего ssh и всё, нет программулины, начинай с начала.

А так, ТС, наверное, хотел не GUI, а TUI (CUI), как у whdd.

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

Про вяленого не слышали?

XWayland или его тоже выпилили уже?
ну вообще эта история не для «домохозяек», а для ТП/Админов - поддерживать что-то самописное/корпоративное легаси на всяких солярках/чпуксах/Tru64 и т.п.
всё должно быть прописано в тех.процессах, куда как и зачем.

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

Согласен, однако на этой ВМ нет критичных сервисов и ПД. Для размещения скриншота публикация этого адреса не критична.

не соглашусь

enep ★★★★★
()

тебе никто не сказал самую правильную программу:

smartctl -t long и подождать сколько она напишет (работает и для НЖМД и для SATA ТТД). рекомендую раньше чем через 10 минут для НЖМД не проверять чокаво там.

ход можно проверять так smartctl -a |grep remain или так smartctl -l selftest

если диск не скопытился при этом и остались (появились) Current_Pending_Sector и прочие Offline_Uncorrectable - можно отполировать badblocks -w или -n
остальные параметры: -s -v -t0x0 -p1 - можно также ограничить область работы если заведомо известны проблемные сектора (в мане посмотришь как)

также имеет смысл -b 4096 поставить если диск не совсем конченный

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

у меня такое ощущение, что кое-кто никогда не видел табличек заводских и рабочих (эксплутационных) дефектов для SCSI диска ;-)
года с 2000 не бывает дисков совсем без дефектов, в силу природы вещей

mumpster ★★★★★
()
Последнее исправление: mumpster (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария