Tiedostojärjestelmän pirstoutuminen - File system fragmentation

Image
Hajanaisuuden ja sitten eheytyksen visualisointi

In Computing , tiedostojärjestelmä pirstoutumista , jota joskus kutsutaan tiedostojärjestelmä ikääntyminen , on taipumusta tiedostojärjestelmän antaa ulos sisällön tiedostojen epäjatkuvasti jotta paikallaan muuttamista niiden sisällöstä. Se on erityinen tapaus tietojen pirstoutumisesta . Tiedostojärjestelmän pirstoutuminen lisää levyn pään liikettä tai etsii aikaa (missä se soveltuu), joiden tiedetään estävän läpimenoa . Korjaus olemassa olevaan pirstoutumiseen on järjestää tiedostot ja vapauttaa tilaa uudelleen viereisiksi alueiksi, jota kutsutaan eheyttämiseksi .

Tietokoneissa, joissa on SSD-asemat , tiedostojärjestelmän pirstoutuminen on paljon pienempi suorituskykyongelma, koska päitä tai levyjä ei liikuta. Itse asiassa tällaisten asemien eheyttäminen voi hitaasti lyhentää niiden käyttöikää.

Syyt

Kun tiedostojärjestelmä alustetaan ensin osiolle , se sisältää vain muutamia pieniä sisäisiä rakenteita ja on muuten yksi vierekkäinen tyhjän tilan lohko. Tämä tarkoittaa, että tiedostojärjestelmä pystyy sijoittamaan uudet tiedostot mihin tahansa osioon. Jonkin aikaa luomisen jälkeen tiedostot voidaan sijoittaa lähes optimaalisesti. Kun käyttöjärjestelmä ja sovellukset asennetaan tai arkistot puretaan, erillisiä tiedostoja syntyy peräkkäin, joten liittyvät tiedostot sijoitetaan lähelle toisiaan.

Kun olemassa olevat tiedostot poistetaan tai katkaistaan, luodaan uusia alueita vapaata tilaa. Kun olemassa olevia tiedostoja liitetään, on usein mahdotonta jatkaa kirjoittamista täsmälleen siihen kohtaan, jossa tiedosto päättyi, koska siellä voi jo olla toinen tiedosto; siten on jaettava uusi fragmentti. Ajan myötä ja samat tekijät ovat jatkuvasti läsnä, niin vapaalla tilalla kuin usein liitetyillä tiedostoilla on taipumus pirstoutua enemmän. Lyhyemmät vapaan tilan alueet merkitsevät myös sitä, että tiedostojärjestelmä ei enää pysty jakamaan uusia tiedostoja vierekkäin ja joutuu jakamaan ne palasiksi. Tämä pätee erityisesti silloin, kun tiedostojärjestelmä täyttyy ja suuret vierekkäiset vapaat tilat eivät ole käytettävissä.

Esimerkki

Image
Yksinkertaistettu esimerkki siitä, miten vapaata tilaa ja tiedostoja pirstoutuu

Seuraava esimerkki on yksinkertaistettu muuten monimutkaisesta aiheesta. Harkitse seuraavaa skenaariota: Uudelle levylle on tallennettu viisi tiedostoa, nimeltään A, B, C, D ja E, tallennettuina jatkuvasti ja peräkkäin tässä järjestyksessä. Jokainen tiedosto käyttää 10 lohkoa tilaa. (Tässä lohkon koolla ei ole merkitystä.) Loput levytilasta ovat yksi vapaa lohko. Näin ollen voidaan luoda ja tallentaa lisää tiedostoja tiedoston E jälkeen.

Jos tiedosto B poistetaan, luodaan toinen kymmenen lohkon vapaata tilaa sisältävä alue ja levy pirstoutuu. Tyhjä tila jätetään sinne, merkitään ja on käytettävissä myöhempää käyttöä varten ja käytetään sitten uudelleen tarpeen mukaan. Tiedostojärjestelmä voi eheyttää levyn heti poistamisen jälkeen, mutta siitä aiheutuisi ankara suorituskykyrangaistus odottamattomina aikoina.

Nyt uusi tiedosto nimeltä F, joka vaatii seitsemän lohkoa tilaa, voidaan sijoittaa äskettäin vapautetun tilan ensimmäisiin seitsemään lohkoon, jotka aiemmin pitivät tiedostoa B, ja seuraavat kolme lohkoa ovat käytettävissä. Jos lisätään toinen uusi tiedosto nimeltä G, joka tarvitsee vain kolme lohkoa, se voi sitten käyttää tilaa F: n jälkeen ja ennen C: tä.

Jos F on myöhemmin laajennettava, koska heti sen jälkeen oleva tila on varattu, tiedostojärjestelmässä on kolme vaihtoehtoa:

  1. Uuden lohkon lisääminen muualle ja osoitus siitä, että F: llä on toinen aste
  2. Tiedostojen siirtäminen laajennuksen tielle muualle, jotta F pysyy vierekkäisenä
  3. Tiedoston F siirtäminen, jotta se voi olla yksi vierekkäinen, uuden kokoinen tiedosto

Toinen vaihtoehto on luultavasti epäkäytännöllinen suorituskyvyn vuoksi, samoin kuin kolmas, kun tiedosto on erittäin suuri. Kolmas vaihtoehto on mahdoton, kun ei ole yhtä viereistä vapaata tilaa, joka on tarpeeksi suuri uuden tiedoston säilyttämiseksi. Tavanomainen käytäntö on siis yksinkertaisesti luoda laajuus muualle ja ketjuttaa uusi laajuus vanhaan.

Tiedoston F loppuun lisätty materiaali olisi osa samaa laajuutta. Mutta jos materiaalia on niin paljon, että tilaa ei ole käytettävissä viimeisen laajuuden jälkeen, silloin on luotava toinen laajuus ja niin edelleen. Lopulta tiedostojärjestelmässä on ilmaisia ​​segmenttejä monissa paikoissa, ja jotkut tiedostot voivat olla hajautettuja monessa laajuudessa. Näiden tiedostojen (tai kaikkien tiedostojen) käyttöaika voi olla liian pitkä.

Välttämättömyys

Jotkut varhaiset tiedostojärjestelmät eivät pystyneet pirstoutumaan tiedostoja. Yksi tällainen esimerkki oli BBC Micron käyttämä Acorn DFS -tiedostojärjestelmä . Koska virhesanoma ei kykene pirstoutumaan tiedostoja, sitä ei voida laajentaa toisinaan, ja käyttäjä ei usein pysty tallentamaan tiedostoa, vaikka levyllä olisi riittävästi tilaa sille.

DFS käyttää hyvin yksinkertainen levyn rakenne ja tiedostojen päälle levy sijaitsivat vain niiden pituuden ja alkaa sektorilla. Tämä tarkoitti sitä, että kaikkien tiedostojen piti olla olemassa jatkuvana sektorilohkona, eikä pirstoutuminen ollut mahdollista. Käyttämällä yllä olevan taulukon esimerkkiä, yritys laajentaa tiedosto F vaiheessa 5 olisi epäonnistunut sellaisessa järjestelmässä, jossa ei voi laajentaa -virhesanomaa. Riippumatta siitä, kuinka paljon vapaata tilaa levyllä voi olla yhteensä, se ei ollut käytettävissä datatiedoston laajentamiseen.

Standardit virheenkäsittelyn tuolloin olivat alkeellisia ja joka tapauksessa ohjelmissa kuvaksi vähän muistia BBC Micro voisi harvoin varaa tuhlata tilaa yrittää käsitellä virheitä sulavasti. Sen sijaan käyttäjä joutuisi heitetyksi takaisin komentokehotteeseen, jossa ei voi laajentaa viestiä, ja kaikki tiedot, jotka oli vielä liitettävä tiedostoon, menetettäisiin. Ongelmaa ei voida ratkaista tarkistamalla myös levyn vapaa tila etukäteen. Vaikka levyllä voi olla vapaata tilaa, suurimman vierekkäisen vapaan tilan lohkon koko ei tullut heti ilmi ilman, että analysoitiin levyluettelon esittämiä numeroita, joten käyttäjä ei huomaisi sitä. Lisäksi lähes kaikki DFS -käyttäjät olivat aiemmin käyttäneet kasettitiedostojen tallennustilaa , joka ei kärsi tästä virheestä. Päivitys levykkejärjestelmään oli kallis päivitys, ja oli järkyttävää, että päivitys saattaa aiheuttaa tietojen häviämisen ilman varoitusta .

Tyypit

Tiedostojärjestelmän pirstoutuminen voi tapahtua useilla tasoilla:

  • Yksittäisten tiedostojen pirstoutuminen
  • Vapaa tilan pirstoutuminen
  • Viittaussuhteen väheneminen erillisten, mutta liittyvien tiedostojen välillä

Tiedostojen pirstoutuminen

