Btrfs

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Btrfs and the translation is 100% complete.

A btrfs egy copy-on-write, CoW fájlrendszer Linux számára, amelynek célja a fejlett funkciók megvalósítása, miközben a hibatűrésre, az öngyógyító tulajdonságokra és az egyszerű adminisztrációra összpontosít. Az Oracle, a Red Hat, a Fujitsu, az Intel, a SUSE, a STRATO és még sokan mások által közösen kifejlesztett btrfs a GPL licence alatt áll, és bárki hozzájárulását a fejlesztésben és a használatban szívesen fogadja.

Jellemzők

Az EXT4 biztonságos és stabil, és nagy kiterjedésű fájlrendszereket is képes kezelni, de miért váltana Ön át a btrfs fájlrendszerre? Bár igaz, hogy a btrfs még mindig kísérleti jellegű, és egyre stabilabb, egyre közeledik az az idő, amikor a btrfs lesz a linuxos rendszerek alapértelmezett fájlrendszere. Egyes Linux disztribúciók a jelenlegi kiadásukkal már elkezdtek rá átváltani. A btrfs számos, a ZFS fájlrendszerhez hasonló fejlett funkcióval rendelkezik, ami miatt a ZFS fájlrendszer népszerű a BSD disztribúciók és a NAS eszközök körében.

  • Copy on Write (CoW) és pillanatkép készítés a fájlrendszerről - Fájdalommentessé teszi a növekményes biztonsági mentések készítését még egy "forró" fájlrendszerről vagy virtuális gépről (VM) is.
  • Fájlrendszerszintű ellenőrzőösszeg (checksums) készítés - Az egyes fájlok metaadatai egy ellenőrző összeget tartalmaznak, amely a hibák észlelésére és javítására szolgál.
  • Tömörítés - A fájlok menet közben tömöríthetők és kicsomagolhatók, ami felgyorsítja az olvasási teljesítményt.
  • Automatikus töredezettségmentesítés - A fájlrendszert használat közben egy háttérfolyamat kezeli.
  • Alkötetek - A fájlrendszerek megoszthatnak egyetlen tárterületet ahelyett, hogy saját partícióikba helyeznék őket.
  • RAID - A btrfs fájlrendszernek saját RAID megvalósítása van, tehát nem kell külön a LVM vagy mdadm megléte, hogy RAID lehetőséget kapjunk. Jelenleg a RAID 0, 1 és 10 vannak támogatva. A RAID 5 és 6 ezen cikk pillanatában még instabilnak tekinthető.
  • A partíciók opcionálisak - Bár a btrfs képes partíciókkal dolgozni, további lehetőséget nyújt a nyers (formázatlan) eszközök (/dev/<device>) közvetlen használatára is.
  • Az adatduplikálás elkerülése - Korlátozottan létezik benne az adatduplikálás elkerülése (deduplication) lehetőség. Az adatduplikálás elkerülésének lehetősége azonban végül a btrfs szabványos szolgáltatásává válik. Ez lehetővé teszi a btrfs számára, hogy helyet takarítson meg azáltal, hogy a fájlokat bináris diff-eken keresztül hasonlítja össze.
  • Kvóták - A btrfs kvótatámogatást kínál, amely lehetővé teszi az alkötetek kvóták szerinti csoportosítását.
Tip
A szolgáltatások naprakész listájáért tekintse meg az upstream állapotoldalát. Fontos tudni, hogy a cikk írásának pillanatában nem minden funkció elég kiforrott a széles körű használathoz.

A rendszerünkbe újonnan felfűzött fájlrendszerek azonnal kihasználják a btrf copy on write tulajdonságával. Valamint egyéb speciális funkcióit is használni tudják az objektumtárolóik. A Ceph egy példa a felfűzött fájlrendszerre, amely nagyon ígéretesnek tűnik, és képes kihasználni a btrfs előnyeit.

Warning
A btrfs állítólag egy stabil és jól tesztelt egylemezes fájlrendszer és az ext4 lecserélésére is alkalmas, de óvatosság javasolt olyan fejlett funkciók használatakor, mint a btrfs-raid.[1]

Figyelmeztetések

A btrfs intuitív módon meghiúsíthatja a fájlrendszer műveleteit az ENOSPC-vel, amikor a df szabad hely létezéséről ad jelentést a belső töredezettség miatt (a DATA + SYSTEM darabkái által rögzített szabad terület, de szükséges a metaadat-darabokban).

Ezenkívül egyetlen 4K méretű hivatkozás 128M-re a btrf-eken belül szabad területet okozhat, de nem érhető el a hely allokációjákor. Ez azt is okozhatja, hogy a btrfs ENOSPC-t ad vissza, amikor szabad helyet jelent a df.

