LINUX.ORG.RU

Как сохранить статус badblocks?

 badbclocks,


1

1

Запустил badblocks на полторашку. Т.к. ранее неоднократно встречал подглючивание, я решил просканировать и отформатировать с учетом бэдов. Правда, возможно, это просто размагничивание из-за старения. Но надо удостовериться.

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

badblocks /dev/sdg1 -svw -o sdg1-bads
Checking for bad blocks in read-write mode
From block 0 to 1465136127
Testing with pattern 0xaa: 0.51% done, 24:33 elapsed. (0/0/0 errors)

Возможно ли как-то выдрать количество уже просканированных блоков, чтобы запустить завтра продолжение? Или придется тащить диск на работу (там компьютер не выключается)?


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

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

CYB3R ★★★★★
()

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

И посмотрите уже ман, там в первом же абзаце есть ответ.

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

Полторашный диск должен сканироваться часа четыре

Ты бы прикинул вначале: операция записи + операция чтения == ~25МБ/с. В час это ~88ГБ, в сутки ~2ТБ. Но у меня медленный старый диск, там скорость ~10МБ/с, сейчас имею:

1.04% done, 49:23 elapsed

это где-то 3.4 суток.

Про first-block в мане прочитал. В первый раз что-то я на это внимания не обратил. Но вот как узнать, на каком блоке сейчас идет сканирование? Или тупо взять этот процент, да умножить на общее кол-во блоков?

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

Если сканировать только на чтение, то он должен выдавать сотню. Старый? Хорошо, пусть выдаёт полтинник. Если меньше, то это не диск, а тормоз.

Вот тут ничего не могу сказать. Если с опцией -s он не выдаёт номер блока, то остаётся разве что сканировать по частям, т.е. сначала от блока 1 до N, потом от N до 2N и т.д.

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

Решето!

Я же сканирую на запись-чтение, чтобы надежно. Старый — ему года три уже! Обычно больше четырех-пяти лет жесткие диски не живут (по крайней мере, три предыдущих сдохли после 4-5 лет службы). Полтинник физически ни один жесткий SATA диск не может выдать — это же не SSD!

Но я понял, как статус сохранять (заодно, почитав маны, врубился, что размер блока надо было сразу делать 4096 — перезапустил, установив правильный размер и разделив количество просканированных блоков на 4, чтобы определить номер первого блока для сканирования).

Когда badblocks получает SIGINT, он пишет, на каком блоке вырубился, например:

Interrupted at block 4519600
Это число сохраняем в файл, а потом можем опять запустить:
badblocks /dev/sdg1 -b 4096 -svw -o sdg1-bads 1465136127 4519600

Anon
() автор топика
Ответ на: Решето! от Anon

Всё равно что-то уж слишком медленно. У меня системный диск даже при копировании файла на самого себя 30-35 выдаёт.

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

Полторашный диск должен сканироваться часа четыре

Все, поздравляю, ты заслужил плашку «ламер».
Бэдблокс делает четыре прохода, каждый из одного прохода полной записи и одного прохода проверки записанного.
Потому даже самая быстрая полторашка будет тестироваться около 15-18 часов.

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

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

P.S. вы зря стараетесь вывести меня из себя и получить предложение отправиться в пешее эротическое. Я разве что под мост могу послать или в игнор.

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

вы зря стараетесь вывести меня из себя

Да кому ты нужен. Просто от ламерья ограждаю ТСа, который может оказаться достаточно наивным, чтобы тебе поверить. От мании величия смотри не лопни :)

pekmop1024 ★★★★★
()

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

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

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

Не боись, я никому не верю ☺

И ты так говоришь, будто бы меня не знаешь!

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

Да не, выше ведь я уже написал решение. По ctrl+C он пишет номер сканируемого блока — с него в следующий раз и надо начинать. Все просто оказалось.

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

Ну тебя знаю. А рядом может бегать и кто-то более наивный. Зачем вредные советы терпеть? :)

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

Ну тут какая засада... проходов-то четыре. И они идут последовательно. Т.е. оборвав где-то посередине, ты оборвешь не просто посередине винта, но и посередине одного из проходов.

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

