Fájlrendszer töredezettsége - File system fragmentation

Image
A töredezettség, majd a töredezettségmentesítés vizualizálása

A számítástechnikai , fájlrendszer töredezettsége , néha fájlrendszer öregedés , az a tendencia, a fájlrendszer helyezkedjenek el a tartalmát a fájlok nem folyamatosan, hogy a helyben módosítását azok tartalmát. Az adatok töredezettségének különleges esete . A fájlrendszer töredezettsége növeli a lemezfej mozgását vagy keresési idejét (ahol alkalmazható), amelyekről ismert, hogy akadályozzák az átvitelt . A meglévő töredezettség korrekciója a fájlok és a szabad hely újraszervezése szomszédos területekre, ezt a folyamatot töredezettségmentesítésnek nevezik .

A szilárdtestalapú meghajtókkal rendelkező számítógépeken a fájlrendszerek töredezettsége sokkal kisebb teljesítménybeli probléma, mivel a fejek vagy a lemezek nem mozognak. Valójában az ilyen meghajtók töredezettségmentesítése lassan lerövidítheti élettartamukat.

Okoz

Amikor egy fájlrendszert először inicializálnak egy partíción , az csak néhány kis belső struktúrát tartalmaz, és egyébként egy üres terület egy szomszédos tömbje. Ez azt jelenti, hogy a fájlrendszer képes az újonnan létrehozott fájlokat bárhová elhelyezni a partíción. A létrehozás után egy ideig a fájlok szinte optimálisan helyezhetők el. Az operációs rendszer és az alkalmazások telepítésekor vagy az archívumok kicsomagolásakor a különálló fájlok egymás után jelennek meg, így a kapcsolódó fájlok egymáshoz közel helyezkednek el.

A meglévő fájlok törlésével vagy csonkításával új szabad területrégiók jönnek létre. Meglévő fájlok hozzáfűzésekor gyakran lehetetlen folytatni az írást pontosan azon a helyen, ahol a fájl véget ért, mivel előfordulhat, hogy egy másik fájl már hozzá van rendelve; így új töredéket kell kiosztani. Ahogy telik az idő, és ugyanazok a tényezők folyamatosan jelen vannak, a szabad hely és a gyakran csatolt fájlok inkább töredezettek. A szabad terület rövidebb régiói azt is jelentik, hogy a fájlrendszer már nem képes új fájlokat egymás mellett kiosztani, és töredékekre kell bontani őket. Ez különösen akkor igaz, ha a fájlrendszer megtelik, és a nagy, összefüggő szabad terület nem érhető el.

Példa

Image
Egyszerűsített példa a szabad tér és a fájlok töredezettségének előfordulására

A következő példa egy egyébként bonyolult téma egyszerűsítése. Tekintsük a következő forgatókönyvet: Egy új lemez öt, A, B, C, D és E nevű fájlt tartalmazott, amelyek folyamatosan és egymás után kerülnek mentésre ebben a sorrendben. Minden fájl 10 helyblokkot használ . (Itt a blokk mérete nem fontos.) A lemezterület fennmaradó része egy szabad blokk. Így további fájlok hozhatók létre és menthetők az E fájl után.

Ha törli a B fájlt, akkor létrejön egy második, tíz blokkot tartalmazó szabad terület, és a lemez töredezett lesz. Az üres helyet egyszerűen ott hagyják, megjelölik és későbbi használatra rendelkezésre állnak, majd szükség szerint újra felhasználják. A fájlrendszer is töredezettségmentesítéséhez lemez után azonnal törlésre, hanem ezzel járna súlyos teljesítmény büntetés kiszámíthatatlan időkben.

Most egy új, F nevű fájl, amely hét helyblokkot igényel, elhelyezhető az újonnan felszabadított terület első hét blokkjában, amelyek korábban a B fájlt tartották, és az azt követő három blokk elérhető marad. Ha hozzáad egy másik, G nevű, csak három blokkot igénylő fájlt, akkor az F után és C előtt foglalhatja el a helyet.

