Bog bos Btrfs sistem de fișiere

COW - noi și a schimbat datele sunt scrise la un loc gol, nu suprascrierea date vechi. La fiecare 30 de secunde (comite) generează în mod automat noul sistem de fișiere rădăcină ca un punct de derulare înapoi în cazul unor defecțiuni sau erori, astfel încât pierderea de date nu trebuie să depășească 30 de secunde (a se vedea. Nobarrier de mai jos). În acest caz, numărul de generare de curent (generație) crește cu 1. COW permite înregistrarea de date (nu doar metadate), fără dublarea volumului de înregistrări (mai precis o tranzacție de schimbare de date atomice). Acesta poate fi dezactivat (recomandat pentru baze de date și imagini de discuri virtuale - în caz contrar acestea sunt fragmentate într-un milion de bucăți), cu montaj (nodatacow) sau pe bază per-file ( „filename chattr + C“).

Comanda cp este cheia „--reflink [= întotdeauna]“, care vă permite să copiați fișiere fără a mări spațiul de disc utilizat pentru a schimba copia.

Există o utilitate defragmentarea în fundal (kernel 3.0). Defragmentirovanie sistem de fișiere cu imagini, și poate multiplica reflink locul ocupat (până la 3.9).

Nu există nici o contorizează numărul de fișiere (care nu lucrează „df -I“), și spațiu de rezervă pentru inode.

de stocare a datelor (extensiile implicit de granulare 4KiB, maxim - 128 KiB).

Built-in capacitatea de a face fotografii (instantanee, un instantaneu), în numai citire modul (utilizarea noatime!) Și fără nicio restricție (versiune alternativă), înainte. poze. Modul poate fi schimbat "on the fly". Imaginea nu poate încetini. Există, de asemenea, un subvolum (subarbori), cu posibilitatea unui mount separat. Tom (imagini) formează o ierarhie. Subtema sau instantaneu de volum (sau subvolum) arata ca un director regulat în volumul de nivel superior (nu poate fi eliminat până când ștergeți un instantaneu sau subvolum). Puteți declara instantaneu subvolum rădăcină sau implicit punctul de montare. La montarea pot fi specificate în mod explicit sau subvolum rădăcină instantaneu al sistemului de fișiere rădăcină montat. Trecerea de la o subvolum pe de altă parte - este o mișcare reală de pe disc pe disc, dar spațiul este alocat dintr-un fond comun (bucată). Imagini partaja spațiul folosit pentru aceleași fișiere din volumul sursă și celălalt dintre imaginile sale. Pentru a elibera instantaneul nu este recomandat să aibă la nivel superior nu este altceva decât cataloage subvolume și instantanee, și edita subiecte secundare, mai degrabă decât rădăcină. Acest lucru va permite, dacă este necesar, montați în loc instantaneu subvolum, și cum să-l ștergeți.

Creare, stocarea și verificarea checksum datelor (poate fi oprit, și în măsura în blocuri) și metadate (crc32c, 256 biți rezervat pentru metadate și 4KiB pentru date). Valoarea corectă poate fi luată din al doilea exemplar; o valoare incorectă este corectată de la versiunea. anterior ar putea doar copia și șterge un fișier.

algoritmi de compresie a datelor folosind LZO și zlib (nivelul 3), poekstentnaya granulare (chei sau „chattr + c“ înainte de înregistrare mount), ținând seama de compresibilitatea și fără. Promisă vioi și LZ4. Pentru persoane cu handicap pentru intrare directă / ieșire (DirectIO, DIO) și NOCOW. Compresia se face nu prin pagina (4 KiB), întregi extensii (128 KiB) pentru a citi octeți necesar pentru a decomprima întreaga măsură, și pentru a schimba octeți în mijlocul măsura, este necesar să se rescrie totul. zlib în regim de curgere cu un vocabular comun în măsura în care, LZO comprimă fiecare pagină (?) separat. Testarea la nivel de compresie în întregul pachet de date (16.2 TB):
  • Btrfs zlib-forță - 2,69
  • gzip -1-2.81
  • gzip -9-2.92
  • xz -1-3.35
  • XZ --lzma2 = presetat = 9, dict = 200MiB, frumos = 273-3.97

proces de fundal de scanare pe bază de bloc (numai blocuri ocupate) și corectarea (kernel 3.1).

Verificarea structurii (fsck) până la starea razmontirovannolm (promisiune în fundal).

Contingentele locul ocupat subvolum (poza) - nici un utilizator sau grup de utilizatori. cotele de ierarhie.

Suport pentru sincronizarea cu oglinda de la distanță (trimite, primi).

