Sistem de fișiere XFS pentru începători. XFS - sistemul de fișiere al viitorului

XFS- sistem de fișiere de jurnalizare dezvoltat de Silicon Graphics, dar acum lansat sursa deschisa(sursa deschisa).

Informații oficiale pe http://oss.sgi.com/projects/xfs/

XFS a fost creat la începutul anilor 90 (1992-1993) de Silicon Grapgics (acum SGI) pentru computerele multimedia care rulează Irix OS. Sistemul de fișiere a fost destinat fișierelor și sistemelor de fișiere foarte mari. O caracteristică a acestui sistem de fișiere este dispozitivul jurnal - o parte din metadatele sistemului de fișiere în sine sunt scrise în jurnal în așa fel încât întregul proces de recuperare se reduce la copierea acestor date din jurnal în sistemul de fișiere. Dimensiunea jurnalului este setată la crearea sistemului trebuie să fie de cel puțin 32 de megaocteți; și nu aveți nevoie de mai mult - este greu să obțineți un astfel de număr de tranzacții neînchise.

Câteva caracteristici:

    Funcționează mai eficient cu fișiere mari.

    Are capacitatea de a muta jurnalul pe alt disc pentru a îmbunătăți performanța.

    Salvează datele din memoria cache numai atunci când memoria este plină, și nu periodic ca celelalte.

    Sunt înregistrate doar metadatele.

    Se folosesc arbori B+.

    Utilizează înregistrarea logică

11.6.4 sistem de fișiere rfs

RFS (RaiserFS)- sistem de fișiere de jurnalizare dezvoltat de Namesys.

Informații oficiale pe RaiserFS

Câteva caracteristici:

    Funcționează mai eficient cu un număr mare de fișiere mici în ceea ce privește performanța și eficiența utilizării spatiu pe disc.

    Utilizează arborele echilibrat b* special optimizat (o versiune îmbunătățită a arborelui B+)

    Alocă dinamic i-noduri în loc de un set static al acestora creat la crearea unui sistem de fișiere „tradițional”.

    Dimensiunile blocurilor dinamice.

11.6.4 sistem de fișiere jfs

JFS (sistem de fișiere jurnalizate) - un sistem de fișiere de jurnalizare dezvoltat de IBM pentru sistemul de operare AIX, dar acum lansat ca sursă deschisă.

Informații oficiale pe Tehnologia sistemului de fișiere jurnal pentru Linux

Câteva caracteristici:

    Jurnalele JFS urmează modelul clasic de tranzacție a bazei de date

    Sunt înregistrate doar metadatele

    Dimensiunea jurnalului nu depășește 32 de megaocteți.

    Mod de înregistrare asincronă - efectuat când traficul I/O scade

    Se folosește înregistrarea logică.

11.7 Tabel de comparație a unor sisteme de fișiere moderne

Stocarea informațiilor despre fișier

Dimensiunea maxima secțiune

16 EB (2 60)

4 gigablocuri (deoarece blocurile sunt dinamice)

Dimensiunile blocurilor

de la 512 octeți la 64 KB

1 KB - 4 KB

Până la 64 KB (fix în prezent 4 KB)

de la 512 octeți la 64 KB

512/1024/2048/4096 octeți

Numărul maxim de blocuri

Dimensiunea maximă a fișierului

16 TB (pentru blocuri de 4 KB)

4 PB (2 50)

Lungimea maximă a numelui fișierului

Logare

Gestionare gratuită a blocurilor

Bazat pe bitmap

Arborii B indexați după offset și dimensiune

Tree+ Binary Buddy

Extinderi pentru spatiu liber

Arborele B pentru articolele de director

Ca un subarboresc al arborelui principal al sistemului de fișiere

B-trees pentru adresarea blocurilor de fișiere

În interiorul arborelui principal al sistemului de fișiere

Extinderi pentru adresarea blocurilor de fișiere

Da (din versiunea 4)

Date din interiorul inodului (fișiere mici)

Date de legătură simbolică în inode

Intrări de director în interiorul inodelor (directoare mici)

Alocare dinamică inod/MFT

Structuri pentru gestionarea inodurilor alocate dinamic

General B*arbore

B+arborele cu regiuni de inoduri contigue

Suport rar pentru fișiere

Sistemul de fișiere XFS oferă performanțe excelente atunci când lucrați cu fișiere mari și a fost proiectat inițial pentru utilizare pe discuri mari. Dezavantajul acestui sistem a fost considerat a fi performanța insuficientă pe un număr mare de fișiere mici. Cu toate acestea, patch-urile recente realizate de dezvoltatorii sistemului XFS elimină acest dezavantajși crește viteza de lucru cu fișiere mici la nivelul sistemelor de fișiere ext4 și ReiserFS.

Unul dintre avantajele XFS este prezența unui defragmentator standard (indiferent ce spun ei, dar atunci când copiați fișiere mari și uriașe, defragmentarea poate reduce semnificativ viteza).

Un set de utilitare pentru gestionarea sistemului de fișiere XFS se numește xfsprogs. Să luăm în considerare ce oportunități de optimizare oferă aceste utilități.

Vizualizați informații despre locația fișierului

Pentru a stoca fișiere, XFS alocă spațiu sub formă de așa-numite extensii. De obicei, atunci când un fișier este copiat în sistemul de fișiere, acesta ocupă o măsură. Dar în cazul în care fișierul este modificat și mărit în dimensiune, iar spațiul de după fișier este deja ocupat, conținutul fișierului poate fi plasat în mai multe măsuri. La fel, la copiere dosar mare nu există suficientă întindere.

În funcție de utilizare, fișierele de pe XFS pot deveni destul de fragmentate.

Pentru a vizualiza o hartă a extinderilor în care este stocat un fișier, utilizați următoarea comandă:

Xfs_bmap -v /media/video/football_cup_1993.avi