Ha ezt követően az F -t ki kell bővíteni, mivel az azt közvetlenül követő terület el van foglalva, három lehetőség áll rendelkezésre a fájlrendszer számára:

  1. Új blokk hozzáadása máshová, és annak jelzése, hogy F -nek van egy második mértéke
  2. Fájlok áthelyezése a bővítés útján máshová, hogy az F összefüggő maradhasson
  3. F fájl áthelyezése, így az egy, az új, nagyobb méretű fájl egy szomszédos fájlja lehet

A második lehetőség valószínűleg nem praktikus teljesítménybeli okokból, akárcsak a harmadik, amikor a fájl nagyon nagy. A harmadik lehetőség lehetetlen, ha nincs egyetlen elég nagy szabad hely az új fájl tárolására. Így a szokásos gyakorlat az, hogy valahol máshol hozzunk létre egy mértéket , és az új mértéket láncoljuk a régire.

Az F fájl végéhez hozzáadott anyag ugyanolyan mértékben része lenne. De ha annyi anyag van, hogy az utolsó kiterjesztés után nem áll rendelkezésre hely, akkor más mértéket kell létrehozni, és így tovább. Végül a fájlrendszernek sok helyen vannak ingyenes szegmensei, és egyes fájlok több területen is elterjedhetnek. Az ilyen fájlok (vagy az összes fájl) elérési ideje túlságosan hosszú lehet.

Szükségesség

Egyes korai fájlrendszerek nem tudták töredezni a fájlokat. Ilyen például a BBC Micro -n használt Acorn DFS fájlrendszer . Mivel nem tudja töredezni a fájlokat, időnként megjelenik a nem bővíthető hibaüzenet , és a felhasználó gyakran akkor sem tudja menteni a fájlt, ha a lemezen elegendő hely áll rendelkezésre.

A DFS nagyon egyszerű lemezstruktúrát használt, és a lemezen lévő fájlokat csak a hosszuk és a kiinduló szektoruk alapján találták meg. Ez azt jelentette, hogy minden fájlnak szektorok folyamatos blokkjaként kellett léteznie, és a töredezettség nem volt lehetséges. A fenti táblázat példájával élve az F fájl kibontására tett kísérlet az ötödik lépésben kudarcot vallott egy ilyen rendszeren, amely nem tudja kiterjeszteni a hibaüzenetet. Függetlenül attól, hogy összesen mennyi szabad hely maradhat a lemezen, nem volt elérhető az adatfájl kiterjesztése.

Az akkori hibakezelési szabványok primitívek voltak, és mindenesetre a BBC Micro korlátozott memóriájába szorított programok ritkán engedhették meg maguknak, hogy helyet pazaroljanak a hibák kecses kezelésére. Ehelyett a felhasználó visszatér a parancssorba, és nem tudja meghosszabbítani az üzenetet, és az összes adat, amelyet még hozzá kellett fűzni a fájlhoz, elveszett. A probléma sem oldható meg egyszerűen a lemez szabad helyének előzetes ellenőrzésével. Bár a lemezen szabad hely létezik, a legnagyobb összefüggő szabad terület mérete nem volt azonnal nyilvánvaló a lemezkatalógus által bemutatott számok elemzése nélkül, így elkerülheti a felhasználó figyelmét. Ezenkívül szinte minden DFS -felhasználó korábban használt kazettás fájl tárolót , amely nem szenved ettől a hibától. A hajlékonylemezre történő frissítés drága frissítés volt, és megdöbbentő volt, hogy a frissítés figyelmeztetés nélkül adatvesztést okozhat .

Típusok

A fájlrendszer töredezettsége több szinten is előfordulhat:

A fájlok töredezettsége

Az egyes fájlok töredezettsége akkor következik be, ha egyetlen fájlt több részre bontottak ( kiterjesztésen alapuló fájlrendszerekben). Míg a lemezfájl -rendszerek megpróbálják az egyes fájlokat egymás mellett tartani, ez gyakran nem lehetséges jelentős teljesítménybüntetések nélkül. A fájlrendszer -ellenőrző és töredezettségmentesítő eszközök jellemzően csak a "töredezettségi százalék" statisztikájában veszik figyelembe a fájlok töredezettségét.

