Adelina Doncheva Georgieva
"On a UNIX system, everything is a file; if something is not a file, it is a process."
È lo standard che contiene un set di requisiti e linee guida per il collocamento di file e directory sotto sistemi operativi UNIX-like
In spiccioli, definisce dove mettere cosa
Percorso | Contenuto |
---|---|
/ | cartella root, la radice del filesystem |
/boot | file di avvio: bootloader, kernel e initrd |
/etc | file di configurazione del sistema |
/home | cartelle personali degli utenti |
/media | punto di mount per i filesystem esterni (cd, usb,...) |
/mnt | punto di mount per i filesystem interni temporanei |
/opt | pacchetti software opzionali |
/root | home dell'utente root |
/usr | eseguibili e librerie per le applicazioni utente |
/var | dati (mutabili), log e cache di sistema |
/usr e /var contengono delle sottogerarchie
FHS specifica una gerachia a tre livelli; eseguibili e librerie possono comparire in tre punti del filesystem
In ciascun percorso i binari sono suddivisi in 3 cartelle:
I binari sono separati in /bin e /sbin perché solitamente i binari in .../sbin richiedono privilegi di amministratore per funzionare
Oltre a /sbin, /bin, /lib, contiene anche
Non sono vere cartelle, ma rappresentazioni virtuali di alcuni aspetti del sistema nello spirito "tutto è un file"
Sono il punto di mount di FS opportuni
Sono file per il quali il sistema non sente la mancanza se persi. Sono memorizzati in due posizioni diverse, a seconda del tempo di persistenza nel sistema
Dati condivisi delle applicazioni durante il loro normale funzionamento
Spesso /var è montata come una partizione separata, potrebbe quindi non essere accessibile nelle prime fasi di avvio.
Le moderne distribuzioni Linux creano altre due directory, non standard
Nei sistemi Unix gli i-node sono strutture dati sul fs che descrivono attributi su file, directory e qualsiasi altro oggetto.
Le informazioni includono:
Ogni inode ha associato un numero univoco all'interno del dispositivo e ogni file presente è identificato come un collegamento fisico (hard link) all'inode tramite il suo numero. Per recuperare le informazioni sull'inode dei file si può usare la chiamata di sistema stat
Collegamento fisico che associa il nome di un file al suo contenuto. Deve trovarsi nello stesso filesystem del padre e non può rimanere orfano.
La creazione di un file comporta sempre la simultanea creazione di un collegamento fisico che permetta ai programmi di riferirsi ai dati tramite un nome nel filesystem.
È un file contenente un percorso relativo od assoluto al file o directory a cui fa riferimento; questo permette di creare collegamenti non solo all'interno della stessa partizione, ma anche da un file system ad un altro, offrendo quindi più flessibilità rispetto ad un collegamento fisico.
Ha il rischio di rimanere "orfano" se il file a cui punta viene rimosso o rinominato.
È la tecnica utilizzata per verificare l'integrità di dati e metadati, fa da cuscino per le cosidette silent corruptions
http://www.linfo.org/checksum.htmlÈ la tecnica specializzata nella compressione dei dati per eliminare eventuali dati duplicati. Viene sfruttata per utilizzare meglio lo spazio di archiviazione dei dati.
https://en.wikipedia.org/wiki/Data_deduplicationÈ una strategia di ottimizzazione utilizzata quando multiple attività inizialmente utilizzano la stessa copia di una certa informazione (i.e. dati salvati su disco) che possono eventualmente modificare; la copia "vera" non viene creata fino a che il dato non viene modificato da una delle attività.
https://en.wikipedia.org/wiki/Copy-on-writeLa frammentazione è la suddivisione di un file in più blocchi o gruppi di blocchi non contigui. Obbliga ad un seek, ma permette di riempire meglio gli spazi vuoti nel disco.
Ha come svantaggio il non poter salvare un dato in un certo blocco di memoria se tale blocco è minore del dato da salvare
La deframmentazione è la rimozione della frammentazione.
area di memorizzazione contigua (blocchi contigui) riservata per un file. Riduce la frammentazione.
È una tecnica utilizzata da molti file system moderni per preservare l'integrità dei dati da eventuali cadute di tensione.
Quando un applicativo invia dei dati al file system per memorizzarli su disco, questo prima memorizza le operazioni che intende fare su un file di log e in seguito provvede a effettuare le scritture sul disco rigido, quindi registra sul file di log le operazioni che sono state effettuate.
È una copia esatta del contenuto del FS: in caso di rottura del disco, potrà essere sostituito e ripristinato.
È la quantità massima di spazio sul FS usabile da un utente, gruppo, processo (o una combinazione).
È una tecnica per prolungare il tempo di vita di alcune memorie flash, come quelle utilizzate negli SSD.
Viene effettuata dall’hardware, ma ha bisogno della collaborazione del SO (che deve sapere e indicare quali blocchi non sono più in uso).
Filesystem | Creatore | Anno di introduzione | SO originale |
---|---|---|---|
FAT32 | Microsoft | 1996 | Windows 95b |
Ntfs | Microsoft, Gary Kimura, Tom Miller | 1993 | Digital Unix |
ZFS | Sun Microsystems | 2004 | Solaris |
ext4 | various | 2006 | Linux |
Btrfs | Oracle Corporation | 2007 | Linux |
procfs: montato in /proc, fornisce informazioni sui processi attivi, sotto forma di pseudo filesystem (/proc/$PID)
sysfs: montato in /sys, permette di modificare paramentri del kernel e apprendere la configurazione di sistema
tmpfs: FS creato nella RAM, utile per /run, /var/lock e altre strutture "piccole" che hanno bisogno di velocità ma non devono resistere al reboot
aufs: ragruppa più fs, facendoli apparire come un solo fs virtuale. Successore di unionfs
squashfs: fs compresso in sola lettura. Viene spesso usato nei Live CD, facendo risparmiare spazio
ISO 9660 (e UDF): fs in sola lettura usato nei CD dati. UDF è il successore (usato nei CD-RW e nei DVD)
eCryptfs: overlay che supporta la cifratura trasparente a livello di singoli file e path (si può abilitare solo per una cartella)
Distinguiamo tre tipi di dispositivi diversi
Per ragioni di sicurezza, i dispositivi possono essere creati solo da root e non sono direttamente accessibili ai normali utenti
I dischi rigidi sono i principali dispositivi di memoria di massa che tramite il "volo" meccanico di due testine (una per lato) raggiungono o scrivono dati.
Le unità allo stato solido (SSD) si basano su memoria flash per l'immagazzinamento dei dati, modificando lo stato elettronico di celle di transistor; per questo essi non richiedono parti meccaniche in movimento (dischi, motori e testine), né componenti magnetici, riducendo i consumi elettrici e l'usura.
Sono le suddivisioni del disco. Ogni disco deve avere almeno una partizione, sulla quale si può creare il FS. Esistono due schemi di partizioni:
I dischi rigidi (quasi tutti) hanno un sistema di diagnostica interna, detto S.M.A.R.T., che fornisce diversi indicatori di affidabilità per anticipare i guasti e salvaguardare i dati. Alcuni dati forniti da S.M.A.R.T. sono:
Possono essere visualizzati con strumenti appositi: smartctl (CLI), gsmartcontrol e palimpsest (grafici).
I dispositivi compaiono sotto /dev e hanno nomi convenzionali. Tra i dispositivi speciali ci sono:
Altri dispositivi:
con X numero progressivo del dispositivo
I dischi PATA/SATA (la quasi totalità di quelli usati attualmente) usano un prefisso sd e una convenzione a due livelli
Pseudo-device che rende un file accessibile come se fosse un dispositivo a blocchi. Utile per montare immagini di dischi o chiavette senza doverle masterizzare.
Su unix classico i dispositivi vengono creati con mknod. Sui sistemi Linux moderni i dispositivi a blocchi sono creati e gestiti automagicamente da un demone, UDev.
fstab elenca tutti i dispositivi disponibili sul sistema e indica come vanno inizializzati o integrati nel FS del sistema. È usato ancora per la configurazione dell’hard disk principale e i FS di startup, ma è stato soppiantato da UDev per i dispositivi esterni.
Linea di /etc/fstab:
Ogni dispositivo ha un file speciale corrispondente nella cartella /dev. Per accedere ai dati contenuti in un dispositivo a blocchi (i file), bisogna "montarlo". Il comando per montare i filesystem è mount:
Eseguire mount senza argomenti mostrerà i fs attualmente montati con le relative opzioni.
È il comando simmetrico: serve a «smontare» un dispositivo, in modo da effettuare una rimozione sicura e indolore:
Non è possibile smontare un filesystem occupato (es. c’è un trasferimento di file in corso), in tal caso si usa fuser per mostrare il PID dei programmi che stanno usando il dispositivo. Va usato con privilegi di root
Indica quanto spazio libero rimane su ogni partizione. Viene spesso usato con l’opzione -h, che riporta le misure in unità «human-readable».
LUKS sta per Linux Unified Key Setup ed è un metodo di cifratura dei dischi rigidi.
LVM sta per Logical Volume Management utilizza la funzione di device-mapper del kernel Linux per fornire un sistema di partizioni che sia indipendente dalla sottostante struttura del disco fisico.
LVM non è utilizzato per la partizione /boot, a causa di problemi con il bootloader.
RAID sta per Redundant Array of Independent Disks: è una tecnica di raggruppamento di diversi dischi rigidi collegati ad un computer che li rende utilizzabili, dalle applicazioni e dall'utente, come se fosse un unico volume di memorizzazione.
https://it.wikipedia.org/wiki/RAID#Implementazioni_RAID https://www.youtube.com/watch?v=_xUDxTDj148