LINUX.ORG.RU

badblocks - вопрос

 ,


0

2

Первое. На HDD перестала в момент видна одна партиция. R-Linux считал с нее все данные данные за исключением нескольких непонятных файлов. Отформатировал ее в ext4 (gparted делал 640gb достаточно долго).

Запускаю «badblocks -s» - сразу сыпятся ошибки в левой колонке. «badblocks -sw» - работаее 20мин(1%), ошибок нет. Не могли бы, уважаемые, разъяснить - как понимать сей факт?

Не знаю, сколько будет длиться процедура, но чтобы Вы посоветовали насчет эксплуатации этого диска в зависимости от того или иного результата?
P.S.У меня вполне определенные есть претензии к SATA кабелю или его контакту в разъеме, который обязательно поменяю.

Ну дак realloc так и работает. Если сектор не читается, то возвращается ошибка чтения, а если сектор не пишется, то пишется в другой, пока есть резерв и делается вид, что всё хорошо. Смотрите SMART, что там с realloc и pending sector.

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

realloc так и работает

Извините, «я не волшебник, я только учусь»(c). Вопрос был про badblocks - почему в режиме записи нет ошибок, а в режиме чтения есть?
Что значит ошибка при чтении? Логически, если вы не знаете, что там лежит, то это может быть только аппаратный сигнал о незавершенности команды или об ошибке, например четности, если она контролируется.
Режим записи это, когда выдана команда записи, а потом команда чтения для проверки? Если это так, то при чем тут «realloc»? Это от слова reallocate или real location? Если это просто проверка, то первый смысл «не катит», второй тоже явно притянут. Пожалуйста, уважайте и тех, кто не знаком с Вашей профессиональной лексикой. Вы сисадмин?

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

Вопрос был про badblocks - почему в режиме записи нет ошибок, а в режиме чтения есть?

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

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от valentin630

Вам прямо написано, что такое realloc:

если сектор не пишется, то пишется в другой, пока есть резерв

Вместо одного места (сектора) пишем в другое место, в резервную область. http://acronymsandslang.com/definition/7874212/realloc-meaning.html realloc == reallocate == re-allocate. Давайте ещё начнём выяснять, как правильно писать — слитно или через дефис.

Накопитель, пока есть место в резервной области, успешно завершает команду записи. Раз запись прошла успешно, то и чтение, скорее всего, пройдёт успешно.

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

Вы сейчас укатываетесь в технические нюансы, а потом заявите, что вас путают незнакомыми терминами. Накопитель получает команду поизвести чтение сектора (блока). В ответ на неё накопитель может либо вернуть данные, либо вернуть ошибку. Ошибку выполнения команды чтения. Неважно там, «аппартныей сигнал», ошибка контрольной суммы, не найденая сервометка сектора и т.д. Накопитель, как правило, проводит не одну попытку прочитать сектор, прежде чем вернёт ошибку, поэтому если сектор не прочитался с первой команды, он не прочитается и с последующих.

Режим записи это, когда выдана команда записи, а потом команда чтения для проверки?

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

Вы сисадмин?

Я инженер. И когда я общаюсь с токарем, фрезеровщиком, сварщиком и кучей людей других рабочих специальностей, я не требую, чтобы они исключили из речи свой «сленг».

Вы непонятно откуда вытащили команду badblocks и стали запускать её с непонятной целью. Сейчас на каждом углу написано что такое SMART применительно к НЖМД, и что начинать оценку состояния накопителя нужно с чтения/изучения параметров SMART.

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

Хотите сказать, что badblocks само исправляет партицию, и после нее не надо никакой e2fsck натравлять на партицию?
Да и как-то опция -w тогда, если Вы правы, теряет свой смысл?

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