Yksittäiset tiedostot pirstoutuvat, kun yksittäinen tiedosto on jaettu useisiin osiin (joita kutsutaan laajuudeksi laajuuspohjaisissa tiedostojärjestelmissä). Vaikka levytiedostojärjestelmät yrittävät pitää yksittäiset tiedostot vierekkäin, tämä ei usein ole mahdollista ilman merkittäviä suorituskykyrangaistuksia. Tiedostojärjestelmien tarkistus- ja eheytystyökalut ottavat yleensä huomioon vain pirstoutumisen "pirstoutumisprosentti" -tilastoissa.

Vapaa tilan pirstoutuminen

Vapaa (jakamaton) tilan pirstoutuminen tapahtuu, kun tiedostojärjestelmässä on useita käyttämättömiä alueita, joille voidaan kirjoittaa uusia tiedostoja tai metatietoja. Ei -toivotut vapaan tilan pirstoutumiset johtuvat yleensä tiedostojen poistamisesta tai katkaisemisesta, mutta tiedostojärjestelmät voivat myös tarkoituksellisesti lisätä fragmentteja ("kuplia") vapaata tilaa läheisten tiedostojen laajentamisen helpottamiseksi (katso pirstoutumisen estäminen alla).

Tiedostojen sironta

Tiedostojen segmentointi, jota kutsutaan myös liittyvien tiedostojen pirstoutumiseksi tai sovellustason (tiedoston) pirstoutumiseksi, viittaa siihen, että viittaussijaintia (tallennusvälineessä) ei ole liittyvien tiedostojen välillä (katso lisätietoja tiedostojärjestyksestä ). Toisin kuin kaksi edellistä pirstoutumistyyppiä, tiedostojen hajauttaminen on paljon epämääräisempi käsite, koska se riippuu suuresti tiettyjen sovellusten käyttömallista. Tämä tekee myös objektiivisen mittaamisen tai arvioinnin erittäin vaikeaksi. Se on kuitenkin epäilemättä kaikkein kriittisin pirstoutumistyyppi, koska tutkimukset ovat osoittaneet, että useimmin käytetyt tiedostot ovat yleensä pieniä verrattuna käytettävissä olevaan levynsiirtoon sekunnissa.

Jotta vältetään tiedostojen pirstoutuminen ja parannetaan viittauksen paikannusta (tässä tapauksessa sitä kutsutaan tiedoston vierekkäisyydeksi ), sovellusten toiminnasta on tehtävä oletuksia tai aktiivisia havaintoja. Hyvin usein oletetaan, että pienet tiedostot kannattaa säilyttää yhdessä hakemistossa ja järjestää ne luonnolliseen tiedostojärjestykseen. Vaikka se on usein järkevä oletus, se ei aina pidä paikkaansa. Esimerkiksi sovellus voi lukea useita eri tiedostoja, ehkä eri hakemistoja, täsmälleen samassa järjestyksessä kuin ne on kirjoitettu. Näin ollen tiedostojärjestelmä, joka yksinkertaisesti tilaa kaikki kirjoitukset peräkkäin, saattaa toimia nopeammin tietyssä sovelluksessa.

Negatiiviset seuraukset

Tiedostojärjestelmien pirstoutuminen on ongelmallisempaa kuluttajatason kiintolevyasemilla, koska peräkkäisen käyttönopeuden ja pyörimisviiveen (ja vähäisemmässä määrin etsintäajassa ) välillä on yhä suurempi ero , johon tiedostojärjestelmät yleensä sijoitetaan. Hajanaisuus on siten tärkeä ongelma tiedostojärjestelmien tutkimuksessa ja suunnittelussa. Hajanaisuuden estäminen ei riipu pelkästään tiedostojärjestelmän levytilasta, vaan myös suuresti sen toteutuksesta. Tiedostojärjestelmän pirstoutumisella on vähemmän suorituskykyvaikutuksia SSD-asemiin , koska siihen ei liity mekaanista hakuaikaa . Tiedostojärjestelmän on kuitenkin tallennettava ylimääräisiä metatietoja jokaiselle tiedoston vierekkäiselle osalle. Jokainen metatieto pala vie tilaa ja vaatii prosessointitehoa ja prosessoriaikaa. Jos pirstoutumisen enimmäisraja saavutetaan, kirjoituspyynnöt epäonnistuvat.

Yksinkertaisissa tiedostojärjestelmien vertailuarvoissa pirstoutumistekijä jätetään usein pois, koska realistista ikääntymistä ja pirstoutumista on vaikea mallintaa. Vertailun yksinkertaisuuden vuoksi tiedostojärjestelmien vertailuarvot suoritetaan usein tyhjillä tiedostojärjestelmillä. Siten tulokset voivat poiketa suuresti tosielämän käyttömalleista.

