ENOSPC: Dlaczego wymagany jest „balans btrfs”? Co to robi?

Musiałem uruchomić btrfs balance na moim pojedynczym systemie plików, ponieważ otrzymywałem ENOSPC mimo że rzeczywiście było wolne miejsce.

Dlaczego trzeba to uruchomić?

Co właściwie robi saldo?

Odpowiedź

W przeciwieństwie do większości konwencjonalnych systemów plików, BTRFS używa dwustopniowego alokatora. Pierwszy etap przydziela duże obszary przestrzeni zwane fragmentami dla określonych typów danych , a następnie drugi etap przydziela bloki jak zwykły system plików w tych większych regionach. Istnieją trzy różne typy fragmentów:

  • Fragmenty danych: przechowują zwykłe dane pliku.

  • Fragmenty metadanych: przechowują metadane dotyczące plików, w tym między innymi znaczniki czasu, sumy kontrolne, nazwy plików, własność, uprawnienia i atrybuty rozszerzone.

  • Fragmenty systemu: Jest to specjalny rodzaj porcji, który przechowuje dane o tym, gdzie znajdują się wszystkie inne fragmenty.

Tylko typ danych, do których jest przydzielona porcja, może być przechowywany w tej porcji. Obecnie najczęstszym przypadkiem, kiedy pojawia się błąd -ENOSPC w BTRFS, jest brak miejsca na dane lub metadane w istniejących fragmentach i nie można przydzielić nowej porcji. Możesz sprawdzić, czy tak jest, uruchamianie btrfs fi df w systemie plików, który spowodował błąd. Jeśli w wierszu Dane lub metadane jest wyświetlana wartość Łączna, która znacznie różni się od wartości Użyte, prawdopodobnie jest to przyczyna.

btrfs balance polega na wysyłaniu rzeczy z powrotem przez alokator, co skutkuje zużyciem miejsca w kompaktowanych porcjach. Na przykład, jeśli masz dwie porcje metadanych, które są 40% zapełnienia, saldo spowoduje, że staną się one jednym fragmentem metadanych, który jest zapełniony w 80%. Dzięki takiemu zagęszczeniu wykorzystania przestrzeni operacja równoważenia jest następnie w stanie usunąć puste fragmenty, a tym samym zwolnić miejsce na przydzielanie nowych fragmentów. Jeśli ponownie uruchomisz btrfs fi df po uruchomieniu salda, powinieneś zobaczyć, że wartości Total i Used są znacznie bliżej siebie, ponieważ saldo usunięte fragmenty, które nie były już potrzebne.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *