ENOSPC: Miért van szükség a `btrfs egyensúlyra ? Mit csinal?

Szükségem volt a btrfs balance futtatására egyetlen eszköz fájlrendszeremen, amikor ENOSPC annak ellenére, hogy valóban volt szabad hely.

Miért kell ezt futtatni?

Mit csinál valójában az egyensúly?

Válasz

A legtöbb hagyományos fájlrendszertől eltérően a BTRFS kétlépcsős allokátort használ. Az első szakasz nagy térrészeket oszt ki darabként, bizonyos típusú adatokhoz , akkor a második szakasz a szokásos fájlrendszerként blokkokat oszt ki ezeken a nagyobb régiókon belül. Három különböző típusú darab van:

  • Adatcsomók: Ezek rendszeres fájladatokat tárolnak.

  • Metaadat-darabok: Ezek a fájlok metaadatait tárolják, ideértve többek között az időbélyegeket, az ellenőrző összegeket, a fájlneveket, a tulajdonjogot, az engedélyeket és a kiterjesztett attribútumokat.

  • Rendszerdarabok: Ezek egy speciális típusú darabok, amelyek adatokat tárolnak arról, hogy az összes többi darab hol található.

Csak azt az adattípust lehet tárolni, amelyhez a darab lefoglalt. Manapság a leggyakoribb eset, amikor -ENOSPC hibát kap a BTRFS-en, az, hogy a fájlrendszerben elfogyott a hely a meglévő darabokban lévő adatok vagy metaadatok számára, és “nem rendelhet új darabot. Ellenőrizheti, hogy ez a helyzet-e btrfs fi df futtatása a hibát dobó fájlrendszeren. Ha az Adatok vagy a Metaadatok sorban a Teljes érték látható, amely jelentősen eltér a Használt értéktől, akkor valószínűleg ez az oka.

A btrfs balance feladata az, hogy visszaküldje a dolgokat az allokátoron keresztül, ami azt eredményezi, hogy a darabok tömörülnek. Ha például két metaadat-darab van, mindkettő 40% -kal teli, az egyensúly azt eredményezi, hogy egy olyan metaadat-részdé válnak, amely 80% -kal megtelt. Az ilyen helyhasználat tömörítésével a mérlegművelet képes törölni a már üres darabokat, és így helyet szabadít fel az új darabok kiosztására. Ha a mérleg futtatása után ismét futtatja a btrfs fi df elemet, látnia kell, hogy az Összes és a Használt érték sokkal közelebb van egymáshoz, mivel az egyenleg törölte azokat a darabokat, amelyekre már nem volt szükség.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük