GNU/Linux >> Linux Esercitazione >  >> Linux

Tutto ciò che devi sapere sul file system Linux

I file e la loro manipolazione sono al centro dell'informatica moderna. Anche uno dei principi fondamentali di tutti i sistemi simili a Unix è descrivere tutto sul sistema come file. Vale praticamente per tutti i sistemi Linux. Dalle directory ai dispositivi, la tua distribuzione Linux tratta tutto sul tuo sistema come file. Ora, i sistemi devono anche incorporare un mezzo per archiviare e gestire questi file. È qui che entrano in gioco i file system Linux. Poiché Linux supporta numerosi file system e implementa varie operazioni per essi, riteniamo necessario fornire ai nostri lettori alcune conoscenze su come funzionano i file system in Linux.

Fondamenti di file system Linux

Il filesystem Linux è responsabile della memorizzazione dei dati di sistema e della loro gestione. Un filesystem può essere definito come il meccanismo alla base della memorizzazione e del recupero dei dati. I filesystem sono generalmente costituiti da diversi livelli, incluso uno logico che fornisce l'interazione dell'utente, API per diverse operazioni sui file e così via.

Potresti aver notato che l'intera installazione di Linux si risolve attorno a / punto. Si chiama radice del file system ed è essenzialmente il punto di partenza del tuo sistema. Contiene diverse directory, la maggior parte con un significato storico. Discuteremo la gerarchia del filesystem di Linux e altri Unix più avanti in questa guida.

È possibile collegare componenti aggiuntivi a questa gerarchia di filesystem montandoli su un punto di montaggio. Una volta montati, gli utenti possono attraversare nuovi filesystem usando questo punto. Ti mostreremo come farlo nelle sezioni seguenti. Ora, come fa il sistema a tenere traccia di questi filesystem? In breve, utilizza tabelle di partizione predefinite per determinare gli inode (punti di partenza), i confini, i nomi e altre informazioni per farlo.

Quando si definiscono le tabelle delle partizioni utilizzando i gestori delle partizioni Linux, potresti aver notato che esistono più tipi di filesystem. Alcuni esempi comuni sono NTFS, FAT ed EXT. Linux supporta un'ampia gamma di tipi di filesystem, come vedrai più avanti.

Scoprire la struttura del file system di Linux

Il filesystem Linux ha una somiglianza significativa con il filesystem Unix originale. Sebbene le moderne innovazioni informatiche abbiano aiutato nell'aumento delle tendenze più recenti, la gerarchia del filesystem rimane quasi la stessa a causa del suo significato storico. Abbiamo delineato questa gerarchia utilizzando esempi appropriati in questa sezione. Supponiamo che tu abbia familiarità con l'interprete della riga di comando, alias le shell di Linux.

Per impostazione predefinita, all'utente viene presentato /home/USER directory ad ogni accesso. Puoi confermarlo digitando pwd nel terminale. Useremo tree, una delle utilità di fatto per visualizzare le gerarchie di directory in Linux. Puoi ottenerlo in Ubuntu emettendo sudo apt install tree.

- -

Se esegui tree nella tua directory corrente, è probabile che ti ritroverai in una struttura complessa e criptica. Succede perché l'albero attraversa ogni elemento in questa posizione (cioè immagini, documenti, download, ecc.) in modo ricorsivo e crea la struttura finale combinandoli. Tuttavia, puoi aggiungere la -L flag per specificare la profondità di questo comando.

$ tree -L 1

L'esecuzione di questo comando ti darà una semplice struttura ad albero composta solo dai componenti di primo livello del tuo punto di partenza. È possibile aumentare questo valore per ottenere una visualizzazione più trasparente e robusta. Puoi usare il comando cd per cambiare le posizioni all'interno del tuo filesystem. Ora, abbiamo discusso in precedenza che tutto in Linux è un file. Quindi, una directory deve essere un file. In effetti lo è.

Le directory sono solo file speciali che contengono il nome di altri file (ovvero i suoi elementi figlio). Le nuove installazioni di Linux vengono fornite con alcune directory integrate. Ne discuteremo di seguito. Ti aiuterà a capire molto meglio il tuo sistema.

