
У меня есть жесткий диск, которому я не совсем доверяю, но все равно хочу его использовать (майнинг Burstcoin, где если я получу плохой блок в файле, я потеряю всего несколько центов).
Как указать btrfs помечать определенные блоки как плохие (например, из badblocks
выходных данных)?
Если я не могу заранее пометить блоки как плохие, будут ли какие-либо плохие блоки, идентифицированные с помощью , btrfs scrub
будут исключены в будущем, если файл, использующий их, будет удален?
решение1
К сожалению нет.
btrfs не отслеживает плохие блоки и btrfs scrub
не предотвращает попадание следующего файла на тот же плохой блок(ы).
Этот пост в списке рассылки btrfsпредлагает использовать ext4 с mkfs.ext4 -c
(это«создает список плохих блоков, а затем не использует эти сектора»). Предложение использоватьbtrfs поверх mdadm 3.1+ с RAID0 работать не будет.
Кажется, чтоLVM не поддерживает перераспределение плохих блоков.
Обходной путь — создать устройство, исключающее заведомо плохие блоки:btrfs через dmsetup.
Идеи проекта btrfs викиговорит:
Не заявлено — пока нет патчей — пока нет в ядре
В настоящее время btrfs не отслеживает плохие блоки, блоки диска, которые с большой вероятностью потеряют записанные на них данные. Btrfs должен принимать список в выходном формате badblocks, сохранять его в новом btree (или, может быть, в текущем дереве экстентов с новым флагом), перемещать все данные, содержащиеся в блоках, и резервировать эти блоки, чтобы их нельзя было использовать для будущих распределений. Кроме того, scrap можно научить проверять наличие плохих блоков при обнаружении ошибки контрольной суммы. Это сделало бы scrap гораздо более полезным; ошибки контрольной суммы обычно вызваны диском, но в то время как scrap обнаруживает пораженные файлы, что в сценарии резервного копирования дает возможность их воссоздать, следующий файл, который повторно использует плохие блоки, вместо этого просто начнет получать ошибки. Эти два элемента будут соответствовать функции ext4 (используемой через e2fsck).
Пожалуйста, оставьте комментарий, если статус изменится, и я обновлю этот ответ.
решение2
Вот как я думаю обойти это ограничение. Неидеальное решение.
- Создать ext4 без журналирования в качестве файловой системы (с помеченными плохими блоками)
- Создайте образ файла btrfs поверх ext4.
- Смонтируйте образ btrfs с помощью устройства loop.
Могут возникнуть небольшие дополнительные накладные расходы.