Promisă deduplicare în timpul înregistrării, există acum un deduplicare după înregistrare
  • duperemove. nucleu poekstentno 3,13 (Btrfs-măsură-aceeași ioctl), a încercat în RHEL 7.0: Nu știu dacă locul este salvat, dar timpul de pokorozheno modificare fișier, în ciuda modul „doar pentru citire“ cum să combine cu imaginile în mod clar. Am adunat câteva statistici
  • bedup. per-fișier bază, kernel-ul 3.3 sau 3.6 pentru deduplicare peste volume, Python 2.7, și „unul mai“ sistem de ambalare - nu a încercat

/ Sys / fs / Btrfs (kernel 3.14).

Cheile mkfs.btrfs (create instantaneu la RHEL 7 nu verifică faptul că site-ul este ocupat):
  • --date
  • --metadate
  • --octet-conta dimensiunea sistemului de fișiere # încă un loc pe dispozitivul de bloc
  • --Alloc-start-compensare Start-sistem de fișiere # 0
  • --forță # nu acorde atenție, că locul ocupat de
  • --bytes nodesize dimensiune # metadate bloc; la kernel-ul 3.4 nu poate fi diferită de dimensiunea paginii cu 3.4 kernel - la 64KiB; Valoarea implicită este egală cu dimensiunea paginii de memorie, versiunea 3.12 utilități și kernel 3.4-16,384 (cu Btrfs-show-super-BIG_METADATA dă lista de steaguri incompatibile de bază 3.10); Trebuie să fie un multiplu al dimensiunii sectorului, nu mai mult de 65536; în cazul în care dimensiunea fișierului este mai mică decât leafsize-148, datele se potrivesc între metadate
  • --leafsize # este neactualizat, utilizați --nodesize
  • --sectorsize bytes implicit # - dimensiunea paginii (4KiB); nu ar trebui să fie mai mică decât blocul fizic; unitate de alocare gratuită spațiu pentru zona de date
  • --# bucăți mix mixt (bucată) de date și metadate pentru sistemele de fișiere mici
  • --Eticheta de # la 256 octeți
  • --nodiscard # Nu utilizați TRIM și Renunțați
  • --Caracteristici opțiune # poate fi o problemă cu nuclee mai vechi, lista completă poate fi obținută „mkfs.btrfs -O lista tuturor“
    • mixt-bg # --mixed?
    • extref # implicit versiunea 3.12 utilități, până la 65.536 de trimiteri la un inode într-un director (acesta a fost mai mică de 350 atunci când frunzele în 4KiB) kernel 3.7
    • raid56
    • slab-metadate # kernel 3.9, utilitatea implicit 3,18; scurtat dimensiunea metadatelor (format diferit pe disc) - 30% din dimensiunea arborelui extensii
    • Nu există găuri # kernel 3.14, 3.18.1 utilități; un alt format pe disc
    • big_metadata # kernel 3.4, nodesize mai multă memorie dimensiunea paginii