Per prima cosa, vai alla radice del tuo sistema usando cd / ed esegui ls. Questo ti mostrerà tutte queste directory predefinite. Continua a leggere per scoprire il loro scopo.

/bin

Contiene i binari, ovvero gli eseguibili dei vari programmi installati nella tua macchina. In molti sistemi, questa non esiste come una vera directory ma funge da collegamento simbolico a /usr/bin directory.

/avvio

Tutti i file essenziali necessari per l'avvio del sistema si trovano qui. Non dovresti sperimentare il contenuto di questa directory a meno che tu non sappia cosa stai facendo. Altrimenti, potresti danneggiare il sistema stesso e interrompere la funzionalità.

/dev

La directory /dev contiene i file del dispositivo del tuo sistema. Queste sono le rappresentazioni dei file delle unità USB, dei dischi rigidi, della webcam e così via.

/ecc

Storicamente, il /etc directory è stata utilizzata per mantenere vari file vari. Oggi, tuttavia, è una convenzione standard archiviare i file di configurazione a livello di sistema in questa directory. Informazioni come nome utente/password, credenziali di rete, punto di montaggio delle partizioni sono archiviate qui.

/casa

Questa è la directory personale dell'utente. Può ospitare più sottodirectory in base al numero di utenti nella tua macchina. Supponiamo che tu sia un utente "maniaco", quindi ti verrà assegnata la directory /home/maniac. Una volta effettuato l'accesso, ti verrà presentata la directory /home/maniac all'interno del tuo terminale. È anche indicato come :~$ nella shell Bash.

/lib

Le librerie di sistema si trovano qui. Questi sono i frammenti di codice utilizzati dalle tue applicazioni per eseguire alcune attività. Il loro esempio include frammenti di codice che disegnano finestre o inviano file.

/media

Questa directory è il punto di montaggio dei dispositivi plug and play come l'archiviazione esterna. È un'aggiunta relativamente più recente al file system di Linux.

/mnt

I vecchi e scontrosi amministratori di Unix usavano questa directory per montare manualmente dispositivi o partizioni su richiesta. Sebbene usato di rado, rimane nel filesystem Linux a causa della sua importanza storica.

/opt

Sta per opzionale e destinato a contenere file di sistema opzionali. Gli amministratori spesso lo usano per ospitare applicazioni di terze parti che hanno installato dall'origine.

/proc

Ospita i file di processo, i moduli del kernel e dati dinamici simili. Non dovresti interferire con questo altrimenti potresti rendere il tuo sistema obsoleto.

/radice

Mi piace /casa ma per il superutente del sistema. È la directory che ti verrà presentata quando passerai all'account root.

/corri

Viene utilizzato per conservare i dati temporanei utilizzati dai processi di sistema Linux. Non scherzare qui a meno che tu non sappia cosa stai facendo.

/sbin

Come /bin ma contiene solo binari essenziali di sistema. Qui si trovano varie utilità di uso quotidiano come ls, cd, cp, ecc. Non manipolarli.

/usr

Un luogo "usalo per tutti i tipi" in cui sono archiviate varie informazioni. Possono includere binari, librerie, icone, manuali e così via.

/srv

La directory del server. Contiene i file di origine delle app Web e ospita altri protocolli di comunicazione.

/sys

Un'altra directory virtuale, come /dev . Contiene informazioni sensibili e non dovrebbe essere sperimentato a meno che l'utente non sappia cosa sta combinando.

/tmp

Viene utilizzato per conservare valori temporanei che verranno eliminati durante il riavvio del sistema.

/vari

Lo scopo originale di questa directory era ospitare tutti i file variabili. Al giorno d'oggi, contiene diverse sottodirectory per archiviare cose come log, cache e simili.

Potrebbero esserci alcune directory aggiuntive nella tua radice. Di solito è soggetto alla distribuzione Linux specifica e può variare tra i sistemi.

Ispezione della gerarchia del file system Linux

