Я столкнулся (лично или по доверенности) с кучей носителей, которые отображали физические проблемы в течение их жизни. Через некоторое время жесткие диски, твердотельные диски и другие флэш-накопители перестают работать. Ситуация ухудшается при использовании USB-флеш-накопителей и флеш-карт из-за большого количества поставщиков с низким качеством флеш-памяти и качества флэш-памяти.
Как я могу надежно обнаружить, если накопитель страдает от физического повреждения?
Обратите внимание, что этот вопрос касается не целостности файловой системы (который можно проверить с помощью fsck(8)).
На протяжении всего этого ответа я предполагаю, что диск хранения отображается как блок-устройство на пути /dev/sdc
. Чтобы найти путь к накопителю в нашей текущей настройке, используйте:
palimpsest
), если имеется графический интерфейс, или lsblk
и ls -l /dev/disk/by-id
и попытаться найти нужное устройство по размеру, разбиению на разделы, производителю и имени модели. Иногда носитель данных просто отказывается работать вообще. Он по-прежнему отображается как блок-устройство для ядра и диспетчера дисков, но его первый сектор, содержащий таблицу разделов, не читается. Это можно легко проверить с помощью:
sudo dd if=/dev/sdc of=/dev/null count=1
Если в этой команде появляется сообщение об ошибке «Ошибка ввода / вывода», наш диск поврежден или иным образом не взаимодействует с ядром Linux, как ожидалось. В первом случае, немного удачлив, специалист по восстановлению данных с надлежащим образом оборудованной лабораторией может спасти свой контент. В последнем случае стоит попробовать другую операционную систему. (Я сталкивался с USB-накопителями, которые работают на Windows без специальных драйверов, но не на Linux или OS X.)
Устройства, которые его поддерживают, могут быть запрошены о своем здоровье через SMART или поручены выполнять самотестирование целостности различной тщательности , Это, как правило, лучший вариант, но обычно он доступен только на (не древних) жестких дисках и твердотельных дисках. Большинство съемных флэш-носителей не поддерживают его.
Дополнительные ресурсы и инструкции:
Чтобы проверить целостность чтения всего устройства без его записи, мы можем использовать badblocks(8)
следующим образом:
sudo badblocks -b 4096 -c 4096 -s /dev/sdc
Эта операция может занять много времени, особенно если накопитель на самом деле поврежден. Если число ошибок возрастает выше нуля, мы будем знать, что есть плохой блок. Мы можем спокойно прекратить операцию в любой момент (даже сильно, как во время сбоя питания), если нас не интересует точная сумма (и, возможно, место) плохих блоков.
Примечание для расширенного использования: если мы хотим повторно использовать вывод для e2fsck
, нам нужно установить размер блока (-b
), к файловой системе. Мы также можем настроить количество данных (-c
, в блоках), которые были протестированы сразу для повышения пропускной способности; 16 MiB должно быть хорошо для большинства устройств.
Иногда - особенно со вспышкой - при попытке записи возникает ошибка. (Этот не будет надежно обнаруживать (flash) носители, которые рекламируют больший размер, чем они есть на самом деле, используйте Fight Flash Fraud .)
badblocks
отказывается работать на них в любом случае, если вы его не заставляете. killall -9 badblocks
(SIGKILL) нет. После принудительного завершения badblocks
невозможно восстановить исходное содержимое текущего диапазона блоков и оставить его перезаписанным с помощью мусорных данных и, возможно, испортить файловую систему. Чтобы использовать неразрушающий режим чтения, (f16).
Как и выше, но без восстановления предыдущего содержимого диска после выполнения теста записи, поэтому он немного быстрее. Поскольку данные все равно стираются, принудительное завершение остается без (дополнительного) отрицательного результата.
Чтобы использовать деструктивные проверки чтения-записи, добавьте параметр -w
к указанной выше команде badblocks
.
F3 (Fight Flash Fraud) - еще одна опция, которая должна дополнительно обнаруживать фальшивые флеш-накопители (флеш-накопители, чья фактическая пропускная способность составляет часть объявленной емкости):
Вставьте диск Установить F3sudo apt-get install f3
Записать тест данные на свободное место на диске f3write /media/$USER/D871-DD7C/
Считать тестовые данные f3read /media/$USER/D871-DD7C/
Плохие блоки работают хорошо, но не предназначены для обнаружения фальшивых флеш-накопителей и F3 (Fight Flash Fraud) [ ! d1].
Вы можете протестировать-прочитать весь диск, показывая индикатор прогресса:
time sudo pv /dev/sdc >/dev/null
Некоторые проблемы с диском проявятся в сообщениях об ошибках ввода-вывода. Это немного лучше, чем dd из-за индикатора прогресса и потому, что интерфейс командной строки немного более стандартный и немного менее опечатанный. Обратите внимание, что pv - это в основном и расширенная версия cat. Он может быть установлен по умолчанию, но может быть установлен с помощью sudo apt-get install pv.
Аналогичный подход состоит в том, чтобы прочитать диск с одним из нескольких доступных инструментов, которые специально осведомлены о ошибках ввода-вывода диска - - и имеют функцию «стараться спасать данные». Найти typo-prone в диспетчере пакетов.
F3 (Fight Flash Fraud) - еще одна опция, которая должна дополнительно обнаруживать фальшивые флеш-накопители (флеш-накопители, чья фактическая пропускная способность составляет часть объявленной емкости):
Вставьте диск Установить F3sudo apt-get install f3
Записать тест данные на свободное место на диске f3write /media/$USER/D871-DD7C/
Считать тестовые данные f3read /media/$USER/D871-DD7C/
Плохие блоки работают хорошо, но не предназначены для обнаружения фальшивых флеш-накопителей и F3 (Fight Flash Fraud) [ ! d1].
Вы можете протестировать-прочитать весь диск, показывая индикатор прогресса:
time sudo pv /dev/sdc >/dev/null
Некоторые проблемы с диском проявятся в сообщениях об ошибках ввода-вывода. Это немного лучше, чем dd из-за индикатора прогресса и потому, что интерфейс командной строки немного более стандартный и немного менее опечатанный. Обратите внимание, что pv - это в основном и расширенная версия cat. Он может быть установлен по умолчанию, но может быть установлен с помощью sudo apt-get install pv.
Аналогичный подход состоит в том, чтобы прочитать диск с одним из нескольких доступных инструментов, которые специально осведомлены о ошибках ввода-вывода диска - - и имеют функцию «стараться спасать данные». Найти typo-prone в диспетчере пакетов.