Iese aproximativ următoarea informație:

/media/video/football_cup_1993.avi: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: : 18748384..19010399 0 (18748384..19010399) 262016 1.627.474 3665088.. 253927231 ) 262144 2: : 767587184..768111471 2 (249482928..250007215) 524288 3: : 738171688..738171688..73921.201.73920 104857) 6 4: : 880928368..882928575 3 (103771984..105772191) 2000208

După cum puteți vedea, fișierul /media/video/football_cup_1993.avi este localizat în cinci dimensiuni.

Defragmentați XFS

Pentru a reorganiza locația fișierelor (defragmentare), utilizați comanda xfs_fsr. Poate fi folosit atat pentru intreaga sectiune cat si pentru dosar separat. Pentru a efectua defragmentarea, partiția trebuie să aibă suficient spatiu liber pentru a copia orice fișier. Când operațiunea se încheie, fiecare fișier va ocupa o măsură.

Pentru a defragmenta întreaga partiție, utilizați comanda:

Xfs_fsr -v /dev/<раздел>

Defragmentarea unui fișier individual se realizează cu comanda:

Xfs_fsr -v<имя файла>

opțiunea -v imprimă informații suplimentare.

Verificarea gradului de fragmentare XFS

Informații despre fragmentarea partiției pot fi obținute cu comanda:

Xfs_db -r -c frag /dev/<раздел>

Opțiunea -r este necesară pentru a verifica partiția în care este montată și utilizată acest moment. Opțiunea -c frag este necesară direct pentru a afișa informații despre fragmentarea unei partiții.

Sistemul de operare Linux acceptă o cantitate mare diverse tipuri de sisteme de fișiere. Din punct de vedere fișier Linux sistemele pot fi împărțite în patru grupe:

  • Sisteme de fișiere „native”. Aceasta înseamnă că sistemul de fișiere acceptă toate atributele caracteristice Linux: drepturi de acces, marcaje temporale, informații despre proprietarul fișierului etc.;
  • Sisteme de fișiere non-native. Adică, sisteme de fișiere care nu acceptă atribute Linux;
  • Virtual. Acestea sunt sisteme de fișiere care nu au suport fizic;
  • Sisteme de fișiere în rețea.

Sistemele de fișiere „native” includ:

  • reiserfs

sistem de fișiere ext2

Ext2 este unul dintre primele sisteme de fișiere utilizate în Linux ( Pentru a fi mai precis, primul sistem de fișiere Linux este minix. Dar capacitățile acestui fs sunt foarte limitate și a fost folosit numai pe stadiul inițial dezvoltare Linux.). A fost creat în 1993. Acest sistem de fișiere este considerat foarte fiabil și testat în timp. Dar, din moment ce ext2 a fost dezvoltat într-un moment în care HDD Dimensiunea de 300 MB a fost considerată foarte mare, are unele limitări. Nu are rost să folosiți acest fs pentru partiții mari, va începe să încetinească atunci când există un număr mare de fișiere în partiție. Adică, ext2 este considerat lent ( Termenul „lent” este foarte relativ. Ext2 este considerat lent pe Linux. Dar dacă îl compari cu un fișier standard Sistemul FreeBSD, se dovedește că ext2 este foarte rapid.). Desigur, odată cu creșterea dimensiunilor discurilor și apariția noilor tendințe, au fost aduse modificări sistemului de fișiere pentru a-și îmbunătăți performanța și funcționalitatea. De exemplu, suport POSIX ACL. Dar totuși, nu a fost afectat de schimbările globale care ne permit să spunem:

Da, acesta este singurul sistem de fișiere care mi se potrivește complet.

În plus, ext2 are limitări serioase:

  • Dimensiunea maximă a fișierului este de 2048 GB.
  • Dimensiunea maximă a sistemului de fișiere este de 32768 GB.
  • Numărul maxim de subdirectoare într-un director este 32768.

Sisteme de fișiere jurnalizate

În prezent, sistemul de fișiere ext2 nu mai este utilizat. Și nici măcar nu este vorba despre limitările sale; ext2 este un sistem de fișiere destul de fiabil. Totul ține de viteza de încărcare a serverelor Linux. Serverul trebuie să ruleze constant. Dar miracolele nu se întâmplă; uneori, serverele trebuie să fie supraîncărcate. Sarcina ta este să te asiguri că, după ce sistemul se blochează, repornesc cât mai repede posibil. Când serverul este pornit, discurile sunt verificate. Procedura de verificare a sistemelor de fișiere, în special a celor mari, este o procedură destul de lungă. Dacă există mai multe astfel de sisteme de fișiere, verificarea acestora poate dura foarte mult. Și serverul trebuie să funcționeze!

Au fost dezvoltate sisteme de fișiere jurnalizate pentru a reduce timpul de verificare și pentru a crește fiabilitatea. Dacă ați lucrat cu baze de date, probabil cunoașteți conceptul de tranzacție. Mai multe instrucțiuni SQL sunt combinate într-o tranzacție. Sistemul trebuie să execute toate instrucțiunile. Dacă cel puțin unul dintre ele nu funcționează, atunci sistemul revine la începutul tranzacției. Dacă sistemul era offline în timp ce o tranzacție era în curs, atunci când revine, dacă este posibil, încearcă să execute instrucțiunile rămase sau să revină la începutul tranzacției.

Suportul pentru jurnalul de tranzacții a fost adăugat la sistemele de fișiere moderne. Din punctul de vedere al sistemului de fișiere, toate operațiunile pe un fișier arată ca o singură tranzacție. Dacă te uiți mai detaliat la operațiuni cu fișiereÎn Linux, scrierea sau modificarea unui fișier este o procedură destul de complexă, constând din multe acțiuni cu date de pe disc. Când se folosește un jurnal de tranzacții, înainte de a face orice modificări fizice pe disc, se deschide o nouă tranzacție în jurnal, care va înregistra toate acțiunile care vor fi efectuate pe sistemul de fișiere. Și numai după ce tranzacția este salvată pe disc, se vor face modificări sistemului de fișiere.