Puoi spostarti rapidamente nella gerarchia del tuo filesystem utilizzando gli strumenti da riga di comando standard. Abbiamo compilato un elenco di alcuni dei comandi del terminale Linux più utilizzati per questo scopo. Dirigiti lì se hai difficoltà a tenere il passo con la prossima sezione.

Quindi, dopo aver acceso il terminale, sei a /home/USER posizione, indicata da :~$ cartello. Puoi spostarti in una nuova posizione usando il comando cd (cambia directory) come cd /etc. Usa il comando tree come di seguito per generare una semplice struttura di visualizzazione della tua directory corrente, come mostrato di seguito.

$ tree -L 1

È possibile visualizzare il tipo di file utilizzando il comando ls -l. La prima sezione del suo output indica con quali tipi di file hai a che fare. Ad esempio, supponiamo che la tua directory corrente contenga una sottodirectory chiamata Pictures e un file di testo chiamato test. Emetti il ​​comando ls -l in questa directory e cerca la riga che contiene informazioni su questi due elementi.

Vedrai che la riga contenente la cartella Immagini inizia con d , come nella directory. Nel frattempo, l'elemento di partenza della linea per il test dovrebbe essere , che denota file regolari. Altri file come dispositivi e socket sono rappresentati in modo simile. I file speciali sono indicati con c , socket che utilizzano s , pipe con p , blocca i dispositivi con b e collegamenti simbolici con l .

Un altro potente comando che può essere utilizzato per determinare il tipo di un file è il file comando stesso. Per l'esempio sopra, l'esecuzione del file di comando Pictures produrrebbe il risultato "directory". Inoltre, il test del file dovrebbe produrre qualcosa di simile al testo ASCII, che denota un semplice file di testo.

$ file FILENAME

Puoi anche utilizzare il supporto comando per allegare un filesystem in una posizione specifica nella gerarchia. Il comando seguente monta /dev/sdb dispositivo su /home/USER/devices .

$ sudo mount /dev/sdb /home/USER/devices

L'utente può ora accedere ai contenuti di questo dispositivo dalla posizione selezionata. Per trovare il nome di un dispositivo a blocchi, puoi utilizzare lsblk comando. Allo stesso modo, lspci può essere utilizzato per rilevare dispositivi PCI, lsusb per elencare le USB e lsdev per elencare tutti i dispositivi.

Comprendere i tipi di file e le autorizzazioni

Come già accennato, ci sono diversi tipi di file nel file system di Linux. Ognuno ha il suo scopo, ma ci occuperemo principalmente di file e directory regolari. I file normali includono file di uso quotidiano come codici sorgente, eseguibili, documenti, musica e così via. Le directory sono semplici file che contengono il nome di altri file. Nel frattempo, i file speciali sono componenti di sistema di basso livello come tubi e prese. Di solito, questi vengono gestiti dal kernel Linux.

Ora, le autorizzazioni sono un concetto completamente diverso e sono estremamente importanti per gli utenti Linux. Devi capirli chiaramente se vuoi eccellere nelle tue capacità di amministrazione del sistema. Linux, come altri Unix, usa i permessi dei file per determinare quanti privilegi ha un utente su un file.

Le autorizzazioni assicurano che gli utenti possano accedere o modificare solo i contenuti del sistema a cui sono autorizzati. È l'aspetto più cruciale dietro la sicurezza del tuo sistema Linux. Poiché le autorizzazioni dei file Linux sono un argomento estremamente importante di per sé, ne parleremo in dettaglio in una guida successiva. Per oggi, ci atterremo alle basi.

In precedenza abbiamo utilizzato il comando ls -l per determinare i tipi di file. Lo abbiamo determinato semplicemente osservando il primo carattere della colonna di partenza. Ora, questa è la colonna che determina le autorizzazioni. Esegui di nuovo ls -l, ma su un file/directory specifico.

La prima sezione dell'output dovrebbe contenere tre campi separati da simbolo. Il primo carattere indica il tipo di file. Sarà per i file normali, come abbiamo detto in precedenza. La parte successiva deve contenere uno o più caratteri dell'insieme {r, w, x} . Ad esempio, se è rw , quindi l'utente ha accesso in lettura(r) e in scrittura(w). Se lo è (rwx ), l'utente ha i permessi di lettura, scrittura ed esecuzione(x).