A sys-fs/btrfsmaintenance telepítése és a szkriptek rendszeres futásának beállítása csökkentheti az ENOSPC-problémák lehetőségét a btrfs újraegyensúlyozásával, de nem szünteti meg az ENOSPC kockázatát, ha van szabad hely. egyes munkaterhelések soha nem érik el az ENOSPC-t, míg mások igen. Ha az ENOSPC kockázata a termelésben elfogadhatatlan, használjon mást. A btrfs használata esetén mindenképpen kerülje el azokat a konfigurációkat, amelyekről ismert, hogy problémák vannak.

Az ENOSPC kivételével a btrfs-ben a legfrissebb kernelágakban előforduló problémákkal kapcsolatos információk a btrfs állapotoldalán érhetők el.

Telepítés

Kernel

Aktiválja a következő kernelbeállítást azért, hogy a btrfs támogatás engedélyezésbe legyen:

KERNEL Activate Btrfs in the kernel
File systems  --->
    <*> Btrfs filesystem

Emerge

A sys-fs/btrfs-progs programcsomag tartalmazza a btrfs fájlrendszerrel való munkához szükséges segédprogramokat. A telepítés érekében futtassa a következőt:

root #emerge --ask sys-fs/btrfs-progs

Használat

Tip
Fontolja meg a sys-fs/btrfsmaintenance beállítását a rendszeres kiegyensúlyozás, töredezettségmentesítés, trimming és scrubbing kezelésének érekében.

A hosszú btrfs parancsok beírása gyorsan gondot okozhat. Minden parancs (a kezdeti btrfs parancson kívül) egy nagyon rövid utasításkészletre redukálható. Ez a módszer akkor hasznos, ha parancssorból dolgozik azért, hogy csökkentse a beírt karakterek számát.

Például a / fájlrendszer töredezettségmentesítéshez a következő parancsot kell kiadni a hosszú formájában:

root #btrfs filesystem defragment -v /

Rövidítse le a btrfs parancs utáni hosszabb parancsokat egyedi, legrövidebb előtagjukra redukálva. Ebben az összefüggésben az egyedi azt jelenti, hogy egyetlen egyéb btrfs parancs sem egyezik meg a parancs legrövidebb hosszúságú parancsával. A fenti parancs rövidített változata:

root #btrfs fi de -v /

Egyetlen másik btrfs parancs sem kezdődik fi-vel, ezért a filesystem az egyetlen. Ugyanez vonatkozik a de alparancsra az filesystem alatt is.

Létrehozás

Warning
A mkfs.btrfs parancs visszafordíthatatlanul megsemmisíti a formázni kívánt partíció tartalmát. Tehát a formázás előtt ott tárolt összes adat el fog veszni! Győződjön meg róla, hogy a megfelelő meghajtót és partíciót választotta ki, mielőtt bármilyen mkfs parancsot futtatna!

Egy btrfs fájlrendszer létrehozásához a /dev/sdxn partíción:

root #mkfs.btrfs /dev/sdXN

A fenti példában cserélje ki az N betűt a partíció számára. Az X betűt pedig a formázni kívánt lemezbetűjelre cserélje ki. Például a rendszerünk első fizikai lemezmeghajtójának harmadik partícióját így lehet leformázni a btrfs segédprogram segítségével:

root #mkfs.btrfs /dev/sda3
Important
Az /etc/fstab utolsó számoszlopának 0 számnak kell lennie minden btrfs partíciónál. Az fsck.btrfs és a btrfsck parancsokat nem szabad minden rendszerindításkor futtatni.

Címkék

Hozzáadhatók címkék a btrfs fájlrendszerekhez, ezáltal megkönnyítve a rendszerünkre történő fájlrendszer felcsatolását és a rendszerezését.

Note
A címkével történő megjelölések általában kevésbé egyediek, mint az UUID azonosítóval történő megjelölések, de a címkézési megjelölés (például a / számára a rootfs címke, és a /home számára a homedir címke) segíthet az ember számára átláthatóbb rendszerezésben.
Warning
Ha egy rendszeren több azonos címkével ellátott rendszer található, akkor az fstab első címkézett rendszere vagy az blkid által elsőnek visszaadott rendszer lesz csatolva. Ezt a viselkedésmódot ne használjuk, kerüljük el. Helyette egyedi címkéket használjunk.

Címkék hozzáadhatók a btrfs fájlrendszerhez, miután azt a következő használatával létrehozták:

root #btrfs filesystem label /dev/sda1 rootfs