Dacă sistemul de fișiere este oprit incorect, verificatorul se va uita mai întâi la jurnalul de tranzacții și, pe baza datelor din acesta, va încerca fie să returneze (revenire) sistemul la momentul în care a început tranzacția sau, dacă este posibil, finalizați acțiunile descrise în tranzacție. Avand in vedere ca revista are nr marime mare(în sistemul de fișiere ext3 este de 32 MB), procesul de recuperare a sistemului de fișiere este accelerat semnificativ.

sistem de fișiere ext3

Când a apărut necesitatea implementării sistemelor de fișiere de jurnal în Linux, RedHat a dezvoltat sistemul de fișiere ext3. RedHat a luat calea celei mai puține rezistențe - au luat ca bază binecunoscutul ext2 și au adăugat suport pentru jurnal.

În felul meu dispozitiv fizic ext2 este identic cu ext3. Această caracteristică a făcut posibilă utilizarea acelorași utilitare pentru lucrul cu ext3 (crearea, verificarea și configurarea sistemelor de fișiere) ca și pentru lucrul cu ext2.

În ciuda adăugării jurnalului, ext3 este mai rapid decât ext2. Avantajele ext3 includ, de asemenea, capacitatea de a vă conecta nu numai acțiunile necesare, dar și date, pe care alte sisteme de jurnalizare nu le permit. Datorită acestei caracteristici, ext3 este considerat foarte fiabil.

Ext3 acceptă trei moduri de operare:

  • Scriere înapoi - în acest mod, datele nu sunt înregistrate. Așa-numitele metadate (inodul fișierului, link-uri către blocuri) sunt mai întâi plasate în jurnal. Numai după ce sunt înregistrate, datele sunt scrise în sistemul de fișiere.
  • Ordonat (mod implicit) - acest mod este similar cu cel descris mai sus. Singura diferență este că, în modul writeback, toate metadatele sunt scrise mai întâi în jurnal și numai după aceea apar modificări în sistemul de fișiere. Și în modul ordonat, când informațiile despre un bloc sunt plasate în jurnal, acest bloc este schimbat imediat în sistemul de fișiere. Informațiile despre următorul bloc sunt apoi plasate în jurnal, iar blocul este scris și așa mai departe. Adică datele se modifică în paralel cu modificarea jurnalului.
  • Jurnal - modul de înregistrare completă. Jurnalul conține metadate și date. Și numai după aceasta are loc o schimbare în sistemul de fișiere.

Sistemul de fișiere ReiserFS

