Как я заставляю свой диск не отобразить незаконченные нечитабельные секторы

Вот awk решение. Если концы строки с a \, разделите обратную косую черту и распечатайте строку без завершения новой строки; иначе распечатайте строку с завершающейся новой строкой.

awk '{if (sub(/\\$/,"")) printf "%s", $0; else print $0}'

Это находится также не слишком плохо в sed, хотя awk, очевидно, более читаем.

10
11.09.2010, 11:56
3 ответа

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

  1. Сектор перечитан успешно
  2. Сектор переписывается

До тех пор сектор остается ожидать. Таким образом, у Вас есть два соответствующих способа иметь дело с этим:

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

Очевидно, (1) является неразрушающим, таким образом, необходимо, вероятно, попробовать его сначала, хотя имеют в виду, что, если диск начинает перестать работать серьезным способом затем, непрерывное чтение из плохой области, вероятно, заставит его перестать работать намного более быстро. Если у Вас есть много незаконченных секторов и других ошибок, и Вы заботитесь о данных по диску, я рекомендую вывести его из обслуживания и использовать превосходный инструмент ddrescue для восстановления как можно большего количества данных. Затем отбросьте диск.

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

Как Вы узнаете то, чему сектор соответствует в файловой системе? Я нашел превосходную статью на smartmontools веб-сайте, здесь, хотя это является довольно техническим и является характерным для файловых систем сборщика и ext2/3/4.

Более простой подход, который я использовал на одном из моих собственных (Mac) диски, должен использовать find / -xdev -type f -print0 | xargs -0 ... считать каждый файл в системе. Обратите внимание на незаконченное количество прежде, чем выполнить это. Если сектор будет в файле, то Вы получите сообщение об ошибке от инструмента, Вы раньше читали файлы (например, md5sum) показ Вам путь к нему. Можно затем сфокусировать внимание на перечитывание просто этого файла, пока это не читает успешно. Часто это будет решать проблему, если это будет нечасто используемый файл, который просто должен был быть перечитан несколько раз. Если ошибка уходит, или Вы не встречаетесь ни с какими ошибками в чтении всех файлов, проверяете незаконченное количество, чтобы видеть, уменьшено ли это. Если это имеет, проблема была решена путем чтения.

Если файл не может быть считан успешно после нескольких попыток (например, 20) затем необходимо перезаписать файл или блок в файле, чтобы позволить диску перераспределить сектор. Можно использовать ddrescue на файле (а не раздел) для перезаписи просто одного сектора путем копирования во временный файл и затем копирования назад снова. Обратите внимание, что просто удаление файла в этой точке является плохой идеей, потому что поврежденный сектор войдет в бесплатный список, где будет более трудно найти. Полностью перезапись его плоха также, потому что снова секторы войдут в бесплатный список. Необходимо переписать существующие блоки. notrunc опция dd один путь состоит в том, чтобы сделать это.

Если Вы не встречаетесь ни с какими ошибками, и незаконченное количество не уменьшилось, то сектор должен быть в freelist или в части инфраструктуры файловой системы (например, inode таблица). Можно попытаться заполнить все свободное пространство cat /dev/zero >tempfile, и затем проверьте незаконченное количество. Если это понижается, проблема была в бесплатном списке и теперь ушла.

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

Не спускайте очень близких глаз с диска. Перераспределение сектора является очень хорошей канарейкой в угольной шахте, потенциально давая Вам дальнее обнаружение диска, который перестал работать. Путем принятия ранних мер можно предотвратить более поздний катастрофический и очень болезненный оползень. Я не предполагаю, что несколько перераспределений сектора являются признаком, что необходимо отбросить диск. Все современные диски должны сделать некоторое перераспределение. Однако, если диск не очень стар (<1 год), или Вы получаете частые новые перераспределения (> 1/месяц) затем, я рекомендую заменить его как можно скорее.

У меня нет эмпирического доказательства для доказательства его, но мой опыт показывает, что дисковые проблемы могут быть уменьшены путем чтения целого диска время от времени, любого a dd из неструктурированного диска или путем чтения каждого использования файла find. Почти все дисковые проблемы, которые я испытал за прошлые несколько лет, неожиданно возникли сначала в редко используемых файлах, или на машинах, которые не используются очень. Это имеет смысл эвристическим образом также в том, что, если сектор перечитывается часто, диск имеет шанс перераспределить его, когда он сначала обнаруживает незначительную проблему с тем сектором вместо того, чтобы ожидать, пока сектор не абсолютно нечитабелен. Диск бессилен сделать что-либо с сектором, если хост не получает доступ к нему так или иначе, или путем чтения или записи этого или путем проведения одного из УМНЫХ тестов.