Да пофиг: если первый проход не выявил, вероятность бэда всего-то 1/256! Можно считать, что его там нет.

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

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

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

Кстати, я так понял (судя по манам и выхлопу badblocks), что сначала весь диапазон сканируется путем записи байта 0xaa, а затем — остальных трех байт (0x55, 0xff и 0x00 поочередно).

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

Да ну нафиг!

Тогда проще dd'ой пройтись

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

Чорд!

Ты прав: я скачал исходник. А то, начал было радоваться: уже почти 2% без ошибок. А он, оказывается, только пишет... В общем, завтра наклепаю скриптик на баше и буду по кускам проверять. Или тупо dd'ой.

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

Решил сейчас скриптик накатать. Вот что получилось:

cat scansdg 

#!/bin/bash
FILE="badblks_data"
BLKSZ="10240"
[ ! -e $FILE ] && echo -e "START=\"0\"\nLAST=\"$BLKSZ\"" > $FILE

eval $(cat $FILE)
while true; do
	echo -e "START=\"$START\"\nLAST=\"$LAST\"" > $FILE
	badblocks /dev/sdg1 -b 4096 -svw -o sdg1-bads $LAST $START || exit 0
	START=$(($LAST + 1))
	LAST=$(($BLKSZ + $LAST))
done

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

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

Что-то скрипт запустил, а потом подумал: а какой длины числа в баше? Проверил: int64_t. Хватит.

Anon
() автор топика

Возможно ли как-то выдрать количество уже просканированных блоков, чтобы запустить завтра продолжение? Или придется тащить диск на работу (там компьютер не выключается)?

Разбей диск на части и так и сканируй.

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

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

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

Вот, кстати, товарищ дело говорит. Побей его на тысячу условных кусков с перехлестом в несколько секторов и так и скань :)

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

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

Побей его на тысячу условных кусков

Я уже запустил сканирование по 10к блоков.

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

Та не: я имею в виду последующее переформатирование с указанием бэдов.

Anon
() автор топика

Едрена вошь! За 40 минут только 10ГБ проверил. Это получается чуть больше 4МБ/с за полный цикл, т.е. 16МБ/с за один прогон.

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

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

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

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

потом плюнете на это дело

Не плюну: можно вообще этот скрипт в автозагрузку (rc.local) воткнуть. Пусть себе проверяет, пока весь диск не просканирует. У меня пока проблем с местом нет, могу полторашку подержать незаюзанной.

какой смысл вообще проверять на запись?

А что здесь непонятного? Вдруг у тебя в этом конкретном месте бэд, причем читается хорошо, а пишется никак. И вообще, проверка диска на чтение — это как проверка на свежесть помидоров по издаваемому ими шлепку о стену.

Так он заремапит его

Не у всех такие крутые диски. У меня старенький "green".

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

потом плюнете на это дело и сделаете проверку на чтение

Да ты упоротый что ли? Проверка на чтение ничего не проверяет. Это онанизм.

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

SATA же! Это очень даже нормальная скорость для старого HDD. Новые максимум 25 выдают…

Не далее как месяц назад я на ST1000DM003 полные четыре прохода прогнал за тринадцать с половиной часов. Линейка у твоего должна быть около 100-120 метров (средняя по винту - не меньше 60), так что дело не в сате. Тут что-то не так.

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

Не у всех такие крутые диски. У меня старенький «green».

Ну и что? Ему три года, а не тридцать. Самое старое, что быстро нагуглилось: http://www.hardw.net/doc/30.htm#14 Год публикации - 2000.

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

Тестировать «на чтение» тоже будет только ламер, ибо тестировать оно ничего не тестирует :)

не, ну почему? У меня есть диск, который клинит на определённых дорожках. Хотя в целом ты прав конечно...

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

Что-то скрипт запустил, а потом подумал: а какой длины числа в баше? Проверил: int64_t. Хватит.

да, 64 целое.

И да, совет: используй цепной код в качестве патерна. Его хранить не нужно.

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

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

you make my day

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

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

Видит ЛММ, я этого не хотел. Но раз нормально не умеете разговаривать - отправляйтесь в игнор.

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

Аргументировать в ответ на полную чушь? Точно, тролль. :)

pekmop1024 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.