Címkék hozzáadhatók, amikor a btrfs fájlrendszert a következővel hozzuk létre:

root #mkfs.btrfs -L rootfs /dev/sda1

Felcsatolás

Létrehozása után a fájlrendszerek többféle módon csatolhatók fel a rendszerünkbe:

  • mount - Manual mount.
  • /etc/fstab - Defining mount points in /etc/fstab enables automatic mounts on system boot.
  • Removable media - Automatic mounts on demand (useful for USB drives).
  • AutoFS - Automatic mount on filesystem access.

Az ext* alapú fájlrendszerek átalakítása btrfs-re

Az ext2, ext3 és ext4 fájlrendszerek átkonvertálhatók btrfs formátumba a btrfs-convert segédprogrammal.

A következő utasítások csak a leválasztott fájlrendszerek konvertálását támogatják. A gyökérpartíció konvertálásához indítsa el a rendszert egy rendszermentő lemezről (a SystemRescueCD szépen működik), és futtassa a konverziós parancsokat a gyökérpartíción.

Először győződjön meg arról, hogy a csatolási pont nincs felcsatolva:

root #umount <mounted_device>

Ellenőrizze a fájlrendszer integritását a megfelelő fsck eszközzel. A következő példában a fájlrendszer ext4:

root #fsck.ext4 -f <unmounted_device>

A btrfs-convert használatával konvertálja át az ext* formátumú eszközt btrfs formátumú eszközzé:

root #btrfs-convert <unmounted_device>

Ügyeljen arra, hogy az eszköz sikeres átalakítása után írja át az /etc/fstab fájlban található fájlrendszer oszlopot ext4-ről btrfs-re:

FILE /etc/fstabChanging ext4 to btrfs
<device>   <mountpoint>  btrfs  defaults  0 0

Töredezettségmentesítés

A btrfs másik jellemzője az online, működő rendszeren történő töredezettségmentesítés. A gyökér btrfs fájlrendszer töredezettségmentesítéséhez futtassa:

root #btrfs filesystem defragment -r -v /

Az autodefrag felcsatolási beállítás az alapértelmezett viselkedést az online töredezettségmentesítésre állítja be.

Warning
A töredezettségmentesítés a kernel < 3.9, vagy ≥ 3.14-rc2, valamint a 3.10.31, ≥ 3.12.12 ≥ 3.13.4 Linux-stabil verzióit használva, felszaggatja a fájlok és azok COW másolatai közötti ref-hivatkozásokat[2]. Ezáltal jelentősen megnövelheti a helyhasználatot. Ügyeljen arra, hogy elegendő szabad hely álljon rendelkezésre, és ne legyen túl sok pillanatkép a meghajtón, mivel a teljes btrfs partíciók nagyon lelassulhatnak.

Tömörítés

A btrfs támogatja az átlátható tömörítést a zlib, lzo és zstd (v5.1.0)[3] tömörítési algoritmusok használatával.

A fájlattribútumok használata által lehetőségünk van az előre megadott fájltípusok tömörítésére fájlrendszer szinten:

user $chattr +c

A compress felcsatolási opció beállítja az alapértelmezett viselkedést az összes újonnan létrehozott fájl tömörítésére. A teljes fájlrendszer újratömörítéséhez lzo tömörítéssel futtassa a következő parancsot:

root #btrfs filesystem defragment -r -v -clzo /

a processzor és a lemez teljesítményétől függően az lzo-tömörítés javíthatja az általános átviteli sebességet.

Az lzo alternatívájaként lehetőség van a zlib vagy a zstd tömörítési algoritmus használatára. A zlib lassabb, de nagyobb a tömörítési aránya, míg a zstd jó arányú, valahol a kettő között helyezkedik el e téren[4].

A zlib tömörítés kényszerítése az egész fájlrendszerben:

root #btrfs filesystem defragment -r -v -czlib /

A zstd tömörítés aktiválásához a fenti példában cserélje ki a zstd-t a zlib helyett.

Tömörítési szint

A kernel 4.15.0-s verziója óta[5] a zlib tömörítés immár 1 és 9 szintek között állítható. A kernel 5.1.0 verziója óta a zstd 1és 15 szint között állítható. Például a zlib maximális tömörítésének beállításához a felcsatoláskor:

root #mount -o compress=zlib:9 /dev/sdXY /path/to/btrfs/mountpoint

Vagy a minimális tömörítési szint beállítása:

root #mount -o compress=zlib:1 /dev/sdXY /path/to/btrfs/mountpoint

Vagy állítsa be a tömörítést az újbóli felcsatolás által:

root #mount -o remount,compress=zlib:3 /path/to/btrfs/mountpoint