Спасибо за подробный ответ, но хотелось бы понять суть, а суть это алгоритм и причинно-следственная связь.
1.Поиск в «man badblocks» по «real» выдает только: «and the device really isn’t mounted». Да и, честно говоря, кто читает man «от корки до корки». 2.Не верю, что железо диска при неудачной команде записи (которых, наверняка не одна есть), будет менять таблицы структуры диска.
3.«На каждом углу написано что такое SMART», но плохо, что не на каждом заборе, что пользоваться badblocks не стоит, да и поисковик первым делом выдает по запросу «битые сектора/блоки» методику их нахождения/лечения с помощью badblocks, а не smartctl.
4.Приветствуется не отсылание в «туда, не знаю куда», а конкретная инструкция или ссылка на нее - как это сделать. Именно на такую помощь я и надеюсь.

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

решаются аппаратные проблемы

В данном случае комплексное решение этой проблемы очень затратно. Пока я поменял только местами кабели. Перед этим диск перестал видиться совсем. Как результат, он опять виден, но без проблемной партиции, которая не монтируется, но badblocks работает. Но кабели я заказал, хотя барахлить могут и разъемы на МБ и диске.

Что я хотел знать? Правильно ли предположить, что партиция перестала читаться из-за плохого контакта, результатом чего стала неправильная с точки зрения железа запись, неисправимая порча информации суперблока. А при уже «нормальном» кабеле запись на низшем уровне проходит штатно, и информация считывается без ошибок. Т.е. физически диск не поврежден, и после соответствующей инициалицации и хорошем соединении будет исправно работать?

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

В данном случае комплексное решение этой проблемы очень затратно.

Нет.

Что я хотел знать? Правильно ли предположить, что партиция перестала читаться из-за плохого контакта, результатом чего стала неправильная с точки зрения железа запись, неисправимая порча информации суперблока.

Может быть всё, что угодно.

Если есть обоснованные подозрения на аппаратную неисправность, то надо не badblocks запускать, а аппаратную неисправность чинить. Потом уже fsck и пользоваться дальше.

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

НЖМД очень давно превратился в нечто, гораздо сложнее своего MFM-предка, который был «дискетой на стеройдах». Как минимум, давным давно для сектора хранится большая контрольная (CRC) сумма и объём информации, который может быть теоретически записан на пластинах диска заметно больше емкости диска (то, что написано на корпусе). Часть заводские дефекты пластины, часть резервная область, часть контрольные суммы и сервометки.

Не знаю, сколько попыток записать сектор сделает диск, но так, там две таблицы (два списка) плохих секторов, одна заводская, другая накапливается при работе.

Например, на дорожке физически подряд размещены сектора 0,1,2,3,4,5. Сектор 2 ещё на заводе признан плохим, поэтому при чтении первых четырёх секторов (0..3) диск вернёт содержимое физических секторов 0,1,3,4. Если в ходе эксплуатации дефект поверхности «разползся» и физический сектор 3 перестал читаться/записываться, то при записи в него будет создано перенаправление, допустим 3->891011. И при записи/чтении секторов (0..3) диск будет работать с физическими секторами 0,1,891011,4. Если хотите погрузится во всё это, гуглите «G-List» «P-List» применительно к НЖМД, вроде, даже дизассемблированые прошивки НЖМД от WD находятся. Но туда можно погружаться долго.

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

И так было для накопителей 40-320 Гб (условно). Потом пошли ещё навороты, связаные с тем, что физически на пластину диска разом пишется не один сектор, а несколько, со сложными контрольными суммами. Но, база сохраняется. Если НЖМД не может записать сектор, он постарается его переназначить (reallocation), записать его в резервную область.

Что касается badblocks и SMART. Интернет большая помойка, где почему-то часто тиражируется устаревшая, а зачастую и исходно неправильная информация. Как только пошли НЖМД с поддержкой SMART, а это было году в 2000, то параметры SMART стали первичными, а badblocks стал вторичным, дополнительным средством тестирования. Причём важны не просто значения параметров SMART, а их изменение во времени.