opțiunea de montare (ca un dispozitiv pentru a indica unul din dispozitiv bloc, opțiuni cu / fără pereche nucleu în no- 3.14):
  • degradate (permite montarea sistemului de fișiere, în cazul defectării unuia dintre dispozitiv bloc)
  • recuperare (3.2 nucleu, recuperarea automată de la scanare anterioară rădăcini adecvate)
  • rescan_uuid_tree (kernel 3.12)
  • subvol = subvolum name (subramificație montare; nucleu la 3,2 db radical subvolum)
  • subvolid = identificatorul subvolum (subramificații montaj, identificatorul rădăcină este 5)
  • device = dispozitiv (scanare dispozitiv în căutare de volum Btrfs;! numai pentru lista de scanare toate dispozitivele din / etc / fstab, în ​​cazul în care initrd, nu îndeplinește „scanare dispozitiv Btrfs“)
  • nodatasum (pentru noi fișiere, nu manipulează checksum pentru date)
  • nodatacow (pentru noi fișiere; accelerare - 5% pentru operațiuni succesive, o accelerare semnificativă atunci când se lucrează cu baze de date, de asemenea, de compresie cu handicap și calcul de control)
  • nobarrier (eventual distrugerea întregului sistem de fișiere, și fsck primitivă; multidisc numărat cu nuclee 3.2)
  • max_inline = octeți (dimensiunea maximă a datelor încorporate direct în metadate, implicit de 8192, pentru pagini de 4k = 3900)
  • alloc_start = (începe alocarea de spațiu pe disc?)
  • thread_pool = numărul de fluxuri paralele (implicit - min (număr de miezuri + 2.8) este necesară pentru a crește atunci când se utilizează compresia)
  • comprima [= zlib | = LZO | = no] (LZO kernel 2.6.39; nici un nucleu 3.6)
  • comprima-forță [= zlib | = LZO] (chiar comprima fișiere plohoszhimaemye)
  • SSD (? optimizare a blocurilor de alocare SSD - o singură dată pentru toate dispozitivele verifică automat / sys / bloc / * / coada / rotație; TRIM trebuie să fie incluse separat)
  • ssd_spread (încercarea de a aloca bucăți mari, duce la fragmentare sporită)
  • se debaraseze (problema TRIM / comanda se debaraseze la blocuri de eliberare SATA lent până la 3,1, dar în schimb, pot fi utilizate periodic fstrim)
  • noacl
  • notreelog (în reviste de teorie de lemn reduce numărul de operații ale înregistrărilor de metadate cu Fsync, dar în practică, fără mari viteze de scriere de fișiere aleatoare de până la 5 ori pentru nucleele înainte de 3.0.2, în cazul în care programul sa bazat pe Fsync, aceasta poate fi o problemă)
  • flushoncommit (după finalizarea tuturor operațiunilor în curs de a efectua blocuri de alocare incluse în noile nuclee implicite)
  • metadata_ratio = 8 (alocarea de spațiu pe date și metadate a fost () sunt fixe și în cazul în care un loc în metadatele peste, și sub date - nu, a fost necesar pentru a pune un număr de mai mic ,? trebuie să ia în considerare gradul de compresie)
  • space_cache (bitmap de stocare de spațiu liber (fără COW și control), cu 2.6.37, lucrări instabile din RHEL7, kernel 3.10)
  • clear_cache (dacă este utilizat anterior space_cache și doresc să scape de ea cu 2.6.37)
  • nospace_cache (3.2 kernel; calcula spațiu bitmap atunci când montarea)
  • enospc_debug (imprimare de depanare problemă atunci când are loc un eveniment, o „lipsă de spațiu pe dispozitiv“, este recomandat să nu vă încetinească)
  • user_subvol_rm_allowed (pentru a permite utilizatorilor să elimine subvolum cu kernel 2.6.37)
  • autodefrag (Start defragmentarea nu este compatibil cu baza de date de mare și imagini de mașini virtuale cu 3.0)
  • inode_cache (cache inod liber, de la 3.0, nu este recomandată până când ajunge la numărul de inode 2 ^ 64; un comportament obișnuit - adăugați 1 pentru fiecare fișier nou nu este utilizat inod re-utilizat
  • check_int, check_int_data, check_int_print_mask = Masca (kernel 3.3, verificați metadatele din zbor, încetinește, utilizat pentru depanare numai)
  • comite = secunde (30; nucleu 3.12; cache reset înregistrare interval pe disc și formează un „punct de derulare înapoi“, în cazul unor defecțiuni și erori)
  • fatal_errors = (3,4 nucleu; hrean ridiche nu mai dulce)
  • skip_balance (3.3 kernel-ul, nu reînnoiască echilibrare)

Nu este nevoie pentru a rula fsck pentru a provoca în / etc / fstab, stabilit la sfârșitul „0 0“ linie.

Asamblare și instalare Btrfs 3.18.1 utilități din pachetele sursă din CentOS 7.0:
  • instala pachete kernel-devel, libblkid-devel, libuuid-devel
  • wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/linux/updates/20/SRPMS/btrfs-progs-3.18.1-1.fc20.src.rpm
  • rpm -IV /tmp/btrfs-progs-3.18.1-1.fc20.src.rpm
  • yum install asciidoc
  • tar -xvf /root/rpmbuild/SOURCES/btrfs-progs-v3.18.1.tar.xz
  • cd Btrfs-progs-v3.18.1
  • Vim utils.c # /root/rpmbuild/SOURCES/btrfs-init-dev-list.patch
  • make install
  • / Usr / local / bin / Btrfs --version
utilități Btrfs clădire din git:
  • instala pachete kernel-devel, libblkid-devel, libuuid-devel
  • git git clona: //git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git
  • cd Btrfs-progs
  • face
  • face Btrfs-select-super-
  • face Btrfs zero-log

Btrfs-convertit - transformativ sistem de fișiere ext2 / ext3 / Ext4 la Btrfs la fața locului.

Btrfs-debug-tree - arborele de metadate concluzii privind stdout ( "-r" produce o subvolum listă, imagini, etc.).

Btrfs-find-root - căutare (lent) și ieșirea rădăcinilor arborilor (generare nivel filtru).

Btrfs-imagine - pentru a face o imagine de sistem de fișiere cu date adus la zero (comprima și trimite dezvoltatorilor pentru depanare).

Btrfs-show-super - informații de afișare superblocul (generație etichetă, rădăcină, steaguri, mărimea blocului, etc.).

btrfstune - schimba unele dintre parametrii de sistem de fișiere, date prin imprudență la creație.

Btrfs zero-log - log pentru sursa clar codecul Xvid copac, în cazul în care nu se poate monta sistemul de fișiere (relevanță este pierdut).