Может ли btrfs отслеживать / избегать плохих блоков?

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

Многие приложения с графическим пользовательским интерфейсом - это большие вещи, которые много делают, включая сохранение сеансов. Напротив, приложения командной строки, как правило, строятся на философии хорошего выполнения одной задачи и использования оболочки в качестве связующего языка для управления приложениями и их связывания. Если хорошо спроектированное приложение командной строки прерывается, его повторный запуск с теми же параметрами (сохраненными в истории оболочки) должен завершить работу. И это работает для apt-get . Запустите команду еще раз, и она снова начнется с того места, где остановилась, или достаточно близко.

Обновление Debian состоит из множества файлов, средний размер которых составляет около 100 КБ (самые большие пакеты, размером около 30–60 МБ, в основном представляют собой большие наборы данных и отладочную информацию). Если вы прервете процесс обновления, файлы, которые уже были полностью загружены, все еще будут поблизости (в / var / cache / apt / archives ) и больше не будут загружены.

6
30.04.2017, 12:51
1 ответ

К сожалению, нет.

btrfs не отслеживает плохие блоки, а btrfs scrub не предотвращает попадание следующего файла в тот же плохой блок (блоки).

В этом сообщении списка рассылки btrfs предлагается использовать ext4 с mkfs.ext4 -c (это "создает список плохих блоков, а затем не будет использовать эти сектора"). Предложение использовать btrfs поверх mdadm 3.1+ с RAID0 не сработает.

Кажется, что LVM не поддерживает перераспределение плохих блоков.

Обходной путь — собрать устройство, исключив заведомо плохие блоки: btrfs поверх dmsetup.


В вики-проекте btrfs Project Ideas говорится:

Не заявлено — еще нет исправлений — еще нет в ядре

В настоящее время btrfs не отслеживает поврежденные блоки, блоки диска, которые с большой вероятностью могут привести к потере данных написано им. Btrfs должен принимать список в выходном формате badblocks, сохранять его в новом btree (или, может быть, в текущем дереве экстентов с новым флагом), перемещать любые данные, содержащиеся в блоках, и резервировать эти блоки, чтобы их нельзя было использовать. для будущих ассигнований. Кроме того, скраб можно научить проверять наличие плохих блоков при обнаружении ошибки контрольной суммы. Это сделало бы скраб гораздо полезнее; Ошибки контрольной суммы, как правило, вызваны диском, но в то время как чистка обнаруживает поврежденные файлы, что в сценарии резервного копирования дает возможность воссоздать их, следующий файл для повторного использования плохих блоков вместо этого просто начнет получать ошибки. Эти два элемента будут соответствовать функции ext4 (используемой через e2fsck).

Пожалуйста, прокомментируйте, если статус изменится, и я обновлю этот ответ.

12
27.01.2020, 20:27

Теги

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