У меня мульти-туберкулез btrfs
состоящий из образов виртуальных дисков, которые хранятся в файловых системах NetApp NFS. Данные избыточны на уровне NetApp, поэтому btrfs
это RAID-0.
Помимо обеспечения избыточности, NetApp выполняет собственную очистку целостности данных.
Потому что нет избыточности на btrfs
уровня, ошибки контрольной суммы не могут быть исправлены автоматически, но я могу восстановить поврежденные файлы из резервных копий.
Есть ли смысл в самостоятельной очистке или мне следует полагаться на нижние слои и сохранять ввод-вывод?
Нет смысла использовать собственную очистку - на самом деле, это может привести к снижению коэффициента попадания в кеш и снижению производительности при производственном вводе-выводе.
Все, от чего вы бы защитились, уже лучше отслеживает ОС Netapp.
Нет, чистка на уровне Btrfs в вашей настройке не имеет особого смысла. Очистка имеет смысл только в том случае, если у вас есть хотя бы RAID1 и работает, потому что это механизм, с помощью которого Btrfs обнаруживает дефектные данные на жестком диске и восстанавливает их. Но для его восстановления данные должны быть там более одного раза, поэтому очистка RAID0 только обнаруживает ошибки, но никогда не сможет их восстановить. Если вы хотите иметь возможность использовать механизмы самовосстановления Btrfs, поставляемые с scrub, вам нужен как минимум RAID1!
Очистка RAID0 обнаружит ошибки, но не сможет исправить большинство из них. В любом случае RAID0 следует использовать только для быстрых, одноразовых данных, а не для ценных наборов данных.
Также имейте в виду, что запуск виртуальных образов на Btrfs - это один из вариантов использования, когда Btrfs будет деградировать довольно быстро и чертовски фрагментироваться, если вы не используете nodatacow для файлов. И, конечно же, использование nodatacow как бы противоречит выбору файловой системы COW.
Значение: если вам нужна проверенная файловая система только для виртуальных образов, вы должны выбрать между Ext4 или XFS и отказаться от Btrfs.