Quindi, se questa sezione denota il controllo dell'accesso dell'utente, perché ci sono altre due sezioni simili? Sono i permessi del gruppo e degli altri utenti. Poiché Unix è un sistema multiutente, il filesystem è stato progettato per facilitare l'uso simultaneo dello stesso sistema da parte di utenti diversi. Ogni utente aveva la propria coppia di login e password, che potevano usare per accedere a un sistema. Le autorizzazioni definiscono semplicemente quanto controllo ha un utente specifico su alcuni contenuti.

Puoi modificare i permessi di alcuni contenuti usando il chmod e chown comandi. Saranno mostrati in una guida gratuita.

Una panoramica dei diversi tipi di file system Linux

Esistono più tipi di file system nei sistemi operativi basati su Linux. I tipi di file system Linux comuni sono ext3, ext4, zfs, FAT, XFS e Btrfs. Ce ne sono senza dubbio molti altri in questo elenco e in breve ne daremo una panoramica concisa. La ricerca del tipo di file system corretto di solito dipende dai requisiti degli utenti. Consigliamo agli utenti Linux di iniziare a utilizzare il file system di journaling ext4.

Poiché esistono più tipi di filesystem Linux, riteniamo che sia essenziale avere una certa conoscenza su di essi. Qui stiamo introducendo 10 tipi di file system ampiamente utilizzati in Linux.

1. Filesystem EXT

L'ext (Extended File System) è progettato appositamente per Linux e ha 4 versioni fino ad oggi. Sono ext, ext2, ext3 ed ext4. La maggior parte delle distribuzioni moderne non fornisce più supporto per ext ed ext2. La versione ext3 ha implementato il journaling, una funzionalità che impedisce il danneggiamento dei dati in caso di interruzioni accidentali dell'alimentazione. Ha visto un relativo declino nell'uso da quando è stata rilasciata la versione ext4. Ext4 è il tipo di file system predefinito nelle distribuzioni più recenti.

2. BtrFS

Il “B-Tree File System” è un file system innovativo sviluppato da Oracle. Offre alcune caratteristiche sorprendenti assenti nei tipi di file system Linux standard. Alcuni di questi includono la possibilità di scattare istantanee in movimento, capacità di pooling di unità, deframmentazione online e metodi di compressione trasparenti. Molte persone pronunciano BtrFS come "Migliore FS" e lo considerano il prossimo grande tipo di file system nei server Linux e nelle workstation personali.

3. ReiserFS

ReiserFS è un altro file system basato su journal che può essere utilizzato per l'elaborazione generica. È supportato su Linux e sfoggia una licenza GNU GPL open source. ReiserFS ha ottenuto un discreto seguito nei suoi primi anni grazie ad alcune delle funzionalità che all'epoca erano relativamente nuove. Tra questi c'era la possibilità di ridimensionare i volumi da online, il tail packing per ridurre la frammentazione interna e il journaling solo dei metadati. Lo sviluppo di ReiserFS si è bloccato a causa del periodo di reclusione del suo sviluppatore principale.

4. ZFS

ZFS è un robusto file system e gestore di volumi sviluppato da Sun Microsystems ed è attualmente gestito da Oracle. È un filesystem estremamente potente che supporta archivi enormi, tecniche di compressione efficienti, moderni modelli RAID, deduplicazione dei dati e molte altre funzionalità. ZFS è disponibile nella maggior parte delle distribuzioni Linux e BSD insieme a Mac OS e FUSE. Gli utenti di Ubuntu possono scoprire di più su ZFS qui.

5. XFS

XFS è un file system simile a Ext4 sviluppato da Silicon Graphics ed è disponibile in Linux dal 2001. Offre molte funzionalità presenti nel file system ext4 standard ma limita alcune delle sue capacità. XFS utilizza una tecnica chiamata allocazione ritardata per rilevare la frammentazione dei file in modo più efficace. Quindi, è adatto per impostare archivi NAS e SAN Linux. Abbiamo riscontrato che funziona meglio con file di grandi dimensioni, ma è piuttosto lento quando si tratta di una grande quantità di file più piccoli.