A tömörítési szintnek láthatónak kell lennie a /proc/mounts fájlban, vagy a legutóbbi dmesg kimenet ellenőrzésével a következő paranccsal:

root #dmesg | grep -i btrfs
[    0.495284] Btrfs loaded, crc32c=crc32c-intel
[ 3010.727383] BTRFS: device label My Passport devid 1 transid 31 /dev/sdd1
[ 3111.930960] BTRFS info (device sdd1): disk space caching is enabled
[ 3111.930973] BTRFS info (device sdd1): has skinny extents
[ 9428.918325] BTRFS info (device sdd1): use zlib compression, level 3

Az fstab beállítása a tömörítést illetően

Miután egy meghajtót újra felcsatolt vagy beállította az adatok tömörítésére, feltétlenül adja hozzá a megfelelő módosításokat az /etc/fstab fájlhoz. Ebben a példában a zstd tömörítés 9-es szintre van beállítva a felcsatoláskor:

FILE /etc/fstabAdd Btrfs compression for zstd
/dev/sdb                /srv            btrfs           compress=zstd:9,relatime,rw     0 0

Tömörítési arány és lemezhasználat

A szokásos felhasználói térben lévő programok melyek a szabad terület meghatározására szolgálnak, mint például a du és a df, pontatlan eredményeket adhatnak a btrfs partíciókon, mivel a fájlok írásmódjában rejlő tervezési különbségek vannak. Például az ext2/3/4-hez képest[6].

Ezért tanácsos a btrfs számára a felhasználói tér eszközei által biztosított du/df alternatíváját a btrfs filesystem nevű programot használni. Ezenkívül a sys-fs/compsize csomagban található compsize eszköz hasznos lehet további információkkal kapcsolatban a tömörítési arányokkal és a tömörített fájlok lemezhasználatával kapcsolatban. Az alábbiakban példákat mutatunk be ezeknek az eszközöknek a /media/drive alá felcsatolt btrfs partícióhoz való használatára.

user $btrfs filesystem du -s /media/drive
     Total   Exclusive  Set shared  Filename
 848.12GiB   848.12GiB       0.00B  /media/drive/
user $btrfs filesystem df /media/drive
Data, single: total=846.00GiB, used=845.61GiB
System, DUP: total=8.00MiB, used=112.00KiB
Metadata, DUP: total=2.00GiB, used=904.30MiB
GlobalReserve, single: total=512.00MiB, used=0.00B
user $compsize /media/drive
Processed 2262 files, 112115 regular extents (112115 refs), 174 inline.
Type       Perc     Disk Usage   Uncompressed Referenced  
TOTAL       99%      845G         848G         848G       
none       100%      844G         844G         844G       
zlib        16%      532M         3.2G         3.2G 

Több eszköz használata (RAID)

A btrfs több blokkeszközzel is használható RAID-ek létrehozásához. A btrfs használata több eszközre kiterjedő fájlrendszerek létrehozására sokkal egyszerűbb, mint az mdadm használatával, mivel a létrehozáshoz nincs szükség inicializálási időre.

A btrfs külön kezeli az adatokat és a metaadatokat. Ezt fontos szem előtt tartani, ha több eszközből álló fájlrendszert használunk. Lehetőség van külön profilok használatára adat- és metaadatblokk-csoportokhoz. Például a metaadatok több eszközön is konfigurálhatók a RAID1-ben, míg az adatok RAID5-re. Ez a profil három vagy több blokkeszköz használatakor lehetséges, mivel a RAID5-höz minimum 3 blokkeszköz szükséges.

Ez a profiltípus a metaadatok redundanciáját kínálja az egyes eszközökön, az adatok csíkozását pedig az eszközök között, ami növeli az olvasási sebességet. Ennek a profilnak a hátránya, hogy a szükségesnél több helyet használnak a metaadatokhoz, és az adatblokkok írási sebessége csökken, mivel a RAID5 paritásbitet használ.

Létrehozás

A legegyszerűbb módszer a partícionálatlan blokkeszközök teljes felhasználása több eszközre kiterjedő fájlrendszer létrehozására. Például egy fájlrendszer létrehozásához RAID1 módban két eszközön:

root #mkfs.btrfs -m raid1 <device1> <device2> -d raid1 <device1> <device2>

Átalakítás

A RAID profilok közötti konvertálás a balance alparancs segítségével lehetséges. Mondjuk például, hogy három blokkeszköz van jelenleg konfigurálva a RAID1-hez, és a /srv könyvtárba vannak felcsatolva a fájlrendszerünkben. A profilban lévő adatokat RAID1-ről RAID5-re a következő paranccsal konvertálhatja át:

root #btrfs balance start -dconvert=raid5 --force /srv

A konvertálás akkor is végrehajtható, amikor a fájlrendszer elérhető módban (online módban) és használatban van. A btrf-ben lehetséges RAID módok közé tartozik a RAID0, RAID1, RAID5, RAID6 és RAID10. További információkért tekintse meg az upstream btrfs wiki oldalt.

Warning
Jelenleg nem biztonságos a RAID 5 vagy RAID 6 mód használata[7]. A RAID 5 és RAID 6 módban néhány javítás[8] történt a Linux 4.12 verziójában, de az általános állapot továbbra is instabilként van megjelölve[9][10]. Azoknak a felhasználóknak, akik a btrf RAID 5 vagy RAID 6 funkcióját szeretnék használni, javasoljuk, hogy a módok használata előtt ellenőrizzék a btrfs állapotoldalt az említett módok stabilitásának állapotáról.

Hozzáadás lehetősége

További eszközök adhatók hozzá a meglévő többeszközös fájlrendszerekhez. Kövesse az alábbi eltávolítási részt.

Az eszköz eltávolításának kockázatosabb (de még így is úgymond viszonylag biztonságosabb), egyben gyorsabb alternatívája a rendszer leállítása (vagy ha a rendszer támogatja az üzem közben cserélhető meghajtókat, legalább a fájlrendszer leválasztása), a cserélendő eszköz fizikai leválasztása és eltávolítása. Csatlakoztassa az új eszközt a helyére, majd kapcsolja be a rendszert (ha szükséges).

Megjegyzés: Azon rendszereken, amelyek kikapcsolásra kerülnek, a többeszközös fájlrendszer csatlakoztatása sikertelen lesz, mivel egy eszközt fizikailag eltávolítottak a készletből.

A rendszer elindítása után csatlakoztassa a több eszközt használó fájlrendszert a mount -odegraded paranccsal, majd hajtsa végre a következő lépéseket egy új eszköz hozzáadásához.

root #mount -odegraded /srv
root #btrfs device add --force /dev/sdd /srv

Az eszköz újbóli hozzáadása után újra ki kell egyensúlyozni a fájlrendszert, hogy megbizonyosodjon arról, hogy az adatok átfedik az újonnan hozzáadott eszközt:

root #btrfs balance start /srv

Eltávolítás

Eszközútvonal szerint

A blokkeszközök (lemezek) eltávolíthatók a többeszközös fájlrendszerekből a btrfs device remove alparancs segítségével:

root #btrfs device remove /dev/sde /srv
Device ID (eszközazonosító) szerint

Használja a usage alparancsot az eszközazonosítók meghatározásához:

root #btrfs device usage /srv
/dev/sdb, ID: 3
   Device size:             1.82TiB
   Device slack:              0.00B
   Data,RAID1:             25.00GiB
   Data,RAID5:            497.00GiB
   Data,RAID5:              5.00GiB
   Metadata,RAID5:         17.00GiB
   Metadata,RAID5:        352.00MiB
   System,RAID5:           32.00MiB
   Unallocated:             1.29TiB
 
/dev/sdc, ID: 1
   Device size:             1.82TiB
   Device slack:              0.00B
   Data,RAID1:             25.00GiB
   Data,RAID5:            497.00GiB
   Data,RAID5:              5.00GiB
   Metadata,RAID5:         17.00GiB
   Metadata,RAID5:        352.00MiB
   System,RAID5:           32.00MiB
   Unallocated:             1.29TiB
 
/dev/sdd, ID: 4
   Device size:             1.82TiB
   Device slack:              0.00B
   Data,RAID1:             25.00GiB
   Data,RAID5:            497.00GiB
   Data,RAID5:              5.00GiB
   Metadata,RAID5:         17.00GiB
   Metadata,RAID5:        352.00MiB
   System,RAID5:           32.00MiB
   Unallocated:             1.29TiB
 
/dev/sde, ID: 5
   Device size:               0.00B
   Device slack:              0.00B
   Data,RAID1:             75.00GiB
   Data,RAID5:              5.00GiB
   Metadata,RAID5:        352.00MiB
   Unallocated:             1.74TiB

Ezután használja az eszközazonosítót az eszköz eltávolításához. Ebben az esetben a /dev/sde el lesz távolítva:

root #btrfs device remove 5 /srv

Átméretezés

A btrfs partíciók online (tehát működés közben) átméretezhetők a beépített resize alparancs segítségével.

Note
Ez nem befolyásolja magának a partíciónak a méretét, csak a fájlrendszert.

Állítsa be a gyökér-fájlrendszer méretét 128 GB-ra:

root #btrfs filesystem resize 128g /

Adjunk hozzá 50 gigabájt helyet a gyökér-fájlrendszerhez:

root #btrfs filesystem resize +50g /

A parancs az összes rendelkezésre álló helyet is kitöltheti:

root #btrfs filesystem resize max /

Alkötetek

Ahogy fentebb a szolgáltatások listájában említettük, a btrfs alköteteket is létrehozhat. Az alkötetek felhasználhatók az adatok jobb rendszerezésére és kezelésére. Különösen erőssé válnak, ha pillanatfelvételekkel kombinálják. Fontos különbséget kell tenni a btrfs alkötetek és a logikai kötetkezelés (Logical Volume Management, LVM) által létrehozott alkötetek között. A btrfs alkötetek nem blokk szintű eszközök, hanem POSIX fájlnévterek [11]. A fájlrendszer bármely helyén létrehozhatók, és a rendszer bármely más könyvtárához hasonlóan működnek, egyetlen különbséggel: Az alkötetek fel és lecsatolhatók. Az alkötetek egymásba ágyazhatók (az alkötetek más alköteteken belül is létrehozhatók), és könnyen létrehozhatók vagy eltávolíthatók.

Note
Az alkötet nem hozható létre különböző btrfs fájlrendszereken keresztül. Ha a /dev/sda és /dev/sdb különálló (nem RAID elrendezésű) btrfs fájlrendszert tartalmaz, akkor az alkötet nem tudja kiterjedni a két fájlrendszerre. A pillanatkép áthelyezhető egyik fájlrendszerről a másikra, de nem ívelheti át a kettőt. A /dev/sda vagy a /dev/sdb könyvtárban kell lennie.

Létrehozás

Az alkötet létrehozásához adja ki a következő parancsot a btrfs fájlrendszer névterében:

root #btrfs subvolume create <dest-name>

Cserélje ki a <dest-name> elemet a kívánt cél és alkötet nevére. Például, ha egy btrfs fájlrendszer létezik a /mnt/btrfs könyvtárban, akkor egy alkötet hozható létre benne a következő paranccsal:

root #btrfs subvolume create /mnt/btrfs/subvolume1

Lista

A létrehozott részkötet(ek) megtekintéséhez használja a subvolume list parancsot, majd írja be a btrfs fájlrendszer helyét. Ha az aktuális könyvtár valahol egy btrfs fájlrendszeren belül van, akkor a következő parancs megjeleníti a fájlrendszerben létező alkötete(ke)t:

root #btrfs subvolume list .

Ha a fenti példaparancsban létrehozott csatolási pontban létezik egy alkötetekkel rendelkező btrfs fájlrendszer, akkor a list parancs kimenete a következőhöz hasonlóan fog kinézni:

root #btrfs subvolume list /mnt/btrfs
ID 309 gen 102913 top level 5 path mnt/btrfs/subvolume1

Eltávolítás

A btrfs fájlrendszerben elérhető összes alkötet elérési út a fenti list paranccsal látható.

Az alkötetek megfelelően eltávolíthatók az subvolume delete paranccsal, majd az alkötet elérési útjával:

root #btrfs subvolume delete <subvolume-path>

A fentiek szerint cserélje ki az <subvolume-path> elemet az eltávolítandó részkötet tényleges elérési útjára. A fenti példákban használt alkötet törléséhez a következő parancsot kell kiadni:

root #btrfs subvolume delete /mnt/btrfs/subvolume1
Delete subvolume (no-commit): '/mnt/btrfs/subvolume1'

Pillanatképek

A pillanatképek olyan alkötetek, amelyek adatokat és metaadatokat osztanak meg más alkötetekkel. Ezt a btrfs copy on write (CoW) képessége teszi lehetővé.[11] A pillanatképek többféle célra használhatók, ezek egyike a fájlrendszer-struktúrák biztonsági mentése adott időpontokban.

Ha a gyökér (root) fájlrendszer btrfs, akkor lehetőség van pillanatkép létrehozására a subvolume snapshot parancsokkal:

root #mkdir -p /mnt/backup/rootfs
root #btrfs subvolume snapshot / /mnt/backup/rootfs/

A következő kis parancssori szkript hozzáadható egy időzített cron-feladathoz, hogy egy btrfs fájlrendszertípusú gyökérfájlrendszeről időbélyegzett pillanatképet készítsen biztonsági mentés gyanánt. Az időbélyegek a felhasználó által preferált időpillanathoz állíthatók.

FILE btrfs_snapshot.shBtrfs rootfs snapshot cron job example
#!/bin/bash
NOW=$(date +"%Y-%m-%d_%H:%M:%S")
 