ReiserFS este dezvoltat de Hans Reiser și compania sa Namesys (http://www.namesys.com). Este un sistem de fișiere foarte rapid, potrivit pentru stocare cantitate mare fișiere mici.

A reușit să rezolve problema plasării fișierelor mici pe disc. De exemplu, în ext2/3, pentru a găzdui un fișier care conține un singur caracter, un întreg bloc va fi ocupat pe disc. Dimensiunea unui bloc ext2/3 poate varia de la 1 la 8 KB ( dimensiunea depinde de dimensiunea sistemului de fișiere). Și în ReiserFS, datele din mai multe fișiere pot fi plasate într-un singur bloc. Mai mult, dacă dimensiunea fișierului este foarte mică, datele pot fi plasate în inode, adică direct în metadate.

Sistemul de fișiere se bazează pe arbori optimizați (arborele B). Acest lucru crește viteza de căutare în sistemul de fișiere și elimină problema limitării numărului de fișiere și directoare dintr-un director.

Acest sistem de fișiere gestionează, de asemenea, fișierele mari cu destulă încredere.

Sistemul de fișiere ReiserFS versiunea 3.6 are următoarele limitări:

  • Dimensiunea maximă a fișierului - 8 TB (pentru computere pe 32 de biți);
  • Dimensiunea maximă a sistemului de fișiere este de 16 TB.

În prezent în curs de dezvoltare următoarea versiune ReiserFS este al patrulea. Este de așteptat să fie activat în nucleele 2.6.17 sau 2.6.18.

Sistemul de fișiere JFS

Acest sistem de fișiere este dezvoltat de IBM și este distribuit sub licența GNU GPL. O descriere a JFS poate fi găsită online la . JFS este folosit nu numai în Linux, ci și în alte sisteme de operare, cum ar fi AIX și OS/2.

JFS este un sistem de fișiere de jurnal. Principalul său punct forte este utilizarea sa împreună cu LVM (Logical Volume Manager). LVM vă permite să combinați mai multe partiții fizice hard disk-uriîntr-unul logic, care poate fi apoi partiționat ca un hard disk obișnuit. Cu toate acestea, unele tipuri de LVM vă permit să conectați un nou spațiu pe disc din mers. Și dacă utilizați sistemul de fișiere ext3 pe partiții în creștere, la un moment dat veți primi un mesaj despre imposibilitatea creării unui fișier nou. Faptul este că la formatarea unei partiții în ext3, un număr finit de inoduri sunt rezervate în avans, în funcție de dimensiune. Adică se știe dinainte suma maxima fişiere. Dacă dimensiunea sistemului de fișiere nu crește, atunci acest număr de inoduri este suficient pentru operatie normala. JFS are capacitatea de a crește în mod dinamic sistemul de fișiere și numărul de inoduri. Datorită acestei proprietăți, atunci când dimensiunea sistemului de fișiere crește, nu există limită pentru numărul de fișiere create.

Sistemul de fișiere JFS are următoarele limitări:

  • Dimensiunea maximă a fișierului este limitată de adâncimea de biți sistem de operare.
  • Dimensiunea maximă a sistemului de fișiere este de 512 TB.

Sistem de fișiere XFS

Sistemul de fișiere XFS a fost dezvoltat de SGI (fostă Silicon Graphics, Inc.). XFS sa născut în 1994 și a fost livrat inițial cu sistemul de operare IRIX. SGI este renumit pentru stațiile de lucru de producție video și serverele de stocare. Prin urmare, sistemul de fișiere este optimizat pentru a servi un număr mare de fișiere uriașe și pentru a suporta directoare mari. Datorită structurii sale, suportă bine un număr mare de fișiere mici. Din punct de vedere al vitezei, este comparabil cu sistemul de fișiere ReiserFS, iar ca fiabilitate este superior sistemului de fișiere Hans ( Câte date am pierdut în sistemul de fișiere ReiserFS spațiu gol. Doar a salvat backup. De aceea, acum nu folosesc ReiserFS pe servere.).

Suportul pentru fișiere mari este posibil deoarece XFS este un sistem de fișiere pe 64 de biți. Iar viteza sistemului de fișiere este obținută prin utilizarea arborilor B+ pentru a căuta și a descrie structurile interne.

Structura internă a sistemului de fișiere este destul de complexă și nu văd nevoia descriere scurta structura sa. Mai mult, există articole bune pe Internet care descriu XFS în detaliu:

Sisteme de fișiere Microsoft

Dacă vorbim despre sistemele de fișiere Microsoft, Linux acceptă FAT și NTFS. Cu FAT totul este foarte simplu, structura sistemului de fișiere este cunoscută, deci este pe deplin suportat în Linux. Singurul lucru care trebuie luat în considerare atunci când utilizați FAT este că există două tipuri de acesta în Linux:

  • msdos - FAT12/16.
  • vfat - FAT32.

Suportul FAT ar trebui să fie activat dacă intenționați să utilizați discheteși diverse dispozitive de stocare USB: carduri flash, hard disk-uri etc. Faptul este că toate sunt de obicei formatate în FAT.

NTFS este puțin mai complicat. Acest sistem de fișiere este acceptat în mod normal în modul numai citire. Nu este recomandat să îl utilizați în modul de înregistrare. Deși modul de înregistrare este acceptat, dacă citiți documentația pentru driverele NTFS, veți vedea că există cu litere mari este scris: în modul de înregistrare puteți modifica doar conținutul fișierelor existente, în niciun caz nu trebuie să creați fișiere noi, să ștergeți sau să modificați dimensiunea celor existente - acest lucru poate distruge sistemul de fișiere.

Sisteme de fișiere iso9660 și udf

Aceste sisteme de fișiere sunt folosite pentru a stoca informații pe CD-uri și DVD-uri.

Inițial, iso9660 a fost un sistem de fișiere foarte simplu cu o cantitate mare restricții. De exemplu, numele fișierelor sunt ca în MS DOS, o limită a numărului de imbricare de directoare. Prin urmare, au fost scrise mai multe completări pentru iso9660 pentru a-și extinde capacitățile. Inclusiv completări care vă permit să salvați atributele fișierului UNIX. Toate suplimentele sunt acceptate de driverul sistemului de fișiere și nu ar trebui să existe dificultăți la lucru. Mai mult, driverul iso9660 acceptă, oricât de ciudat ar suna, modul de înregistrare. Este folosit la crearea imaginilor pe CD-ROM.

Nici cu udf nu s-a observat probleme speciale. Astfel, lucrul cu CD-uri și DVD-uri este acceptat în Linux fără nicio restricție.

sistem de fișiere proc

Acesta este un sistem de fișiere foarte util. În munca ta ca administrator, te vei apela adesea la capacitățile sale. Într-unul din primele capitole, vorbim despre organizarea unui fișier sisteme Linux, am vorbit pe scurt despre scopul acestui sistem de fișiere. Permiteți-mi să vă reamintesc doar că fișierele care se află în directorul /proc sunt o mapare a zonei de date kernel la sistemul de fișiere. Adică, dacă vizualizați conținutul unui fișier, vedeți de fapt o anumită parte a zonei de date kernel.

Mai jos voi descrie câteva fișiere interesante pe care le puteți găsi în directorul /proc. Conținutul fișierelor de pe sistemul dvs. va diferi de conținutul fișierelor exemplu.

/proc/cmdline

Conține Linie de comanda, a trecut la nucleu când a început.

# cat cmdline BOOT_IMAGE=Linux-2613 ro root=303 #

/proc/cpuinfo

Informații despre procesor sau procesoare.

# cat cpuinfo procesor: 0 vendor_id: GenuineIntel cpu family: 6 model: 9 model name: Intel(R) Pentium(R) M processor 1400MHz stepping: 5 CPU MHz: 1399.050 cache size: 1024 KB fdiv_bug: no hlt_bug:_ no fdiv_bug:_no nu coma_bug: nu fpu: da fpu_exception: da cpuid level: 2 wp: yes flags: fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 tm pbe est tm2 bogomips: 93 #2800

/proc/devices

Lista de dispozitive.

# dispozitive cat Dispozitive cu caractere: 1 mem 2 pty 3 ttyp 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx 7 vcs 10 misc 13 input 14 sound 21 sg 116 alsa 128 ptm 136 pts 171 ieee1394 180 usb 226 drm 254 pcmcia Bloc dispozitive: 3 ide0 7 loop 8 sd 11 sr 65 sd #

/proc/dma

Folosind canale DMA.

# cat dma 4: cascada #

/proc/sisteme de fișiere

Lista sistemelor de fișiere acceptate.

# cat sisteme de fișiere nodev sysfs nodev rootfs nodev bdev nodev proc nodev sockfs nodev pipefs nodev futexfs nodev tmpfs nodev inotifyfs nodev eventpollfs nodev devpts ext3 ext2 nodev ramfs msdos vfat novdevs msdos vfat nodev #

/proc/întreruperi

Întreruperea distribuției.

# cat întrerupe CPU0 0: 850627 Temporizator XT-PIC 1: 9691 XT-PIC i8042 2: 0 Cascada XT-PIC 7: 2 XT-PIC parport0 8: 1 XT-PIC rtc 9: 6620 XT-PIC acpi XT162: XT-PIC -PIC Intel 82801DB-ICH4, yenta, yenta, eth0, eth1, ohci1394, ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4, radeon@pci:000:000:00:00:00:00:00:00:00 042 14 : 11538 XT-PIC ide0 NMI: 0 LOC: 0 ERR: 0 MIS: 0 #

/proc/module

Lista modulelor încărcate.

# cat modules irtty_sir 5248 0 - Live 0xf8a09000 sir_dev 13548 1 irtty_sir, Live 0xf8a1d000 irda 107768 1 sir_dev, Live 0xf8a3f000 crc_crc_00000000000000 24324 0 - Live 0xf8a16000 parport 30920 1 parport_pc, Live 0xf8a0d000 uhci_hcd 30416 0 - Live 0xf89e7000 EHCI_HCD 27656 0 - Live 0xf897a000 USBCORE 103740 3 UHCI_HCD, EHCI_HCD, LIVE 0xF8990000 OHCI1394 31092 0 - Live 0xf895e000 IEEE1394 86392 1 0xf8936000 IEEE80211 18948 1 IPW2100, LIVE 0xF8918000 IEEE80211_CRYPT 4488 1 IEEE80211, LIVE 0XF88F8000 EEPRO100 26512 0 - Live 0xf8909000 pcmcia 30568 4 - Live 0xf8900000 firmware_class 7680 2 ipw2100,pcmcia, Live 0xf88f2000 yenta_socket 20748 4 - Live 0xf88790 8875000 pcmcia_core 34640 3 pcmcia,yenta_socket,rsrc_nonstatic, Live 0xf88e2000 #

/proc/monturi

Conține o listă de sisteme de fișiere montate.

# cat montează rootfs / rootfs rw 0 0 /dev/root / ext3 rw 0 0 proc /proc proc rw,nodiratime 0 0 sysfs /sys sysfs rw 0 0 none /dev ramfs rw 0 0 /dev/htda5 /rw 0 0 /dev/hda6 /home ext3 rw 0 0 /dev/hda1 /mnt/win ntfs ro,noatime,nodiratime,uid=0,gid=0,fmask=0177,dmask=077,nls=iso8859-1, erori= continua,mft_zone_multiplier=1 0 0 devpts /dev/pts devpts rw 0 0 usbfs /proc/bus/usb usbfs rw 0 0 #

/proc/partiții

Conține o listă de partiții ale tuturor unităților conectate.

# cat partitions major minor #blocks name 3 0 58605120 hda 3 1 10485688 hda1 3 2 506520 hda2 3 3 9775080 hda3 3 4 1 hda4 3 5 9775048 hda5 36 6 #

/proc/pci

Lista dispozitivelor detectate pe magistrala PCI.

Acest fișier poate fi folosit pentru a diagnostica de ce unele dispozitive nu funcționează. Atenție la întreruperi: dacă este 0, înseamnă că dispozitivului nu i s-a alocat o întrerupere dintr-un motiv oarecare. Nu voi oferi întregul conținut al acestui fișier, este foarte mare.

# Cat pci dispozitive PCI găsite: Bus 0, device 0, function 0: Host bridge: Procesor Intel Corporation 82855PM către controlerul I/O (rev 3). Memorie preîncărcabilă pe 32 de biți la 0xd0000000. Bus 0, dispozitiv 1, funcție 0: punte PCI: Procesor Intel Corporation 82855PM către controlerul AGP (rev 3). Capabil maestru. Latență=96. Min Gnt=12. Bus 0, dispozitiv 29, funcția 0: Controler USB: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) Controler USB UHCI #1 (rev 1). IRQ 11. I/O la 0x1800. #

/proc/swaps

Conține o listă de fișiere și partiții swap conectate.

# cat swaps Nume fișier Tip Dimensiune Folosit Prioritate /dev/hda2 partiție 506512 0 -1 #

/proc/version

Conține informații despre versiunea sistemului de operare și Kernel-urile Linux.

# cat versiunea Linux versiunea 2.6.13-rc3-my (root@master) (gcc versiunea 3.3.6) #3 marți, 19 iulie 22:25:23 GMT+3 2005 #

Informații de proces

Pe lângă fișiere, /proc conține directoare cu un număr ca nume. Fiecare director descrie un proces al cărui PID corespunde numelui directorului. Fișierele din acest director descriu parametrii procesului. Conținutul unuia dintre directoare este afișat mai jos.

# ls /proc/4624 auxv cwd@ exe@ maps mounts oom_score seccomp statm task/ cmdline environ fd/ mem oom_adj root@ stat status wchan #

Doar câteva dintre fișierele exemplu conțin informații care ar fi de înțeles fără preprocesare.

cmdline

Conține argumente de linie de comandă.

# cat cmdline -su #

mediu

Conține valorile variabilelor de mediu ale procesului.

# cat environ HZ=100TERM=xtermPATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/binHOME=/rootSHELL=/bin/bashUSER=rootLOGNAME=rootMAIL =/var/spool/mail/root #

stare

Conține informații despre starea procesului într-un format ușor de înțeles pentru oameni.

# status cat Nume: bash Stare: S (dormit) SleepAVG: 98% Tgid: 4510 Pid: 4510 PPid: 4498 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Grupuri: 0 1 2 3 6 10 11 VmSize: 2832 kB VmLck: 0 kB VmRSS: 1724 kB VmData: 388 kB VmStk: 88 kB VmExe: 628 kB VmLib: 1628 kB VmPTE: 12 kB Si:00g0g0: 12 kB 0 00000000000 ShdPnd: 000000000000000000 SigBlk #

Alte directoare

Pe lângă directoarele care descriu procesele sistemului, /proc poate conține și alte directoare. Mai jos sunt scopurile unora dintre ele:

  • ide- informații despre dispozitivele conectate la interfața ide.
  • irq- informații despre distribuția întreruperilor.
  • net- informatii despre retea. Conținutul tabelului arp și al tabelului de rutare. Statistici pe interfețe de rețea si protocol. Și așa mai departe.
  • scsi- informații despre dispozitivele SCSI.
  • sys- contine parametri modificabili sisteme.

/proc/sys

Sistemul de fișiere /proc/sys este un subiect mare separat. Folosind fișierele aflate în acest director, puteți modifica din mers parametrii sistemului. Este suficient să scrieți valoarea dorită în fisier specific. Nu voi descrie /proc/sys, există prea multe informații și prea multe trebuie să știți pentru a înțelege pentru ce sunt folosite fișierele. Prin urmare, vă voi spune unde puteți găsi documentația și descrierile acestui sistem de fișiere:

  • În primul rând, aceasta este documentația pentru nucleu. Vine cu surse de kernel. O descriere a /proc/sys poate fi găsită în fișierul Documentation/filesystems/proc.txt. Un capitol separat (și departe de a fi mic) îi este dedicat.

Sistem de fișiere EXT3

Spre deosebire de EXT2, EXT3 este jurnalizate sistem de fișiere, adică nu va ajunge într-o stare inconsistentă după eșecuri. Dar este pe deplin compatibil cu EXT2.

Dezvoltat în palarie rosie

În prezent, cel principal pentru LINUX.

Driverul Ext3 are stocuri pline copii exacte blocuri modificabile (1KB, 2KB sau 4KB) în memorie până la finalizarea operațiunii. Acest lucru poate părea risipitor. Blocurile complete conțin nu numai date modificate, ci și date nemodificate.

Această abordare se numește „ logare fizică„, care reflectă utilizarea „blocurilor fizice” ca unitate de bază a jurnalizării. Abordarea de stocare numai a octeților mutabili, mai degrabă decât a blocurilor întregi, se numește „ logare logică" (Se folosește XFS). Deoarece ext3 folosește „înregistrare fizică”, jurnalul din ext3 este mai mare decât în ​​XFS. Datorită utilizării blocurilor complete în ext3, atât driverul, cât și subsistemul de înregistrare evită complexitățile care apar cu „logica”. Logare" .

Tipuri de înregistrare acceptate de Ext3, care pot fi activate din fișierul /etc/fstab:

· date=jurnal(modul de jurnalizare a datelor complete) - toate datele noi sunt mai întâi scrise în jurnal și numai după aceea sunt transferate în locația sa permanentă. În cazul unui accident, jurnalul poate fi recitit, readucerea datelor și metadatele la o stare constantă.
Cel mai lent, dar cel mai de încredere.

· date=ordonate- sunt înregistrate doar modificările la metadatele sistemului de fișiere, dar în mod logic metadatele și blocurile de date sunt grupate într-un singur modul numit tranzacție. Înainte ca noile metadate să fie scrise pe disc, blocurile de date asociate sunt scrise mai întâi. Acest mod de înregistrare ext3 este instalat implicit.
Când adăugați date la sfârșitul unui fișier, modul data=ordonat este garantat pentru a asigura integritatea (ca și în modul de jurnalizare a datelor complete). Cu toate acestea, dacă datele sunt scrise într-un fișier peste cele existente, atunci există posibilitatea de a amesteca blocurile „originale” cu cele modificate. Acesta este un rezultat al datelor=ordonate care nu urmăresc înregistrările unde bloc nou se află deasupra celui existent și nu provoacă modificarea metadatelor.

· date=writeback(numai metadate) - sunt înregistrate numai modificările aduse metadatelor sistemului de fișiere. Cel mai metoda rapida Logare. Acesta este tipul de jurnalizare pe care îl vedeți cu sistemele de fișiere XFS, JFS și ReiserFS.

XFS este un sistem de fișiere de jurnal dezvoltat de Silicon Graphics, dar acum lansat ca sursă deschisă.

Informații oficiale la http://oss.sgi.com/projects/xfs/



XFS a fost creat la începutul anilor 90 (1992-1993) de Silicon Graphics (acum SGI) pentru calculatoare multimedia cu Irix OS. Sistemul de fișiere era destinat fișierelor și sistemelor de fișiere foarte mari. O caracteristică a acestui sistem de fișiere este dispozitivul jurnal - o parte din metadatele sistemului de fișiere în sine sunt scrise în jurnal în așa fel încât întregul proces de recuperare se reduce la copierea acestor date din jurnal în sistemul de fișiere. Dimensiunea jurnalului este setată la crearea sistemului trebuie să fie de cel puțin 32 de megaocteți; și nu aveți nevoie de mai mult - este greu să obțineți un astfel de număr de tranzacții neînchise.

Câteva caracteristici:

· Funcționează mai eficient cu fișiere mari.

· Are capacitatea de a muta jurnalul pe alt disc pentru a îmbunătăți performanța.

· Salvează datele din memoria cache numai când memoria este plină, și nu periodic ca celelalte.

· Sunt înregistrate numai metadatele.

· Se folosesc arbori B+.

Se utilizează înregistrarea logică

Recent, la conferința linux.conf.au 2012, dezvoltatorul XFS Dave Chinner a remarcat că crede că XFS va atrage mai mulți utilizatori în viitor. Raportul său s-a ocupat de rezolvarea problemelor legate de scalare, precum și munca in continuare pentru a îmbunătăți sistemul de fișiere. Dacă e de crezut cuvintele lui, probabil că vom auzi mult mai multe despre asta în următorii câțiva ani. XFS.
XFS adesea considerat ca un sistem de fișiere pentru cei care lucrează cu fișiere dimensiuni mari. Potrivit lui Dave, face față perfect acestei sarcini, în plus, XFSîn mod tradițional funcționează bine sub sarcini grele. Dar situația se înrăutățește atunci când scrieți metadate. Suportul pentru scrierea unor cantități mari de metadate de-a lungul timpului este un punct slab pentru acest sistem de fișiere. Pe scurt, metadatele sunt scrise foarte lent și practic nu se scalează, chiar și atunci când rulează pe un singur CPU.
Cât de încet? Dave a oferit mai multe diapozitive care arată rezultatele benchmark-ului fs-mark în comparație cu ext4. rezultate XFS mult mai rău (aproape de două ori) chiar și pe un singur procesor. Pe măsură ce numărul de fire crește la opt, situația se înrăutățește și mai mult, după care și performanța ext4 scade brusc. Pentru lucrări care implică o sarcină mare pe sistemul I/O, unde este necesară modificarea unei cantități mari de metadate (dezambalarea tarballului a fost dată ca exemplu), ext4 a arătat performanțe de 20 - 50 de ori mai mari decât XFS. Acest decalaj este o problemă cu adevărat serioasă.

Înregistrare leneșă

Problema este în jurnalul I/O: XFS a generat o cantitate foarte mare de trafic pentru a modifica metadatele. În cele mai rele cazuri, practic tot traficul I/O a fost mai degrabă date de jurnal decât date pe care utilizatorul încerca să le scrie pe disc. Încercările de a rezolva această problemă de-a lungul anilor au inclus o schimbare majoră în algoritmul de înregistrare și multe altele. optimizări importanteși setări. Singurul lucru care nu a fost necesar a fost orice modificare a formatului de date de pe disc, deși aceasta ar putea fi necesară în viitor.
Stresul de modificare a cantităților mari de metadate poate duce în cele din urmă la modificarea aceluiași bloc de director de multe ori într-o perioadă scurtă de timp, fiecare dintre aceste modificări generând o intrare care trebuie stocată în jurnal. Aceasta este sursa unui trafic imens de reviste. Conceptul pentru a rezolva această problemă este foarte simplu: amânați actualizarea jurnalului și îmbinați modificările în același bloc într-o singură intrare. De fapt, a fost nevoie de câțiva ani de muncă grea pentru a aduce această idee într-o implementare scalabilă, dar acum funcționează. Jurnal leneș pentru sistemul de fișiere XFS suportat în versiunea de kernel 3.3.
De fapt, tehnologia de jurnalizare leneșă a fost împrumutată din sistemul de fișiere ext3, astfel încât algoritmul pentru funcționarea sa este cunoscut și este nevoie de mult mai puțin timp pentru ao implementa în XFS decât dacă ar fi dezvoltat de la zero. Alături de avantajele vitezei, aceasta înseamnă și o reducere semnificativă a volumului codului. Dacă doriți să aruncați o privire mai atentă asupra modului în care funcționează această tehnologie, detalii puteți găsi în fișier filesystems/xfs-delayed-logging.txtîn arborele de documentație al nucleului.
Jurnalul leneș este schimbare mare, dar nu singurul. Drumul rapid rezervarea spațiului în revistă rămâne un subiect fierbinte în XFS. Astăzi nu necesită blocare, în timp ce metoda lentă necesită încă o blocare globală a punctului respectiv. Codul de scriere a metadatelor asincron a dus la o fragmentare severă a I/O, reducând semnificativ performanța. Acum scrierea metadatelor este întârziată și este sortată înainte de scriere. Aceasta înseamnă că, potrivit lui Dave, sistemul de fișiere acționează ca un planificator I/O. Dar programatorul I/O operează pe o coadă de cereri, care este de obicei limitată la 128 de intrări, în timp ce coada de metadate amânată XFS poate conține multe mii de înregistrări, așa că este logic să sortați pe sistemul de fișiere înainte de a trece metadatele către sistemul I/O. " Elemente active„Elementele de jurnal activ” este un mecanism care îmbunătățește performanța atunci când se lucrează cu liste mari sortate de elemente de jurnal prin acumularea modificărilor și aplicarea lor în loturi. pagini în momente nepotrivite.

Comparația sistemelor de fișiere

Cum XFS se scala dupa toate schimbarile? Când rulează cu unul sau două fire, este încă puțin mai lent decât ext4, dar pe măsură ce numărul de fire crește la opt, performanța sa crește liniar, în timp ce ext4 se degradează și btrfs se degradează și mai mult. Scalabilitate de azi XFS se limitează la blocarea stratului de kernel care se ocupă de sistemele de fișiere virtuale, nu de codul care se ocupă direct de sistemul de fișiere. Parcurgerea directoarelor este acum mai rapidă chiar și cu un singur fir și chiar mai rapidă cu opt fire.
Scalabilitatea alocării discurilor este în prezent cu ordine de mărime mai rapidă decât ext4. Această situație se va schimba ușor odată cu introducerea funcției „bigalloc” în versiunea 3.2, care crește scalabilitatea alocării spațiului pe disc ext4 cu două ordine de mărime dacă este utilizată o dimensiune de bloc suficient de mare. Din păcate, acest lucru crește proporțional spațiul ocupat pe disc de fișierele mici. De exemplu, a plasa cod sursa miezuri Linuxîn acest caz, va fi necesar 160 GB de spațiu pe disc. Bigalloc nu este foarte compatibil cu alte caracteristici ext4 și necesită setări complexe. Potrivit lui Dave, ext4 suferă de defecte arhitecturale - lucruri precum utilizarea bitmaps-urilor pentru a urmări spațiul pe disc erau tipice anilor optzeci. Pur și simplu nu poate scala la sisteme de fișiere cu adevărat mari.
Alocarea spațiului pe disc în Btrfs este chiar mai lentă decât în ​​ext4. Potrivit lui Dave, problema este în principal o chestiune de a muta memoria cache în spațiul liber pe disc, ceea ce consumă prea multă putere CPU. Cu toate acestea, aceasta nu este o eroare arhitecturală, așa că poate fi remediată destul de ușor.

Viitorul sistemelor de fișiere Linux

Astăzi, problemele de performanță și scalabilitate pot fi considerate rezolvate. Acum blocaj este stratul VFS, așa că eforturile suplimentare ar trebui direcționate către acest domeniu de lucru. Dar cea mai mare provocare în viitor va fi fiabilitatea stocării datelor, iar acest lucru poate necesita modificări semnificative ale sistemului de fișiere XFS.
Fiabilitatea nu înseamnă doar a nu pierde date - sperăm că XFS este deja destul de fiabil, problema este legată și de scalabilitate. Pur și simplu nu este practic să eliminați un sistem de fișiere petabyte pentru a rula o scanare sau un utilitar de recuperare a datelor. În viitor, este pur și simplu necesar să se facă posibilă efectuarea unor astfel de operațiuni pe un sistem de fișiere care rulează. Acest lucru va necesita un instrument robust de detectare a accidentelor încorporat în sistemul de fișiere pentru a verifica metadatele din mers. Unele alte sisteme de fișiere au mecanisme similare, dar conform lui Dave, pentru XFS Ar fi mai bine să implementați un astfel de sistem la nivel de matrice de dispozitive de stocare a datelor, sau la nivel de aplicație.
„Validarea metadatelor” înseamnă dezvoltarea metadatelor care se protejează de solicitările de scriere greșite direcționate la nivelul dispozitivului de stocare. Verificarea sumei de control nu este suficientă - arată doar că datele au fost scrise corect. Metadatele cu o astfel de protecție ar putea identifica blocurile care au fost scrise într-o locație greșită și pot ajuta la restabilirea integrității sistemului de fișiere în cazul unor defecțiuni majore. Acest lucru poate ajuta, de asemenea, la rezolvare problema cunoscuta reiserfs, adică utilitarul de reparare a sistemului de fișiere este confundat cu metadate învechite sau metadate găsite în imaginile sistemului de fișiere.
Dezvoltarea unor astfel de metadate va necesita o mulțime de modificări. Fiecare bloc de metadate va include UUID-ul sistemului de fișiere căruia îi aparține, precum și numerele de bloc și inodul astfel încât sistemul de fișiere să poată determina dacă metadatele sunt transmise din sursa corectă. Vor fi de asemenea sume de control pentru a identifica blocurile de metadate corupte și un identificator personalizat pentru a asocia metadatele cu propriul inod sau director. Inversarea arborelui de alocare va permite sistemului de fișiere să identifice rapid cărui fișier îi aparține orice bloc.
Desigur, formatul actual XFS nu stochează toate aceste date suplimentare, așa că va trebui modificată. Cu toate acestea, potrivit lui Dave, nu există planuri de a menține compatibilitatea cu formatul actual al sistemului de fișiere. Acest lucru se face pentru a oferi dezvoltatorilor libertate deplină de a crea un nou format de sistem de fișiere care va fi folosit mulți ani de acum înainte. Pe lângă adăugarea caracteristicilor descrise mai sus, dezvoltatorii plănuiesc să adauge și spațiu pentru d_type în structura directoarelor, contoare de versiuni NFSv4, timpul de creare a inodelor și, probabil, multe altele. Dimensiunea maximă a directorului, care în prezent este de doar 32 GB, va fi de asemenea mărită.
Odată cu implementarea tuturor acestor caracteristici, vor apărea noi capabilități: detectarea proactivă a corupției sistemului de fișiere, localizarea și înlocuirea blocurilor dezactivate, precum și corecția îmbunătățită a erorilor din sistemul de fișiere din mers. Asta înseamnă, după cum a spus Dave, că XFS va rămâne cel mai bun sistem de fișiere pentru a lucra cu cantități mari de date sub Linux pentru o lungă perioadă de timp.
Care sunt implicațiile tuturor acestor lucruri pentru viitorul btrfs? Potrivit lui Dave, btrfs nu este în mod clar optimizat pentru a lucra cu cantități mari de metadate - există probleme serioase cu scalabilitate. Acest lucru este de așteptat de la un sistem de fișiere aflat în stadiile incipiente de dezvoltare. Necesar anumit timp pentru a rezolva aceste probleme, iar unele dintre ele se pot dovedi a fi insolubile. Pe de altă parte, fiabilitatea stocării datelor în btrfs este excelentă, iar în următorii câțiva ani poate fi folosită în această calitate.
Ext4, pe de altă parte, suferă de probleme de scalabilitate din cauza erorilor din infrastructură. În orice caz, conform rezultatelor testelor date de Dave, nu este cel mai rapid. Vârsta venerabilă a arhitecturii sale este grăitoare, deși există planuri de îmbunătățire a fiabilității sale. Ext4 se va lupta pentru a rămâne la egalitate cu concurenții săi în viitorul apropiat.
La sfârșitul discursului său, Dave a mai ridicat câteva întrebări. Potrivit acestuia, btrfs, datorită avantajelor sale, va înlocui în curând ext4 ca sistem de fișiere implicit în multe distribuții. În același timp, ext4 este inferior XFSîn majoritatea operațiunilor de lucru, inclusiv în cele în care a fost în mod tradițional puternic. Problema de scalabilitate apare deja la servere mici. În plus, nu este atât de stabil pe cât cred utilizatorii. La final a întrebat: „De ce mai folosim ext4?”
S-ar putea presupune că dezvoltatorii ext4 au un răspuns bun la această întrebare, dar, din păcate, niciunul dintre ei nu a fost prezent în cameră. Deci, se pare că această discuție trebuie continuată în altă parte. Va fi interesant să-l asculti.