6. JFS

JFS è l'acronimo di "Journaled File System", un file system Linux sviluppato da IBM. È noto per il suo utilizzo limitato delle risorse della CPU e offre prestazioni significativamente migliori sia per file di grandi dimensioni che per raccolte di più file più piccoli. Inoltre, consente agli amministratori di sistema di ridimensionare dinamicamente le proprie partizioni. Questa funzione, tuttavia, supporta solo l'ingrandimento, non la riduzione.

7. MARTELLO

HAMMER è un tipo di file estremamente robusto sviluppato per la versione DragonFly BSD. È un filesystem ad alta disponibilità che supporta solo sistemi a 64 bit. Hammer utilizza alberi B+ per implementare le sue funzionalità, che includono la possibilità di acquisire snapshot NFS illimitati esportabili, conservazione della cronologia, checksum e operazioni master-multi slave, tra le altre. Supporta anche la deduplicazione on-demand dei dati e le compressioni trasparenti.

8. GRASSO

FAT o File Allocation Table è una classe di filesystem nota per la loro flessibilità e il robusto set di funzionalità. Alcuni popolari filesystem FAT includono FAT 16, FAT32, exFAT e vFAT. Sono uno dei filesystem più utilizzati grazie alla loro incorporazione nelle vecchie macchine Windows. Linux supporta un'ampia serie di filesystem FAT comuni noti per le loro prestazioni elevate.

9. NTFS

NTFS (New Technology File System) è un altro tipo di file system comune per molti utenti. È il filesystem predefinito nelle moderne macchine Windows ed è supportato da Linux e altri sistemi BSD. NTFS implementa diverse tecniche per aumentare le sue prestazioni ed è un file system con journal. Supporta flussi di dati alternativi, vari metodi di compressione, ridimensionamento, file sparsi e molte altre funzionalità.

10. crafs

Il file system ROM compresso, noto anche come cramfs, è uno dei tipi di file system più utilizzati nei sistemi embedded. È solo un filesystem di sola lettura che consente al sistema di leggere le immagini senza la necessità di decomprimerle prima. Questo è il motivo per cui molte distribuzioni Linux lo usano per immagini initrd e immagini di installazione.

Ci sono molti altri tipi di file system in Linux. Inoltre, consente agli utenti di allegare più tipi di partizioni nella struttura del filesystem. Si tratta, infatti, di una pratica diffusa. Un tipo speciale di file system Linux è lo swap. In realtà non è un filesystem, ma una tecnica utilizzata per implementare la memoria virtuale.

Verifica del tipo di file system in Linux

Poiché Linux consente agli utenti di utilizzare più di un tipo di file system contemporaneamente, è spesso necessario controllare il tipo di file system prima di eseguire operazioni sui file. Delineeremo alcuni metodi convenzionali per determinare il tipo di file system di una partizione dalla riga di comando.

1. Identificazione del tipo di file system utilizzando il comando df

È possibile determinare il tipo di file system in Linux utilizzando il comando df seguente. Dai un'occhiata ai nostri esempi di comandi df Linux per comprendere in dettaglio il comando df.

$ df -T /

Riporterebbe il tipo di file system root (/) nella colonna di output Tipo.

2. Identificazione del tipo di file system utilizzando il comando fsck

Il comando fsck(File System Check) può essere utilizzato per determinare il tipo di file system di una partizione. Il -N flag viene utilizzato per disabilitare i controlli degli errori.

$ fsck -N /

Questo comando dovrebbe restituire il tipo di filesystem e il suo ID di blocco.

3. Identificazione del tipo di file system utilizzando il comando lsblk

Il comando lsblk viene utilizzato per visualizzare i dispositivi a blocchi in una macchina Linux. Puoi aggiungere il -f flag per dire a lsblk di mostrare il tipo di file system.

$ lsblk -f