Я хотел бы экспериментировать с идеей ночного или еженедельного задания крона, которое читает целый диск. В настоящее время я использую RAID "бедного человека", в котором у меня есть второй жесткий диск в машине, и я резервирую главный диск к ней каждую ночь. До некоторой степени это на самом деле лучше, чем зеркальное отражение RAID, потому что, если я попадаю впросак и удаляю файл по ошибке, я могу сразу получить вчерашнюю версию от диска с резервной копией. С другой стороны, я полагаю, что аппаратный RAID-контроллер делает большую хорошую работу в фоновом режиме, чтобы контролировать, сообщить и решить дисковые проблемы, как они появляются. Мое использование сценария актуальной резервной копии rsync чтобы не копировать данные, которые не изменились, но ввиду потребности перечитать все секторы, возможно, было бы лучше скопировать все или иметь отдельный сценарий, который читает весь неструктурированный диск каждую неделю.

15
27.01.2020, 20:01
  • 1
    Если Вы делаете резервные копии (rsyncing к внутреннему диску, не рассчитывает ;)) то все Ваши данные являются (пере-) чтением в определенных временных интервалах (в зависимости от Вашего полного/инкрементного расписания резервного копирования). RAID или rsync не являются резервными заменами. И btw, я 'полагаю', что у Вас есть слишком много веры в поставщиков аппаратного RAID. ;) –  maxschlepzig 13.09.2010, 22:32
  • 2
    @maxschlepzig: Вы правы. У меня действительно есть отдельный резервный режим также. Однако мой опыт состоял в том, что вероятность потери данных из-за сбоя диска явно перевешивает все другие соединенные риски (воровство, огонь, и т.д.). Современные жесткие диски имеют такую плохую надежность, что я абсолютно параноик о них в наше время. Таким образом, мой второй внутренний диск является большой частью моей стратегии. –  Neil Mayhew 13.09.2010, 22:51
  • 3
    я считал и перечитал контент дискового использования dd if=/dev/sda ... и секторы все еще находятся на рассмотрении, какая-либо идея почему? –  dmansfield 05.09.2014, 19:51
  • 4
    @dmansfield, если Вы не встретились ни с какими ошибками, затем я не уверен почему. Я заметил, что только необработанное значение точно в умном выводе, поэтому если Вы только смотрели на 'приготовленное' значение, может случиться так, что у Вас нет незаконченных секторов. у докера –  Neil Mayhew 07.09.2014, 06:49

Используйте Диагностику Спасателя Данных для DOS (загрузочный CD) программное обеспечение, доступное от сайта Western Digital

1
27.01.2020, 20:01
  1. Скопируйте свои данные
  2. Удалите это устройство из группы LVM
  3. dd if=/dev/zero of=/dev/sdc bs=4k - это сотрет все данные по /dev/sdc
  4. Включайте его снова в группу LVM
  5. Восстановите свое резервное копирование
1
27.01.2020, 20:01
  • 1
    0. Имейте резервное копирование. :-) –  Steven D 12.09.2010, 08:44
  • 2
    Но это - ошибка чтения ожидания, таким образом, разве не должно быть достаточно просто считать все секторы? –  dkagedal 13.09.2010, 09:24
  • 3
    @dkagedal: Нет, встроенное микропрограммное обеспечение HD уже обнаружило, что не может считать этот сектор. Это не имеет никакого способа восстановить его (самостоятельно, кроме того, возможно, для повторения и повторить, и иметь удачу в какой-то момент..., надо надеяться, это не поврежденные данные, затем возвращенные), и таким образом настраивает эту УМНУЮ ошибку. Но если встроенное микропрограммное обеспечение обнаруживает запись на том определенном секторе, оно отображает этот сектор далеко (и больше не использует его), и вместо этого отображает запасной (рабочий) сектор на этот адрес. –  maxschlepzig 13.09.2010, 12:04
  • 4
    @dkagedal: Иногда всего одно или два дополнительных чтения возвратят сектор. Другие времена, ничто не возвратит его. Кроме того, диск решает внутренне, повторно отобразить ли сектор или снова использовать его, на основе серьезности исходной ошибки, и может ли он считать его назад успешно после записи в него. Единственным путем можно сказать, путем рассмотрения перераспределенного счета для диска. Я полагаю, что диски используют довольно обширное вычисление контрольной суммы, чтобы гарантировать, что, когда данные считаны, они не повреждаются, таким образом, можно быть довольно уверены в секторе, который не был перераспределен. –  Neil Mayhew 13.09.2010, 22:05

Теги

Похожие вопросы