Szabad tér töredezettsége

A szabad (fel nem osztott) tér töredezettsége akkor következik be, ha a fájlrendszer több fel nem használt területe van, ahová új fájlokat vagy metaadatokat lehet írni. A nem kívánt szabad hely töredezettségét általában a fájlok törlése vagy csonkítása okozza, de a fájlrendszerek szándékosan is beilleszthetnek töredékeket ("buborékokat") a szabad területből, hogy megkönnyítsék a közeli fájlok kiterjesztését (lásd alább a töredezés megakadályozását ).

Fájlszórás

A fájlok szegmentálása, más néven kapcsolódó fájlok töredezettsége, vagy alkalmazásszintű (fájl) töredezettség a referencia lokalizációjának hiányára utal (a tároló közegben) a kapcsolódó fájlok között ( részletesebben lásd a fájlok sorrendjét ). Az előző két típusú töredezettséggel ellentétben a fájlszórás sokkal homályosabb fogalom, mivel nagymértékben függ az egyes alkalmazások hozzáférési mintájától. Ez nagyon megnehezíti az objektív mérést vagy becslést is. Azonban vitathatatlanul ez a töredezettség legkritikusabb típusa, mivel tanulmányok kimutatták, hogy a leggyakrabban hozzáférhető fájlok általában kicsik a rendelkezésre álló lemezenkénti átviteli sebességhez képest.

A kapcsolódó fájlok töredezettségének elkerülése és a referencia lokalizációjának javítása érdekében (ebben az esetben fájlkontiguitásnak nevezzük ) feltételezéseket vagy aktív megfigyeléseket kell tenni az alkalmazások működésével kapcsolatban. Nagyon gyakori feltételezés az, hogy érdemes kisebb fájlokat egyetlen könyvtárban tartani , és a természetes fájlrendszer szerinti sorrendben elhelyezni. Bár ez gyakran ésszerű feltételezés, nem mindig állja meg a helyét. Például egy alkalmazás több különböző fájlt is olvashat, esetleg különböző könyvtárakban, pontosan ugyanabban a sorrendben, ahogy írták. Így egy fájlrendszer, amely egyszerűen rendeli az összes írást egymás után, gyorsabban működhet az adott alkalmazásnál.

Negatív következmények

A fájlrendszerek töredezettsége problémásabb a fogyasztói minőségű merevlemez-meghajtóknál, mivel egyre nagyobb az eltérés a szekvenciális hozzáférési sebesség és a forgási késleltetés (és kisebb mértékben a keresési idő ) között, amelyekre rendszerint a fájlrendszereket helyezik. Így a töredezettség fontos probléma a fájlrendszer kutatásában és tervezésében. A töredezettség visszaszorítása nemcsak a fájlrendszer lemezes formátumától függ, hanem nagymértékben annak megvalósításától is. A fájlrendszer töredezettsége kevésbé befolyásolja a teljesítményt a szilárdtestalapú meghajtókra , mivel nincs mechanikus keresési idő . A fájlrendszernek azonban további metaadatokat kell tárolnia a fájl minden nem szomszédos részére. A metaadatok mindegyike maga foglal helyet, és feldolgozási teljesítményt és processzoridőt igényel. Ha eléri a maximális töredezettségi korlátot, az írási kérések sikertelenek.

Az egyszerű fájlrendszer -benchmarkokban a töredezettségi tényezőt gyakran elhagyják, mivel a reális öregedést és töredezettséget nehéz modellezni. Inkább az összehasonlítás egyszerűsége érdekében a fájlrendszer -referenciaértékeket gyakran üres fájlrendszereken futtatják. Így az eredmények jelentősen eltérhetnek a valós hozzáférési mintáktól.

Enyhítés