Stamperà tutti i dispositivi a blocchi insieme al tipo, al punto di montaggio e alla disponibilità.

4. Identificazione del tipo di file system utilizzando il comando mount

Come discusso in precedenza, mount viene utilizzato per collegare un dispositivo o una partizione a una posizione selezionata nel filesystem. Puoi anche usarlo con grep per determinare il tipo di file dei file system Linux attualmente montati.

$ mount | grep "^/dev"

Mostrerà tutte le partizioni montate con il loro tipo.

5. Identificazione del tipo di file system utilizzando il comando blkid

Il comando blkid viene utilizzato per stampare le proprietà dei dispositivi a blocchi. Visualizza anche il tipo di file system, come mostrato nell'esempio seguente.

$ blkid /dev/sda9

Contiene informazioni aggiuntive. Puoi usare il comando Linux cut per estrarre le informazioni specifiche.

$ blkid /dev/sda9 | cut -d ' ' -f 3

6. Identificazione del tipo di file system utilizzando il comando file

Il comando file stampa le informazioni relative a file e directory. Aggiunta di -sL l'opzione su file consente di determinare anche il tipo di file system.

$ sudo file -sL /dev/sda9

Stamperà il tipo di file system della partizione /dev/sda9.

7. Identificazione del tipo di file system utilizzando il file fstab

Il file fstab contiene le informazioni utilizzate dal sistema per determinare il tipo di file system. Puoi usarlo per ottenere il tipo di filesystem, come mostrato di seguito.

$ cat /etc/fstab

Questo comando stamperà il tipo di file system delle tue partizioni insieme ad altre informazioni.

8. Identificazione del tipo di file system utilizzando il comando parted

Il comando parted è uno dei modi più utili per determinare i tipi di filesystem in Linux. Puoi usarlo, come mostrato di seguito.

$ sudo parted -l

Questo comando dovrebbe stampare tutte le partizioni insieme al tipo di file system Linux e ad altre informazioni. Usa questo metodo quando devi determinare il tipo di tutti i filesystem nel tuo sistema.

9. Identificazione del tipo di file system utilizzando il comando inxi

Un altro comando utile che consente agli utenti di scoprire il tipo di filesystem è inxi. Puoi usare il comando seguente per scoprire il tipo di file system di tutte le partizioni.

$ inxi -p

Stamperà tutti i dispositivi insieme alle informazioni sul tipo.

10. Identificazione del tipo di file system utilizzando il file mtab

Puoi anche grep il file mtab per ottenere le informazioni sul tipo per i filesystem montati. Il comando seguente mostra come farlo.

$ cat /etc/mtab | grep "/dev/sd*"

Stamperà il tipo di informazioni dei dispositivi attualmente montati.

Pensieri finali

Il file system Linux copre numerosi aspetti della tua distribuzione Linux preferita. Dal punto di vista dell'ingegneria del software, abbiamo discusso di come Linux struttura i suoi filesystem e dettato vari comandi per attraversare questa gerarchia in modo efficace. Il tipo di file system in Linux denota l'entità logica di un particolare file system. Abbiamo delineato dieci tipi di file system Linux ampiamente utilizzati e poi ti abbiamo mostrato come determinarlo dal terminale. Sebbene sia molto difficile racchiudere il file system in un'unica guida, i nostri editor hanno fatto del loro meglio per fare l'impossibile. Lasciaci un commento se stai riscontrando confusione o hai altre domande.


Linux
  1. 30 cose che non sapevi del kernel Linux

  2. Tutto quello che devi sapere su Ubuntu 13.04

  3. 15 cose che devi sapere sulla struttura delle directory di Linux

  4. Compressione file Linux:tutto ciò che devi sapere

  5. Permessi dei file Linux:tutto ciò che devi sapere

Tutto quello che devi sapere su Black Lab Linux

Tutto ciò che devi sapere su Linux Mint Distro

Tutto ciò che devi sapere sugli inode in Linux

Tutto ciò che è importante sapere su Hard Link in Linux

Tutto ciò che è importante sapere sull'UID in Linux

Tutto quello che c'è da sapere sulla directory /tmp di Linux