То есть, смотрим параметры SMART, если там reallocated_sector_ct не ноль, значит, либо возвращать НЖМД по гарантии (если ещё дествует), либо в «помойку» (не обязательно физически, можно под не очень важные данные).

Запускаем SMART, запоминаем reallocated_sector_ct и Current_Pending_Sector_Ct, запускам badblocks тест записи, потом смотрим как изменились параметры SMART. Если незначительно, то, наверное, НЖМД ещё поживёт, а если зашкаливающе выросли, то, плохо.

А практические советы... По большому счёту все хотят знать, сколько ещё проработает данный конкретный НЖМД, а этого никто не скажет. Всё это гадание, что по параметрам SMART, что на кофейной гуще, ИМХО.

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

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

разом пишется не один сектор, а несколько, со сложными контрольными суммами.

Чисто логически я и подразумевал этот момент как причину ошибки чтения. Далее, если контрольную сумму считает сам накопитель, то это одно, если она передается ему для записи, то это другое. Но и в том и другом ее несовпадение при проверке не приводит к пониманию самой причины; старение железа или случайные сбои/помехи во время передачи данных. Именно поэтому я и хотел понять, что проверяет badblocks c параметром -w?

Хорошо, если все так, как Вы написали в первом сообщении, то после завершения badblocks -w без ошибок, должны сами исчезнуть битые сектора с точки зрения софта, и badblocks на чтения должно завершиться без ошибок? Завтра проверю.

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

После окончания badblocks -w, badblocks только на чтение проходит без ошибок, чего до этого не было.
Факты.
1.badblocks на чтение не делает никакого «realloc», потому что повторный запуск опять выдает те же самые битые сектора.
2.badblocks -w «лечит» битые сектора. Логически можно предположить, что либо была правильно перезаписана контрольная сумма, либо «realloc», что несколько нелогично, вроде как гланды удалять через другое отверстие организма, да и в описании (man badblocks) об этом не говорится.

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

Вопрос был про badblocks - почему в режиме записи нет ошибок, а в режиме чтения есть?

Ошибки записи могут быть как тривиальные: диск не может спозиционироваться/найти заказанное место. Так и нетривиальными. Насколько мне известно головки винчестеров так и не были модифицированы таким образом, чтобы блок чтения мог адаптировать свою позицию в зависимости от текущей угловой позиции, чтобы находиться строго за головкой записи вдоль трека и считывать только что записанные биты. Т.е. запись происходит вслепую. Ну, почти. Т.к. расстояние до поверхности должно контролироваться, то некоторые диски (TOSHIBA, Seagate) хотя бы рапортуют «High-Fly Writes». А ещё есть проблемы с вибрацией из-за которых добавили соответствующие датчики.

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

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

Винчестерам, в которых уже можно узнать винчестер уже лет 40. Когда-то это была действительно проблема не просто софта, а пользователя. К винчестеру прилагался список нерабочих секторов или на бумажке (Hard Disk Drive monster from the past - booting up a 30 years old 14 inch HDD), или на наклейке на корпусе. И дальше надо было ручками учить софт не использовать их. badblocks умеет их находить (в особенности те, которые современные диски уже более не способны самостоятельно прозрачно переразметить ввиду исчерпания резерва) и выдавать их таким списком, что при создании файловой системы с помощью mke2fs эти блоки не будут использованы. Но если кол-во нерабочих секторов продолжает расти и расти, то даже такая тактика уже не спасёт.

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

Контрольные суммы нужны для передачи информации между вычислительным устройством и винчестером, чтобы при повреждении или команды, или данных винчестер не выполнил чего лишнего. А дальше, как уже упомянули выше, он сам вычисляет сложные длинные коды для коррекции ошибок и сохраняет их вместе с данными на пластинах/блинах. А потом считывает и данные, и эти коды. Есть тривиальные ошибки: диск не нашёл заданное место для считывания. А есть нетривиальные. После того как он их физически «успешно» считал, если восстановить данные корректно не удалось, то это логически будет ошибкой чтения.

gag ★★★★★
()