if [ ! -e /mnt/backup ]; then
mkdir -p /mnt/backup
fi
 
cd /
/sbin/btrfs subvolume snapshot / "/mnt/backup/backup_${NOW}"

Felcsatolás a fájlrendszerbe

Az alkötet más helyre is felszerelhető, mint ahol létrehozták, vagy a felhasználók dönthetnek úgy, hogy egyáltalán nem csatolják fel őket a futó fájlrendszerbe. Például a felhasználó létrehozhat egy btrfs fájlrendszert az /mnt/btrfs mappában, és létrehozhat /mnt/btrfs/home és /mnt/btrfs/gentoo-repo alköteteket. Az alkötetek ezután felcsatolhatók a /home és a /var/db/repos/gentoo könyvtárba, az eredeti legfelső szintű alkötet pedig csatolatlanul hagyva. Ez olyan konfigurációt eredményez, amelyben az alkötetek relatív elérési útja a legfelső szintű részkötettől eltér a tényleges elérési útjuktól.

Alkötet csatlakoztatásához hajtsa végre a következő parancsot, ahol a <rel-path> az alkötet relatív elérési útja a legfelső szintű alkötettől, amely a subvolume list paranccsal érhető el:

root #mount -o subvol=<rel-path> <device> <mountpoint>

Hasonlóan a fájlrendszer lap frissíthető egy btrfs alkötet csatlakoztatásához:

FILE /etc/fstabMounting Subvolumes
<device>  <mountpoint>  btrfs  subvol=<rel-path>  0 2

Hibaelhárítás

Fájlrendszer ellenőrzése

Hibás lemez vagy sérült adatok esetén szükséges lehet a fájlrendszer-ellenőrzés futtatása. A fájlrendszer-ellenőrző parancsokat általában az fsck. előtag kezeli, a btrfs fájlrendszerek esetén viszont az ellenőrzéseket a btrfs check alparancs kezeli:

root #btrfs check --progress /dev/<device>
Note
Az egyszerre több fizikai adattároló eszköz használatán alapuló fájlrendszer (RAID) ellenőrzése úgy történik, hogy a fájlrendszer bármelyik egyedi fizikai eszközét átadjuk a btrfs ellenőrzőnek. Amíg az összes eszköz elérhető, addig az ellenőrzés futtatható.

Az egyszerre több fizikai adattároló eszköz használatán alapuló fájlrendszer (RAID) felcsatolása (mount-olása) meghiúsul

Miután egy vagy több eszközt durva módon eltávolított egy többeszközös fájlrendszerből, a fájlrendszer csatlakoztatási kísérlete sikertelen lesz:

root #mnt /srv
mount: /srv: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.

Az ilyen típusú csatlakoztatási hibákat az okozhatja, hogy egy vagy több fizikailag egyedi adattároló eszköz hiányzik a több fizikai eszközös fájlrendszerből. A hiányzó fizikai adattároló eszközök a filesystem show alparancs segítségével észlelhetők. A következő példában a /dev/sdb az egyik egyedi fizikai adattároló eszköz, amely még mindig csatlakozik a többeszközös fájlrendszerhez (tehát a RAID tömbhöz):

root #btrfs filesystem show /dev/sdb
Label: none  uuid: 9e7e9824-d66b-4a9c-a05c-c4245accabe99
        Total devices 5 FS bytes used 2.50TiB
        devid    1 size 1.82TiB used 817.03GiB path /dev/sdc
        devid    3 size 1.82TiB used 817.00GiB path /dev/sdb
        devid    5 size 10.91TiB used 2.53TiB path /dev/sde
        devid    6 size 10.91TiB used 2.53TiB path /dev/sdd
        *** Some devices missing

A hiányzó adattároló eszközt a következő paranccsal erőszakkal ki lehet dobni a fájlrendszerből:

root #btrfs device delete missing /srv
Warning
Ha a többeszközös fájlrendszer RAID 0 módban van, akkor adatvesztés következik be!

Virtuális számítógép lemezképeivel használva

Ha a btrfs-t virtuális gép lemezképeivel használja, a legjobb, ha letiltja a copy-on-write funkciót a lemezképeken az Input/Output teljesítményének felgyorsítása érdekében. Ez csak az újonnan létrehozott fájlokon hajtható végre. A CoW letiltása egy bizonyos könyvtárban létrehozott összes fájlnál is lehetséges. Például a chattr paranccsal:

root #chattr +C /var/lib/libvirt/images

A szabad területen lévő gyorsítótár törlése

