„Btrfs“ yra „Copy-on-Write“ (CoW) failų sistema. Dideli failai saugomi keliais duomenų kiekiais; ir kai šie dideli failai modifikuojami, modifikuojami dydžiai nukopijuojami į naujus, tuščius failus kitoje saugojimo įrenginio vietoje ir modifikuojami naujoje vietoje. Tada didelių failų apimtys vėl susiejamos, kad nurodytų atnaujintus. Senieji dydžiai niekada nepašalinami akimirksniu.
Štai kaip „Btrfs“ failų sistemos „Copy-on-Write“ (CoW) funkcija sukelia fragmentaciją. Suskaidymas reiškia, kad didelių failų duomenų apimtys yra išsibarsčiusios visame saugojimo įrenginyje. Jie nėra momentiniai. Taigi, failų sistemos našumas (skaitymo / rašymo greitis) gali būti sumažintas.
Norėdami išspręsti šią problemą, būtina kiekvieną kartą defragmentuoti Btrfs failų sistemą. Šiame straipsnyje parodyta, kaip defragmentuoti „Btrfs“ failų sistemą.
Santrumpos
Šiame straipsnyje vartojamos šios santrumpos (trumposios formos):
- CoW - Kopijuoti rašant
- Btrfs - B medžio failų sistema
- HDD - Kietasis diskas
- SSD - Kietojo kūno diskas
- GB - Gigabaitų
- VM - Virtuali mašina
Būtinos sąlygos
Norėdami išbandyti šiame straipsnyje pateiktus pavyzdžius:
- Savo kompiuteryje turi būti įdiegta „Btrfs“ failų sistema.
- Turite turėti atsarginį HDD / SSD (bet kokio dydžio) arba bent 1 nemokamą HDD / SSD skaidinį (bet kokio dydžio).
Turiu 20 GB HDD SDB mano „Ubuntu“ kompiuteryje. Sukursiu „Btrfs“ failų sistemą HDD SDB.
$ sudo lsblk -e7Pastaba: Jūsų HDD / SSD greičiausiai turės kitokį pavadinimą nei mano, taip pat ir skaidiniai. Taigi, nuo šiol būtinai pakeiskite juos savo.
Galite sukurti „Btrfs“ failų sistemą savo HDD / SSD diske (be skaidymo), jei turite atsarginį HDD / SSD. Taip pat galite sukurti skaidinį savo HDD / SSD ir sukurti „Btrfs“ failų sistemą.
Jei reikia pagalbos diegiant „Btrfs“ failų sistemą „Ubuntu“, peržiūrėkite straipsnį „Btrfs“ diegimas ir naudojimas „Ubuntu 20“.04 LTS.
Jei reikia pagalbos diegiant „Btrfs“ failų sistemą „Fedora“, peržiūrėkite straipsnį „Btrfs“ diegimas ir naudojimas „Fedora 33“.
„Btrfs“ failų sistemos kūrimas
„Btrfs“ failų sistemą galite sukurti savo HDD / SSD diske (nepaskirstytame) arba HDD / SSD skaidinyje.
Norėdami sukurti Btrfs failų sistemą SDB HDD (visas HDD, be skaidinių) ir suteikite jam failų sistemos etiketę duomenis, paleiskite šią komandą:
$ sudo mkfs.btrfs -L duomenys / dev / sdb
Dabar „Btrfs“ failų sistema turėtų būti sukurta SDB HDD.
Sukurkite katalogą / duomenys norėdami prijungti ką tik sukurtą „Btrfs“ failų sistemą naudodami šią komandą:
$ sudo mkdir -v / data
Norėdami prijungti Btrfs failų sistemą, sukurtą SDB HDD / duomenys kataloge, vykdykite šią komandą:
$ sudo mount / dev / sdb / data
Dabar „Btrfs“ failų sistema turėtų būti įdiegta, kaip matote žemiau esančiame ekrano kopijoje:
$ df -h / duomenys
Defragmentuoti „Btrfs“ failų sistemą rankiniu būdu
Kaip matote toliau pateiktoje ekrano kopijoje, aš nukopijavau du failus Btrfs failų sistemoje, sumontuotoje / duomenys katalogas parodyti Btrfs failų sistemos fragmentavimo procesą:
$ ls -lh / duomenys
Galite suskaidyti vieną failą arba visą dalinį tūrį / katalogą rekursyviai.
Norėdami suskaidyti vieną failą / data / ubuntu-20.04.1-live-server-amd64.iso, vykdysime šią komandą:
$ sudo btrfs failų sistemos defragmentas -vf / data / ubuntu-20.04.1-live-server-amd64.iso
Failas / data / ubuntu-20.04.1-live-server-amd64.iso turėtų būti suskaidytas.
Norėdami suskaidyti kiekvieną failą ar katalogą / duomenys kataloge rekursyviai, vykdykite šią komandą:
$ sudo btrfs failų sistemos defragmentas -rvf / duomenys
Kaip matote, visi / duomenys katalogas yra suskaidytas.
Lygiai taip pat, jei turėtumėte apatinį tūrį / duomenys / osimages, tada galėtumėte defragmentuoti visus / duomenys / osimages suburum rekursyviai su šia komanda:
$ sudo btrfs failų sistemos defragmentas -rvf / data / osimages
„Btrfs“ failų sistemos glaudinimas defragmentuojant
„Btrfs“ failų sistema leidžia suspausti failus, kai juos fragmentuojate.
Norėdami suskaidyti visus failus į / duomenys katalogą ir suspauskite juos ZLIB suspaudimo algoritmą tuo pačiu metu, paleiskite defragmentavimo komandą naudodami -czlib parinktį taip:
$ sudo btrfs failų sistemos defragmentas -rvf -czlib / data
Norėdami suskaidyti visus failus į / duomenys katalogą ir suspausti juos ZSTD suspaudimo algoritmą tuo pačiu metu, paleiskite defragmentavimo komandą naudodami -czstd parinktį taip:
$ sudo btrfs failų sistemos defragmentas -rvf -czstd / duomenys
Norėdami suskaidyti visus failus į / duomenys katalogą ir suspauskite juos LZO suspaudimo algoritmą tuo pačiu metu, paleiskite defragmentavimo komandą naudodami -clzo parinktį taip:
$ sudo btrfs failų sistemos defragmentas -rvf -clzo / data
Failai, esantys / duomenys katalogą reikia suskaidyti ir suspausti tuo pačiu metu.
Tokiu pačiu būdu galite suskaidyti ir suspausti „Btrfs“ tūrio failus.
Automatiškai suskaidyti „Btrfs“ failų sistemą
Įjungimo metu galite įjungti automatinį defragmentavimą savo „Btrfs“ failų sistemoje. Ši „Btrfs“ failų sistemos funkcija automatiškai suskaidys visus jūsų „Btrfs“ failų sistemos failus.
Norėdami prijungti Btrfs failų sistemą, sukurtą SDB HDD / duomenys katalogą su įjungtu automatiniu defragmentavimu įkrovos metu, turite pridėti Btrfs failų sistemos įrašą / etc / fstab failą.
Pirmiausia suraskite Btrfs failų sistemos, sukurtos SDB HDD:
$ sudo blkid / dev / sdb
Kaip matote, Btrfs failų sistemos UUID sukurtas SDB HDD yra 60afc092-e0fa-4b65-81fd-5dfd7dd884de.
Jums bus kitaip. Taigi, nuo šiol būtinai pakeiskite jį savo.
Atidaryk / etc / fstab failą su nano teksto redaktorius:
$ sudo nano / etc / fstab
Pridėkite šią eilutę prie pabaigos / etc / fstab failas:
UUID = 60afc092-e0fa-4b65-81fd-5dfd7dd884de / data btrfs autodefrag 0 0
Baigę paspauskite
Kad pakeitimai įsigaliotų, perkraukite kompiuterį naudodami šią komandą:
$ sudo perkrauti
Kaip matote, Btrfs failų sistema sukurta SDB HDD yra sumontuotas ant / duomenys katalogas su automatiniu defragmentavimu.
„Btrfs“ failų sistemos fragmentavimo problemos
Nors gali atrodyti, kad defragmentavimas pagerina failų sistemos našumą, yra keletas problemų, susijusių su „Btrfs“ failų sistemos defragmentavimu.
Kadangi „Btrfs“ yra „Copy-on-Write“ (CoW) failų sistema, kad suprastumėte problemas, susijusias su „Btrfs“ failų sistemos defragmentavimu, turite suprasti „Btrfs“ failų sistemos „Copy-on-Write“ funkciją.
Tarkime, kad turite didelį failą (failas1), kuriame naudojama 100 „Btrfs“ failų sistemos versijų (jas galite laikyti failų blokais). Jei sukursite kitą to didelio failo kopiją (failas2) toje pačioje „Btrfs“ failų sistemoje pamatysite, kad nėra naudojama papildoma vieta diske. Taip yra todėl, kad failai yra identiški, o kiekvieno failo 100 apimčių yra vienodi. Taigi, „Btrfs“ failų sistemoje abiem failams naudojami vienodi mastai.
Figūra 1: failas1 ir failas2 yra identiški ir naudojasi tuo pačiu „Btrfs“ failų sistemos kiekiu, kad sutaupytų vietos diske
Tarkime, jūs pakeitėte vieną iš didelio failo kopijų (failas2). Modifikacija turi pakeisti 10 iš 100 mastų. „Btrfs“ failų sistema nukopijuos reikiamus 10 dydžių kitoje nenaudojamoje vietoje (tarkim,, e101-e110) ir pakeiskite juos. Kai pakeitimai bus įrašyti į diską, „Btrfs“ failų sistema iš naujo susies apimtis, kad pakeitimai atsispindėtų dideliame faile. Procesas parodytas paveikslėlyje:
2 paveikslas: 10 mastai keičiami failas2. Taigi, apimtys yra susietos Btrfs failų sistemoje.
Iš 1 ir 2 paveikslų galite suprasti, kaip veikia „Copy-on-Write“ (CoW) ir kaip „Btrfs“ failų sistema naudoja „Copy-on-Write“ (CoW), kad sutaupytų vietos diske.
Dabar, kai žinote, kaip veikia „Btrfs“ failų sistemos funkcija „Rašyti ant rašymo“ (CoW), suprasite problemas, susijusias su „Btrfs“ failų sistemos defragmentavimu.
- Defragmentuojant failus, perkeliami „Btrfs“ duomenų kiekiai ir bandoma juos sulyginti vieną po kito. Taigi, failo kopijų nuorodos „Copy-on-Write“ nutrūksta. Tai padidins nereikalingus duomenų kiekius, taip pat Btrfs failų sistemos, kuri anksčiau buvo išsaugota dalijantis duomenų apimtis tarp identiškų (arba beveik identiškų) failo kopijų, disko naudojimą.
- Jei „Btrfs“ apimtyje yra kelios momentinės nuotraukos, fragmentuojant fragmentą, bus nutrauktos „Copy on-Write“ nuorodos tarp subtūrio ir momentinių nuotraukų. Tai padidins Btrfs failų sistemos disko naudojimą.
- Jei naudojate „Btrfs“ failų sistemą didelėms duomenų bazėms ar virtualios mašinos vaizdams (VM duomenims / diskams laikyti), failų sistemos defragmentavimas taip pat neigiamai paveiks failų sistemos našumą.
Išvada
Šiame straipsnyje jūs sužinojote, kaip defragmentuoti vieną failą ir failus, esančius kataloge / subtūryje, rekursyviai naudojant Btrfs failų sistemą. Jūs taip pat sužinojote, kaip įjungti automatinį defragmentavimą Btrfs failų sistemoje prijungimo metu. Galiausiai straipsnyje aptartos kelios problemos, susijusios su „Btrfs“ failų sistemos defragmentavimu.