Számos technikát fejlesztettek ki a töredezettség leküzdésére. Általában két kategóriába sorolhatók: megelőző és visszamenőleges . A hozzáférési minták előrejelzésének nehézségei miatt ezek a technikák leggyakrabban heurisztikus jellegűek, és váratlan munkaterhelés esetén ronthatják a teljesítményt.

A töredezettség megelőzése

A megelőző technikák megpróbálják minimálisra csökkenteni a töredezettséget, amikor adatokat írnak a lemezre. A legegyszerűbb, ha lehetőség szerint adatokat adunk hozzá egy meglévő töredékhez, ahelyett, hogy új blokkokat rendelnénk hozzá egy új töredékhez.

Sok mai fájlrendszer megpróbálja előzetesen kiosztani a hosszabb darabokat, vagy a különböző szabad térrészekből származó darabokat, amelyeket kiterjesztéseknek neveznek az aktívan hozzáfűzött fájlokhoz. Ez nagymértékben elkerüli a fájlok töredezettségét, ha egyidejűleg több fájlt is hozzáfűznek, így elkerülve azok túlzott összefonódását.

Ha a módosítandó fájl végleges mérete ismert, előfordulhat, hogy a teljes fájl tárhelye előre kiosztásra kerül. Például a Microsoft Windows cserefájlja (oldalfájl) normál működés közben dinamikusan átméretezhető, és ezért töredezetté válhat. Ezt meg lehet akadályozni, ha megadunk egy oldalfájlt, azonos minimális és maximális mérettel, hatékonyan előzetesen kiosztva a teljes fájlt.

A BitTorrent és más peer-to-peer fájlmegosztó alkalmazások korlátozzák a töredezettséget, mivel a letöltések kezdeményezésekor előzetesen kiosztják a fájlhoz szükséges teljes területet .

Egy viszonylag új technika késleltetett lefoglalást az XFS , HFS + és ZFS ; ugyanezt a technikát a reiser4-ben és az ext4 -ben allocate -on-flush-nak is nevezik . A fájlrendszer írásakor a fájlrendszer blokkjai le vannak foglalva, de az egyes fájlok helyét még nem határozták meg. Később, amikor a fájlrendszer memórianyomás vagy tranzakcióvállalás következtében kénytelen a módosításokat leöblíteni, az elosztó sokkal jobban ismeri a fájlok jellemzőit. A legtöbb fájlrendszer ezzel a megközelítéssel megpróbálja egyetlen könyvtárban lévő fájlokat öblíteni. Feltételezve, hogy egyetlen könyvtárból több olvasás gyakori, a referencia lokalizációja javul. A Reiser4 elrendeli a fájlok elrendezését a könyvtár hash táblázata szerint is , így amikor a fájlokat a fájlrendszer természetes sorrendjében érik el (a readdir diktálta szerint ), azok mindig egymás után olvashatók.

Töredezettségmentesítés

A visszamenőleges technikák megpróbálják csökkenteni a töredezettséget vagy a töredezettség negatív hatásait, miután megtörtént. Sok fájl rendszerek töredezettségmentesítés eszközök, amelyek megpróbálják újrarendezésből töredékek fájlokat, és néha azt is csökkentik szórás (azaz javítsák szomszédságban, vagy településen referencia ) tartása akár kisebb fájlokat könyvtárakban , vagy könyvtár fák, vagy akár fájl szekvenciák közel egymást a lemezen.

A HFS Plus fájlrendszer átláthatóan töredezettségmentesíti a 20 MiB -nál kisebb méretű fájlokat, amelyek 8 vagy több töredékre vannak felbontva a fájl megnyitásakor.

A mára elavult Commodore Amiga intelligens fájlrendszer (SFS) töredezettségmentesítette magát a fájlrendszer használata közben. A töredezettségmentesítési folyamat szinte teljesen állapotmentes (eltekintve attól a helytől, ahol dolgozik), így azonnal leállítható és elindítható. A töredezettségmentesítés során az adatok integritása mind a metaadatok, mind a normál adatok számára biztosított.

Lásd még

Megjegyzések

Hivatkozások

További irodalom