Niech Btrfs zrobi wszystko.
Po pierwsze, Btrfs ma własny zintegrowany kod dublowania, który może być mądrzejszy od szaleńca.
Oczywiście, jeśli dysk mocno zawiedzie w lustrzanej parze w szalonym rajdzie10, możesz wymienić zły dysk i iść dalej swoim życiem (choć po niepokojąco złożonym zestawie poleceń powłoki). Problem polega na tym, że dysk ulega awarii bardziej łagodnie: jeśli kilka bloków po prostu oddaje nieprawidłowe bity zamiast podawać odpowiednie kody błędów dla uszkodzonego bloku, wtedy podczas odczytu danych losowo otrzymujesz złe dane. Btrfs jest mądrzejszy: sumuje wszystkie bity danych. Szczerze mówiąc, nie wiem, czy bardziej poprawne jest powiedzenie „każdy węzeł BTree” czy „każdy blok”, ale chodzi o to, że gdy czyta niektóre dane z tablicy lustrzanej, sprawdza sumę kontrolną przed zwróceniem jej do twojego proces użytkownika. Jeśli suma kontrolna nie pasuje, najpierw sprawdza inne lustro w tablicy, a jeśli to daje poprawną sumę kontrolną,
Wiki Btrfs wymienia twoje pytanie :
Gdyby Btrfs polegał na mapowaniu urządzeń lub MD do tworzenia kopii lustrzanych, nie byłby w stanie rozwiązać błędów sumy kontrolnej poprzez sprawdzenie kopii lustrzanej . Niższe warstwy nie znają sumy kontrolnej ani ziarnistości bloków systemu plików, więc nie są w stanie zweryfikować zwracanych danych.
Wreszcie, nawet bez tej istotnej przewagi, przepływ pracy w wierszu poleceń do obsługi usuniętych lub dodanych urządzeń Btrfs jest bardzo prosty. Nie jestem nawet pewien, czy mógłbym poprawnie wykonać polecenia powłoki zdegradowanego-zamontować-a następnie naprawić-system plików, ale dla Btrfs jest to bardzo wyraźnie udokumentowane na stronie wielu urządzeń jako:
mount -o degraded /dev/sdb /mnt
btrfs device delete missing /mnt
W tym momencie, jeśli masz wystarczająco dużo miejsca na pozostałych dyskach, zawsze możesz to btrfs rebalance
zrobić i skończyć z tym; nie trzeba wymieniać lustra, tak jak absolutnie musisz zrobić z szaleńcem! A jeśli chcesz go wymienić, możesz zrobić to btrfs device add
najpierw.