Lieventäminen

Hajanaisuuden torjumiseksi on kehitetty useita tekniikoita. Ne voidaan yleensä luokitella kahteen luokkaan: ennaltaehkäisevät ja taannehtivat . Pääsymallien ennustamisen vaikeuden vuoksi nämä tekniikat ovat useimmiten heuristisia ja voivat heikentää suorituskykyä odottamattomissa työkuormissa.

Hajanaisuuden estäminen

Ennaltaehkäisevillä tekniikoilla yritetään pitää pirstoutuminen mahdollisimman vähäisenä, kun tietoja kirjoitetaan levylle. Yksinkertaisin tapa on liittää tietoja olemassa olevaan fragmenttiin mahdollisuuksien mukaan sen sijaan, että kohdennettaisiin uusia lohkoja uudelle osalle.

Monet nykyisistä tiedostojärjestelmistä yrittävät kohdistaa etukäteen pidempiä paloja tai palasia erilaisista vapaista tilapaloista, joita kutsutaan laajennetuiksi tiedostoiksi, joihin on aktiivisesti liitetty. Tällä vältetään suurelta osin tiedostojen pirstoutuminen, kun useita tiedostoja liitetään samanaikaisesti, jolloin vältetään niiden liiallinen kietoutuminen toisiinsa.

Jos muutettavan tiedoston lopullinen koko tiedetään, koko tiedoston tallennustila voidaan jakaa uudelleen. Esimerkiksi Microsoft Windowsin vaihtotiedoston (sivutiedoston) kokoa voidaan muuttaa dynaamisesti normaalikäytössä, ja siksi se voi olla erittäin pirstoutunut. Tämä voidaan estää määrittämällä sivutiedosto, jolla on samat vähimmäis- ja enimmäiskoot, kohdistamalla tehokkaasti koko tiedosto.

BitTorrent ja muut vertaisarvioidut tiedostojako- sovellukset rajoittavat pirstoutumista jakamalla etukäteen koko tiedoston, joka tarvitaan latausta aloitettaessa .

Suhteellisen tuoreempi tekniikka on viivästyneen jako vuonna XFS , HFS + ja ZFS ; samaa tekniikkaa kutsutaan myös allocate-on-flush reiser4: ssä ja ext4: ssä . Kun tiedostojärjestelmää kirjoitetaan, tiedostojärjestelmälohkot varataan, mutta tiettyjen tiedostojen sijainteja ei ole vielä määritetty. Myöhemmin, kun tiedostojärjestelmä on pakko huuhdella muutokset muistipaineen tai tapahtumakomission seurauksena, varaaja tuntee paljon paremmin tiedostojen ominaisuudet. Useimmat tätä lähestymistapaa käyttävät tiedostojärjestelmät yrittävät huuhdella tiedostoja yhdessä hakemistossa vierekkäin. Jos oletetaan, että useat lukemat yhdestä hakemistosta ovat yleisiä, vertailukohdetta parannetaan. Reiser4 myös tilauksia ulkoasu tiedostot mukaan hakemistoon tiiviste , niin että, kun tiedostoja voidaan lukea luonnollisessa tiedostojärjestelmä järjestyksessä (sanelee readdir ), ne ovat aina lukea peräkkäin.

Eheytys

Takautuvilla tekniikoilla yritetään vähentää pirstoutumista tai pirstoutumisen kielteisiä vaikutuksia sen tapahtumisen jälkeen. Monet tiedostojärjestelmät tarjoavat eheytystyökaluja , jotka yrittävät järjestää tiedostojen osia uudelleen ja joskus myös vähentää niiden hajontaa (eli parantaa niiden läheisyyttä tai viittauspaikkaa ) pitämällä joko pienempiä tiedostoja hakemistossa tai hakemistopuita tai jopa tiedostojärjestyksiä lähellä toisiaan levyllä.

HFS Plus tiedostojärjestelmää läpinäkyvästi eheyttää tiedostoja, jotka ovat alle 20 MiB kooltaan ja on jaettu 8 tai useampia fragmentteja, kun tiedosto avataan.

Nyt vanhentunut Commodore Amiga Smart File System (SFS) eheytti itsensä tiedostojärjestelmän käytön aikana. Eheytysprosessi on lähes täysin valtioton (lukuun ottamatta sijaintia, jossa se toimii), joten se voidaan pysäyttää ja käynnistää heti. Eheytyksen aikana tietojen eheys varmistetaan sekä metatiedoille että normaalitiedoille.

Katso myös

Huomautuksia

Viitteet

Lue lisää