Lehetséges a btrfs szabad gyorsítótárának ürítése a fájlrendszer felcsatolásával a clear_cache mount opcióval. Például:

root #mount -o clear_cache /path/to/device /path/to/mountpoint

Btrfs hogging memória (lemez gyorsítótár)

A btrfs néhány speciális képességének kihasználásakor (például sok --reflink másolat készítése vagy nagy mennyiségű pillanatkép létrehozása) sok memóriát emészthet fel, és nem szabadul fel elég gyorsan a kernel inode gyorsítótára. Ez a probléma felderítetlen maradhat, mivel előfordulhat, hogy a lemez gyorsítótárának fenntartott memória nem látható egyértelműen a hagyományos rendszerfigyelő segédprogramokban. A slabtop segédprogram (amely a sys-process/procps csomag részeként érhető el) kifejezetten annak meghatározására szolgál, hogy a kernelobjektumok mennyi memóriát fogyasztanak:

root #slabtop
Active / Total Objects (% used)    : 5011373 / 5052626 (99.2%)
Active / Total Slabs (% used)      : 1158843 / 1158843 (100.0%)
Active / Total Caches (% used)     : 103 / 220 (46.8%)
Active / Total Size (% used)       : 3874182.66K / 3881148.34K (99.8%)
Minimum / Average / Maximum Object : 0.02K / 0.77K / 4096.00K
 
OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
2974761 2974485  99%    1.10K 991587        3   3966348K btrfs_inode
1501479 1496052  99%    0.19K  71499       21    285996K dentry

Ha az inode gyorsítótár túl sok memóriát fogyaszt, a kernel manuálisan utasítható a gyorsítótár eldobására úgy, hogy egy egész számot visszhangoz a /proc/sys/vm/drop_caches fájlba[12].

A biztonság érdekében, és segít a kernelnek meghatározni a felszabaduló memória maximális mennyiségét, az alábbi echo parancsok futtatása előtt futtasson sync parancsot:

user $sync

Legtöbbször a btrfs felhasználók valószínűleg echo 2 -t akarnak majd csak a slab objektumok (dentries és btrfs_inodes) visszaszerzésére:

root #echo 2 > /proc/sys/vm/drop_caches

A teljes lemezgyorsítótár törlése érdekében (slab objektumok és az oldal gyorsítótár) használja inkább a echo 3 parancsot:

root #echo 3 > /proc/sys/vm/drop_caches
Warning
Míg a fenti parancsok nem roncsolóak (amíg a sync befejeződött a futtatás előtt), de átmenetileg erősen belassíthatják a rendszert, miközben a kernel csak a szükséges elemeket tölti vissza a memóriába. Gondolja át kétszer, mielőtt futtatná a fenti parancsokat nagy terhelés alatt álló rendszereken!

A kernel táblákkal kapcsolatos további információk ebben a dedoimedo blogbejegyzésben találhatók.

A btrfs felcsatolása a fájlrendszerbe sikertelen, a mount parancs visszatérése: Unknown filesystem type 'btrfs'

Tim eredeti megoldása a Stack Exchange weboldalon a következő megoldást ihlette: a genkernel használata helyett manuálisan készítse el a kernelt:

#cd /usr/src/linux
#make menuconfig
#make && make modules_install
#cp arch/x86_64/boot/bzImage /boot
#mv /boot/bzImage /boot/whatever_kernel_filename
#genkernel --install initramfs

A btrfs gyökér (root) nem boot-ol

Az alábbi paranccsal létrehozott genkernel initramfs nem tölti be a btrfs-t:

root #genkernel --btrfs initramfs

Fordítsa le a btrfs támogatását a rendszermagban, ne pedig modulként, vagy használja a Dracut parancsot az initramfs generálásához.

További olvasnivaló a témában

  • Btrfs/snapshots — script to make automatic snapshots with Btrfs filesystem, using btrfs subvolume list-new function to create snapshots only when files have changed, so as to create fewer snapshots.
  • Btrfs/System Root Guide — one example for re-basing a Gentoo installation's root filesystem to use btrfs
  • Btrfs/Native System Root Guide — alternative guide on using a subvolume in a Btrfs filesystem as the system's root
  • Ext4 — an open source disk filesystem and most recent version of the extended series of filesystems.
  • Btrbk — a tool for creating incremental snapshots and remote backups of Btrfs subvolumes.
  • Samba shadow copies — expose Shadow Copies as 'Previous Versions' to Windows clients.
  • Snapper — a command-line program to create and manage filesystem snapshots, allowing viewing or reversion of changes.
  • ZFS — a next generation filesystem created by Matthew Ahrens and Jeff Bonwick.

Külső források

Hivatkozások