A Btrfs kiterjedés-alapú másolás írásra (CoW) fájlrendszer. A nagyméretű fájlokat több adatmennyiségben tárolják; és amikor ezek a nagyméretű fájlok módosulnak, a módosítandó kiterjesztéseket új, üres kiterjesztésekre másolják a tárolóeszköz másik helyére, és az új helyen módosítják. Ezután a nagyméretű fájlok kiterjedését újból összekapcsolják, hogy a frissített kiterjedésre mutassanak. A régi terjedelmeket soha nem távolítják el azonnal.
A Btrfs fájlrendszer Copy-on-Write (CoW) szolgáltatása így okozza a széttöredezettséget. A töredezettség azt jelenti, hogy a nagy fájlok adatszélessége az egész tárolóeszközön szétszórva található. Nem azonnal. Tehát csökkenhet a fájlrendszer teljesítménye (olvasási / írási sebesség).
A probléma megoldásához időnként töredezettségmentesíteni kell a Btrfs fájlrendszert. Ez a cikk bemutatja a Btrfs fájlrendszer töredezettségmentesítését.
Rövidítések
A cikkben használt rövidítések (rövid formák) a következők:
- Tehén - Másolás írásra
- Btrfs - B-fa fájlrendszer
- HDD - Merevlemez
- SSD - Solid State Drive
- GB - Gigabájt
- VM - Virtuális gép
Előfeltételek
A cikkben található példák kipróbálása:
- Telepítenie kell a Btrfs fájlrendszert a számítógépére.
- Rendelkeznie kell tartalék HDD / SSD-vel (bármilyen méretű) vagy legalább 1 szabad HDD / SSD partícióval (bármilyen méretű).
Van egy 20 GB-os HDD-m sdb az Ubuntu gépemen. Létrehozok egy Btrfs fájlrendszert a HDD-n sdb.
$ sudo lsblk -e7Jegyzet: A HDD / SSD-nek valószínűleg más neve lesz, mint az enyémnek, és a partícióknak is. Tehát mindenképpen cserélje le őket a továbbiakban.
Létrehozhat egy Btrfs fájlrendszert HDD / SSD-jén (particionálás nélkül), ha rendelkezik tartalék HDD / SSD-vel. Létrehozhat egy partíciót a HDD / SSD-n, és ott létrehozhat egy Btrfs fájlrendszert is.
Ha segítségre van szüksége a Btrfs fájlrendszer Ubuntu telepítéséhez, olvassa el a Btrfs telepítése és használata az Ubuntu 20 cikket.04 LTS.
Ha segítségre van szüksége a Btrfs fájlrendszer Fedorában történő telepítéséhez, olvassa el a Btrfs telepítése és használata a Fedora 33 cikket.
Btrfs fájlrendszer létrehozása
Létrehozhat egy Btrfs fájlrendszert HDD / SSD-jén (particionálatlanul) vagy HDD / SSD partícióján.
Btrfs fájlrendszer létrehozása a sdb HDD (teljes HDD, partíciók nélkül), és adja meg a fájlrendszer címkét adat, futtassa a következő parancsot:
$ sudo mkfs.btrfs -L data / dev / sdb
A Btrfs fájlrendszert most létre kell hozni a sdb HDD.
Hozza létre a könyvtárat /adat az imént létrehozott Btrfs fájlrendszer csatlakoztatásához a következő paranccsal:
$ sudo mkdir -v / data
A .re létrehozott Btrfs fájlrendszer csatlakoztatásához sdb HDD a /adat könyvtárba, futtassa a következő parancsot:
$ sudo mount / dev / sdb / data
A Btrfs fájlrendszert most csatlakoztatni kell, amint az az alábbi képernyőképen látható:
$ df -h / adat
A Btrfs fájlrendszer kézi töredezettségmentesítése
Amint az alábbi képernyőképen látható, két fájlt másoltam a Btrfs fájlrendszerre, amely a /adat könyvtár a Btrfs fájlrendszer töredezettségmentesítésének bemutatásához:
$ ls -lh / adat
Rekurzív módon töredezettség nélkül töredezhet egyetlen fájlt vagy egy teljes részmennyiséget / könyvtárat.
Az egyetlen fájl töredezettségmentesítése / data / ubuntu-20.04.1-live-server-amd64.iso, a következő parancsot fogjuk futtatni:
$ sudo btrfs fájlrendszer töredezettségmentesítése -vf / data / ubuntu-20.04.1-live-server-amd64.iso
A fájl / data / ubuntu-20.04.1-live-server-amd64.iso töredezettségmentesíteni kell.
A fájl minden fájljának vagy könyvtárának töredezettségmentesítése /adat rekurzív módon futtassa a következő parancsot:
$ sudo btrfs fájlrendszer töredezettség -rvf / data
Amint láthatja, a /adat könyvtár töredezettségmentesítve vannak.
Ugyanígy, ha megvan az almennyiség / data / osimages, akkor töredezettségmentesítheti a / data / osimages subvolume rekurzív módon a következő paranccsal:
$ sudo btrfs fájlrendszer töredezettség -rvf / data / osimages
Btrfs fájlrendszer tömörítése töredezettségmentesítés közben
A Btrfs fájlrendszer lehetővé teszi a fájlok tömörítését, miközben töredezettségmentesítjük őket.
Az összes fájl töredezettségmentesítése a /adat könyvtárba, és tömörítse őket a ZLIB tömörítési algoritmust, futtassa a töredezettségmentesítés parancsot a -czlib opciót, az alábbiak szerint:
$ sudo btrfs fájlrendszer töredezettség -rvf -czlib / data
Az összes fájl töredezettségmentesítése a /adat könyvtárba, és tömörítse őket a ZSTD tömörítési algoritmust, futtassa a töredezettségmentesítés parancsot a -czstd opciót, az alábbiak szerint:
$ sudo btrfs fájlrendszer töredezettség -rvf -czstd / data
Az összes fájl töredezettségmentesítése a /adat könyvtárba, és tömörítse őket a LZO tömörítési algoritmust, futtassa a töredezettségmentesítés parancsot a -clzo opciót, az alábbiak szerint:
$ sudo btrfs fájlrendszer töredezettség -rvf -clzo / data
A fájlok a /adat a könyvtárat egyszerre kell töredezettségmentesíteni és tömöríteni.
Ugyanígy töredezettségmentesítheti és tömörítheti a Btrfs részmennyiség fájljait is.
A Btrfs fájlrendszer automatikus töredezettségmentesítése
A csatlakoztatáskor engedélyezheti az automatikus töredezettségmentesítést a Btrfs fájlrendszeren. A Btrfs fájlrendszer ezen szolgáltatása automatikusan töredezetté teszi a Btrfs fájlrendszer összes fájlját.
A .re létrehozott Btrfs fájlrendszer csatlakoztatásához sdb HDD a /adat az automatikus töredezettségmentesítés engedélyezve a rendszerindításkor, hozzá kell adnia egy bejegyzést a Btrfs fájlrendszerhez a / etc / fstab fájl.
Először keresse meg a Btrfs fájlrendszer UUID azonosítóját sdb HDD, az alábbiak szerint:
$ sudo blkid / dev / sdb
Amint láthatja, a Btrfs fájlrendszer UUID azonosítója a sdb A HDD az 60afc092-e0fa-4b65-81fd-5dfd7dd884de.
Neked más lesz. Tehát mindenképpen cserélje le mostantól a tiédre.
Nyissa meg a / etc / fstab fájl a nano szövegszerkesztő, az alábbiak szerint:
$ sudo nano / etc / fstab
Adja hozzá a következő sort a / etc / fstab fájl:
UUID = 60afc092-e0fa-4b65-81fd-5dfd7dd884de / data btrfs autodefrag 0 0
Ha végzett, nyomja meg a gombot
A módosítások életbe lépéséhez indítsa újra a számítógépet a következő paranccsal:
$ sudo reboot
Amint láthatja, a Btrfs fájlrendszer a sdb A merevlemez a /adat könyvtár engedélyezve az automatikus töredezettségmentesítéssel.
Btrfs fájlrendszer töredezettségmentesítésével kapcsolatos problémák
Bár úgy tűnik, hogy a töredezettségmentesítés javítja a fájlrendszer teljesítményét, vannak problémák a Btrfs fájlrendszer töredezettségmentesítésével.
Mivel a Btrfs egy másolás írásra (CoW) fájlrendszer, a Btrfs fájlrendszer töredezettségmentesítésével kapcsolatos problémák megértéséhez meg kell értenie a Btrfs fájlrendszer Másolás írásra funkcióját.
Tegyük fel, hogy van egy nagy fájlja (fájl1), amely a Btrfs fájlrendszer 100 kiterjesztését használja (a kiterjesztéseket fájlblokkként is felfoghatja). Ha létrehoz egy másik példányt arról a nagy fájlról (fájl2) ugyanabban a Btrfs fájlrendszerben látni fogja, hogy nincs szükség további lemezterületre. Ez azért van, mert a fájlok azonosak, és az egyes fájlok 100 kiterjedése megegyezik. Tehát a Btrfs fájlrendszer ugyanazt a kiterjedést használja mindkét fájlhoz.
1.ábra: fájl1 és fájl2 a lemezterület megtakarítása érdekében azonosak és ugyanazokkal a Btrfs fájlrendszer kiterjesztésekkel rendelkeznek
Most mondjuk módosította a nagy fájl egyik példányát (fájl2). A módosításnak a 100 méretből 10-et kell megváltoztatnia. A Btrfs fájlrendszer átmásolja a szükséges 10 kiterjesztést egy másik nem használt helyre (mondjuk, e101-e110) a fájlrendszerről, és ott változtassa meg őket. Miután a változtatásokat a lemezre írta, a Btrfs fájlrendszer újra összekapcsolja a kiterjedéseket, hogy a változások a nagy fájlban is megjelenjenek. A folyamatot az alábbi ábra szemlélteti:
2. ábra: 10 mértéke megváltozik fájl2. Tehát a kiterjedéseket újra összekapcsolják a Btrfs fájlrendszerben.
Az 1. és 2. ábra alapján megértheti, hogyan működik a másolás írásra (CoW), és hogyan használja a Btrfs fájlrendszer a másolás írásra (CoW) funkciót a lemezterület mentésére.
Most, hogy tudja, hogyan működik a Btrfs fájlrendszer Copy-on-Write (CoW) szolgáltatása, meg fogja érteni a Btrfs fájlrendszer töredezettségmentesítésével kapcsolatos problémákat.
- A fájlok töredezettségmentesítése áthelyezi a Btrfs adatkiterjedését és megpróbálja egymás után igazítani őket. Tehát a fájlmásolatok közötti hivatkozások megszakadnak. Ez növeli a redundáns adatmennyiséget, valamint a Btrfs fájlrendszer lemezhasználatát, amelyet korábban a fájl azonos (vagy majdnem azonos) másolatai között megosztva mentettek el.
- Ha egy Btrfs résztérfogatnak több pillanatképe van, akkor az almennyiség töredezettségmentesítése megszakítja az almennyiség és a pillanatképek közötti másolás írásra hivatkozásokat. Ez megnöveli a Btrfs fájlrendszer lemezhasználatát.
- Ha a Btrfs fájlrendszert nagy adatbázisokhoz vagy virtuális gép képekhez használja (virtuális gép adatok / lemezek tárolásához), a fájlrendszer töredezettségmentesítése szintén negatívan befolyásolja a fájlrendszer teljesítményét.
Következtetés
Ebben a cikkben megtanulta, hogyan lehet töredezettségmentesíteni egyetlen fájlt és a Btrfs fájlrendszer rekurzív könyvtárában / altérfogatában lévő fájlokat. Azt is megtanulta, hogyan engedélyezheti az automatikus töredezettségmentesítést egy Btrfs fájlrendszeren a csatlakoztatáskor. Végül a cikk megvitatta a Btrfs fájlrendszer töredezettségmentesítésével kapcsolatos néhány problémát.