Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Global File System 2
Red Hat Global File System 2
Edizione 7
Sommario
Introduzione
1. A chi è rivolto
- Procedure di amministrazione dei sistemi Linux, incluso la configurazione del kernel
- Installazione e configurazione delle reti per lo storage condiviso, come ad esempio le Fibre Channel SAN
2. Documentazione correlata
- Installation Guide — Fornisce le informazioni relative all'installazione di Red Hat Enterprise Linux 6.
- Deployment Guide — Fornisce le informazioni relative all'implementazione, configurazione e amministrazione di Red Hat Enterprise Linux 6.
- Storage Administration Guide — Fornisce le informazioni necessarie ad una gestione efficiente dei dispositivi di storage e file system su Red Hat Enterprise Linux 6.
- Panoramica sull'High Availability Add-On — Fornisce una panoramica molto dettagliata sul Red Hat High Availability Add-On.
- Amministrazione del Cluster — Fornisce le informazioni relative all'installazione, configurazione e gestione di High Availability Add-On.
- Amministrazione del Logical Volume Manager — Fornisce una descrizione del Logical Volume Manager (LVM), ed include le informazioni su come eseguire LVM in un ambiente clusterizzato.
- DM Multipath — Fornisce le informazioni su come utilizzare il Device-Mapper Multipath di Red Hat Enterprise Linux.
- Amministrazione Load Balancer — Fornisce le informazioni necessarie per la configurazione di sistemi ad elevate prestazioni con il Load Balancer Add-On, un set di componenti software integrati il quale fornisce i Linux Virtual Servers (LVS) per il bilanciamento del carico IP su di un set di server reali.
- Note di rilascio — Fornisce le informazioni sulla release corrente dei prodotti di Red Hat.
3. Abbiamo bisogno dei vostri commenti!
rh-gfs2(EN)-6 (2014-10-8T15:15)
Capitolo 1. Panoramica sul GFS2
Nota
Nota
fsck.gfs2
su di un file system molto grande, richiederà molto tempo e consumerà una quantità molto grande di memoria. Altresì, nell'evento di un errore del disco o del sottosistema-disco, il tempo di ripristino sarà limitato dalla velocità del vostro dispositivo di backup. Per informazioni sulla quantità di memoria richiesto dal comando fsck.gfs2
consultate Sezione 4.11, «Come ripristinare un file system».
clvmd
, il quale gestisce i volumi logici LVM in un cluster. Il demone rende possibile l'utilizzo di LVM2 per la gestione dei volumi logici attraverso il cluster, permettendo a tutti i nodi presenti nel cluster stesso di condividere i volumi logici su ogni directory presente sul sistema. Per informazioni sul volume manager LVM, consultate la Guida dell'amministratore di LVM.
gfs2.ko
implementa il file system GFS2, ed è caricato sui nodi del cluster GFS2.
Nota
1.1. Funzioni nuove e modificate
1.1.1. Funzioni nuove e modificate di Red Hat Enterprise Linux 6.0
- Per la release di Red Hat Enterprise Linux 6, Red Hat non supporta l'uso del GFS2 come file system con un singolo nodo.
- Per la release di Red Hat Enterprise Linux 6 il comando
gfs2_convert
per l'aggiornamento da GFS ad un file system GFS2 è stato migliorato. Per informazioni su questo comando consultare Appendice B, Conversione di un file system da GFS a GFS2. - La release Red Hat Enterprise Linux 6 supporta le opzioni di mount
discard
,nodiscard
,barrier
,nobarrier
,quota_quantum
,statfs_quantum
, estatfs_percent
. Per informazioni sul montaggio di un file system GFS2 consultare Sezione 4.2, «Montaggio di un file system». - La versione di Red Hat Enterprise Linux 6 di questo documento contiene una nuova sezione Sezione 2.9, «Blocco dei nodi GFS2». Questa sezione riporta alcune informazioni più dettagliate dei file system GFS2.
1.1.2. Funzioni nuove e modificate di Red Hat Enterprise Linux 6.1
- Con Red Hat Enterprise Linux 6.1 è ora disponibile il supporto delle funzioni standard dei quota di Linux. La gestione del quota del GFS2 è documentata in Sezione 4.5, «Gestione quota del GFS2».Per release precedenti di Red Hat Enterprise Linux, GFS2 richiedeva l'uso del comando
gfs2_quota
per gestire i quota. La documentazione digfs2_quota
è ora disponibile in Appendice A, Gestione quota del GFS2 con il comandogfs2_quota
. - Questo documento contiene ora un nuovo capitolo, Capitolo 5, Diagnosi e correzioni dei problemi con i file system GFS2.
- Sono stati apportati su tutto il documento piccole correzioni e chiarimenti.
1.1.3. Funzioni nuove e modificate di Red Hat Enterprise Linux 6.2
- Con la versione di Red Hat Enterprise Linux 6.2, GFS2 è in grado di supportare l'uso del comando
tunegfs2
, il quale sostituisce alcune delle funzioni del comandogfs2_tool
. Per maggiori informazioni consultare la pagina man ditunegfs2
.Le seguenti sezioni sono state aggiornate e forniscono ora le procedure amministrative che non necessitano del comandogfs2_tool
:- Sezione 4.5.4, «Sincronizzazione dei Quota con il comando
quotasync
». e Sezione A.3, «Sincronizzazione del quota con il comandogfs2_quota
» descrivono ora come modificare il parametroquota_quantum
dal proprio valore predefinito di 60 secondi usando l'opzione di montaggioquota_quantum=
. - Sezione 4.10, «Sospensione di una attività su di un file system» descrive ora come sospendere l'attività di scrittura per un file system, utilizzando il comando
dmsetup
.suspend
- Questo documento include una nuova appendice, Appendice C, Tracepoint GFS2 e debugfs glock File, la quale descrive l'interfaccia
debugfs
di glock e i tracepoint di GFS2. È rivolto agli utenti esperti che desiderano approfondire le conoscenze sul design e i metodi per risolvere le problematiche specifiche al file system GFS2.
1.1.4. Funzioni nuove e modificate di Red Hat Enterprise Linux 6.3
1.1.5. Funzioni nuove e modificate di Red Hat Enterprise Linux 6.4
1.1.6. Funzionalità nuove e aggiornate per Red Hat Enterprise Linux 6.6
1.2. Prima d'impostare il GFS2
- Nodi GFS2
- Determina quali nodi presenti nel cluster monteranno i file system GFS2.
- Numero di file system
- Determina il numero iniziale di file system GFS2 da creare. (È possibile aggiungere successivamente un numero superiore di file system.)
- Nome del file system
- Determina un nome unico per ogni file system. Il nome deve essere unico per tutti i filesystem
lock_dlm
attraverso il cluester. Ogni nome del file system deve essere sottoforma di una variabile del parametro. Per esempio, questo manuale utilizza i nomi del file systemmydata1
emydata2
in alcuni esempi. - Journal
- Determina il numero di journal per i file system GFS2. Per ogni nodo che esegue il montaggio del file system GFS2 è necessario un journal. GFS2 permette di aggiungere dinamicamente i journal nelle fasi successive, poichè i server aggiuntivi eseguiranno il montaggio di un file system. Per maggiori informazioni su come aggiungere journal ad un file system GFS2 consultate la Sezione 4.7, «Come aggiungere i journal ad un file system».
- Dispositivi di storage e partizioni
- Determina i dispositivi di storage e le partizioni da usare per la creazione di volumi logici (via CLVM) nei file system.
Nota
1.3. Installazione di GFS2
gfs2-utils
per GFS2 e lvm2-cluster
per il Clustered Logical Volume Manager (CLVM). I pacchetti lvm2-cluster
e gfs2-utils
appartengono al canale ResilientStorage il quale deve essere essere abilitato prima di installare i pacchetti.
yum install
per installare i pacchetti del software di Red Hat High Availability Add-On:
# yum install rgmanager lvm2-cluster gfs2-utils
1.4. Differenze tra GFS e GFS2
gfs2_convert
. Per informazioni sull'utilità gfs2_convert
, consulare Appendice B, Conversione di un file system da GFS a GFS2.
1.4.1. Nomi dei comandi di GFS2
Tabella 1.1. Comandi GFS2 e GFS
Comando GFS | Comando GFS2 | Descrizione | ||||
---|---|---|---|---|---|---|
mount | mount | Esegue un mount del file system. Il sistema è in grado di determinare se il file system è di tipo GFS o GFS2. Per informazioni sulle opzioni di montaggio di GFS2 consultate la pagina man di gfs2_mount(8). | ||||
umount | umount | Smonta un file system. | ||||
|
| Controlla e ripara un file system non montato. | ||||
gfs_grow | gfs2_grow | Espande un file system montato. | ||||
gfs_jadd | gfs2_jadd | Aggiunge un journal ad un file system montato. | ||||
|
| Crea un file system su di un dispositivo di storage. | ||||
gfs_quota | gfs2_quota | Gestisce il quota su un file system montato. Con Red Hat Enterprise Linux 6.1 GFS2 supporta le funzioni standard del quota di Linux. è ora disponibile il supporto delle funzioni standard dei quota di Linux. La gestione del quota del GFS2 è documentata in Sezione 4.5, «Gestione quota del GFS2». | ||||
gfs_tool | tunegfs2
parametri di montaggio
dmsetup suspend
| Configura, regola, o raccoglie informazioni relative al file system. Con Red Hat Enterprise Linux 6.2, tunegfs2 è supportato. È presente altresì il comando gfs2_tool . | ||||
gfs_edit | gfs2_edit | Mostra, stampa o modifica le strutture interne del file system. Il comando gfs2_edit può essere usato sia per i file system GFS che per i file system GFS2. | ||||
gfs_tool setflag jdata/inherit_jdata | chattr +j (preferito) | Abilita il journaling su di un file o directory. | ||||
setfacl/getfacl | setfacl/getfacl | Imposta o acquisisce l'access control list del file per un file o directory. | ||||
setfattr/getfattr | setfattr/getfattr | Imposta o acquisisce gli attributi estesi di un file. |
1.4.2. Differenze aggiuntive tra GFS e GFS2
Context-Dependent Path Names
bind
del comando mount
. Per informazioni sui bind mounts ed i nomi del percorso che dipendono dal contesto in GFS2, consultare Sezione 4.12, «Mount Bind e Context-Dependent Path Names».
Modulo gfs2.ko
gfs.ko
. Il modulo del kernel che implementa il file system GFS2 è gfs2.ko
.
Come abilitare il Quota Enforcement in GFS2
Data Journaling
chattr
per impostare e rimuovere il flag j
su di un file o directory. L'impostazione del flag +j
su di un file abilita il data journaling su quel file. L'impostazione del flag +j
su di una directory significa "inherit jdata", il quale indica che tutti i file e le directory successivamente create nella directory in questione vengono salvati all'interno del journal. L'utilizzo del comando chattr
rappresenta il modo migliore per abilitare e disabilitare il data journaling su di un file.
Come aggiungere i journal dinamicamente
parametro atime_quantum rimosso
atime_quantum
, il quale può essere utilizzato dal file system GFS per specificare la cadenza degli aggiornamenti atime
. GFS2 supporta le opzioni di montaggio relatime
e noatime
. L'opzione di montaggio relatime
è consigliata per avere un comportamento simile all'impostazione del parametro atime_quantum
in GFS.
data= opzione del comando mount
data=ordered
o data=writeback
del comando mount
. Una volta impostato data=ordered
, i dati dell'utente modificati da una transazione verranno scaricati sul disco prima di confermare la transazione sul disco stesso. Tale operazione dovrebbe impedire una visualizzazione da parte dell'utente, dei blocchi non inizializzati all'interno di un file dopo il verificarsi di un crash. Se data=writeback
è stato impostato i dati verranno scritti in qualsiasi momento sul disco, dopo che lo stesso è stato già utilizzato. Tale operazione non garantisce una consistenza simile a quella garantita dalla modalità ordered
, ma dovrebbe essere più veloce sotto alcuni carichi di lavoro. La modalità predefinita è ordered
.
Il comando gfs2_tool
gfs2_tool
supporta un set diverso di opzioni per GFS2 rispetto al comando gfs_tool
per GFS:
- Il comando
gfs2_tool
supporta un parametrojournals
il quale stampa le informazioni relative al journal attualmente configurato, incluso il numero di journal contenuti da un file system. - Il comando
gfs2_tool
non supporta il flagcounters
, usato dal comandogfs_tool
per visualizzare le statistiche di GFS. - Il comando
gfs2_tool
non supporta il flaginherit_jdata
. Per impostare il flag di una directory in modo da indicare "inherit jdata", impostare il flagjdata
sulla directory o usare il comandochattr
per impostare il flag+j
. L'utilizzo del comandochattr
rappresenta il modo migliore per abilitare o disabilitare il data journaling su di un file.
Nota
tunegfs2
, il quale sostituisce alcune delle funzioni del comando gfs2_tool
. Per maggiori informazioni consultare la pagina man (8) di tunegfs2
. Le funzioni settune
e gettune
del comando gfs2_tool
, sono state sostituite dalle opzioni della linea di comando di mount
, è possibile ora una loro impostazione mediante il file fstab
quando necessario.
Il comando gfs2_edit
gfs2_edit
supporta un set diverso di opzioni per GFS2 rispetto al comando gfs_dit
per GFS. Per informazioni su opzioni specifiche supportate da ogni versione del comando consultare le pagine man gfs2_edit
e gfs_edit
.
1.4.3. Milgioramenti delle prestazioni di GFS2
- Migliore prestazione sotto condizioni di utilizzo intenso in una directory singola.
- Operazioni I/O sincrone più veloci
- Letture dati in cache più veloci (senza locking overhead)
- I/O diretto più veloce con file preassegnati (con una dimensione I/O ragionevolmente grande, come ad esempio 4M di blocchi)
- Operazioni I/O più veloci in generale
- Esecuzione più veloce del comando
df
, dovuto a chiamatestatfs
più veloci. - La modalità
atime
è stata migliorata in modo da ridurre il numero di operazioni I/O di scrittura generati daatime
quando confrontato con GFS.
- GFS2 è parte del kernel upstream (integrato in 2.6.19).
- GFS2 supporta le seguenti caratteristiche.
- attributi estesi del file (
xattr
) - le impostazioni degli attributi
lsattr
() echattr
() tramite le chiamate standardioctl
(). - timestamp in nanosecondi
- GFS2 utilizza una quantità di memoria minore del kernel.
- GFS2 non necessita di alcun numero di generazione dei metadata.L'assegnazione dei metadata GFS2 non necessita di alcun processo di lettura. Le copie delle sezioni dei metadata nei journal multipli, vengono gestite attraverso la revoca delle sezioni dal journal prima del rilascio del blocco.
- GFS2 include un log manager molto più semplice il quale non è a conoscenza degli inode non collegati o delle modifiche dei quota.
- I comandi
gfs2_grow
egfs2_jadd
utilizzano il locking per evitare l'esecuzione simultanea di istanze multiple. - Il codice ACL è stato semplificato per chiamate
creat
() emkdir
(). - Gli inode non collegati, le modifiche dei quota e le modifiche
statfs
vengono ripristinati senza montare nuovamente il journal.
Capitolo 2. Considerazioni operative e configurazione del GFS2
Importante
2.1. Considerazioni sulla formattazione
2.1.1. Dimensione del file system: è meglio avere una dimensione più piccola
- È necessario un minor tempo per il back up di ogni file system.
- Quantità di tempo minore per il controllo del file system con il comando
fsck.gfs2
. - Minore quantità di memoria necessaria per controllare il file system con il comando
fsck.gfs2
.
2.1.2. Dimensione blocco: È preferito il default di (4K) blocchi.
mkfs.gfs2
tenta di stimare una dimensione ottimale del blocco in base al tipo di dispositivo usato. In generale, blocchi da 4K sono la dimensione preferita poichè 4K è la dimensione predefinita della pagina (memoria) per Linux. Diversamente da altri file system, GFS2 esegue la maggior parte delle sue operazioni usando kernel buffer da 4K. Se la dimensione del blocco che utilizzate è di 4K, il kernel dovrà lavorare meno per manipolare i buffer.
2.1.3. Numero di journal: Uno per ogni nodo che esegue il montaggio
gfs2_jadd
. Con GFS2 è possibile aggiungere i journal in modo istantaneo.
2.1.4. Dimensione journal: Predefinita (128MB), generalmente risulta essere ottimale
mkfs.gfs2
per creare un file system GFS2, è possibile specificare la dimensione del journal. Se non specificate la dimensione del journal verrà impostato come default 128MB. Questa dimensione dovrebbe essere ottimale per la maggior parte delle applicazioni.
2.1.5. Dimensione e numero dei gruppi delle risorse
mkfs.gfs2
, lo storage verrà suddiviso in sezioni uniformi conosciute come gruppi di risorse. Durante questo processo verrà stimata una dimensione del gruppo ottimale (che varia da 32MB a 2GB). È possibile annullare l'impostazione predefinita con l'opzione -r
del comando mkfs.gfs2
.
- Come prima cosa quando un gruppo di risorse è pieno cercherà di non controllare l'assegnazione futura (fino a quando il blocco non risulta disponibile). Se i file non verranno mai rimossi, la contesa risulterà essere meno severa. Tuttavia, se l'applicazione usata cancella costantemente i blocchi assegnandone di nuovi su un file system quasi pieno, la contesa risulterà essere molto alta con un conseguente rallentamento delle prestazioni.
- Secondo, quando nuovi blocchi vengono aggiunti ad un file esistente, GFS2 cercherà di raggruppare i nuovi blocchi nello stesso gruppo di risorse del file. Questa operazione viene eseguita per aumentare le prestazioni: su un disco in rotazione, le ricerche richiederanno minior tempo se risultano essere fisicamente vicini.
2.2. Frammentazione del file system
2.3. Problematiche relative all'assegnazione del blocco
2.3.1. Avere spazio disponibile nel file system
2.3.2. Se possibile ogni nodo deve assegnare i propri file
2.3.3. Se possibile, preassegnate
fallocate
(1), utilizzabile per preassegnare i blocchi di dati.
2.4. Considerazioni sul cluster
2.5. Considerazioni sull'uso
2.5.1. Opzioni di montaggio: noatime e nodiratime
noatime
e nodiratime
. Ciò permetterà a GFS2 di utilizzare una quantità di tempo minore per l'aggiornamento degli inode del disco per ogni accesso.
2.5.2. Opzioni ottimizzazione DLM: Aumento dimensioni della tabella DLM
echo 1024 > /sys/kernel/config/dlm/cluster/lkbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/rsbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/dirtbl_size
2.5.3. Opzioni di ottimizzazione VFS: Ricerca e Sperimentazione
sysctl
(8). Per esempio i valori per dirty_background_ratio
e vfs_cache_pressure
possono essere regolati in modo desiderato. Per avere i valori correnti usare i seguenti comandi:
sysctl -n vm.dirty_background_ratio sysctl -n vm.vfs_cache_pressure
sysctl -w vm.dirty_background_ratio=20 sysctl -w vm.vfs_cache_pressure=500
/etc/sysctl.conf
.
2.5.4. SELinux: Evitare l'uso di SELinux su GFS2
2.5.5. Impostazione di NFS attraverso GFS2
Avvertimento
localflocks
. L'effetto desiderato è quello di forzare i blocchi POSIX di ogni server in modo da essere locali: es. non-clusterizzati, indipendenti tra loro. (Si possono verificare un certo numero di problemi se GFS2 cerca di implementare i blocchi POSIX da NFS sui nodi di un cluster.) Per applicazioni in esecuzione su client NFS, in presenza di blocchi POSIX localizzati due client possono avere contemporaneamente lo stesso blocco se i due client eseguono il montaggio da server differenti. Se tutti i client montano NFS da un server allora il problema di server separati che conferiscono indipendentemente gli stessi blocchi non sussiste. Se non siete sicuri di montare il file system con l'opzione localflocks
allora non utilizzate la suddetta opzione; è più sicuro avere i blocchi in funzione seguendo una modalità clusterizzata.
- Red Hat supporta solo le configurazioni Red Hat High Availability Add-On che utilizzano NFSv3 con una configurazione del blocco attiva/passiva con le seguenti caratteristiche:
- Il file system backend è un file system GFS2 in esecuzione su un cluster con 2 a 16 nodi.
- Un server NFSv3 viene definito come un servizio che esporta l'intero file system GFS2 da un nodo per volta del cluster.
- Il server NFS può passare (failover) da un nodo ad un altro del cluster (configurazione attiva/passiva).
- Non è permesso alcun accesso al file system GFS2 ad eccezione del server NFS. Ciò include l'accesso al file system GFS2 e attraverso Samba o Samba Clusterizzato.
- Non è presente alcun supporto del quota NFS sul sistema.
Questa configurazione rende disponibile una HA per il file system e riduce il tempo di inattività poichè il server NFS esegue il failover da un nodo ad un altro senza l'esecuzione del comandofsck
. - L'opzione NFS
fsid=
è obbligatoria per le esportazioni NFS di GFS2. - In presenza di alcune problematiche con il cluster (per esempio, se il cluster non ha più un quorum ed il fencing fallisce), i volumi logici clusterizzati ed il file system GFS2 verranno interrotti e non sarà più possibile un loro accesso fino a quando il cluster avrà nuovamente il suo quorum. Considerare questa impostazione se il tipo di failover sopra descritto è quello più appropriato per il vostro sistema.
2.5.6. Samba (SMB o Windows) File Serving attraverso GFS2
2.6. Backup del file systema
echo -n 3 > /proc/sys/vm/drop_caches
rsync
su directory specifiche ai nodi.
-o lockproto=lock_nolock
, poichè quest'ultima non sarà all'interno del cluster.
2.7. Considerazioni Hardware
- Usare migliori opzioni per l'archiviazioneGFS2 è in grado di operare su opzioni di storage condiviso più semplici come iSCSI o Fibre Channel over Ethernet (FCoE), ma per migliori prestazioni utilizzare opzioni di archiviazione migliori con una capacità di memorizzazione in cache maggiore. Red Hat esegue la maggior parte delle prove sulle prestazioni, qualità e di integrità su storage SAN con interconnessione Fibre Channel. Come regola generale è sempre meglio una implementazione precedentemente testata.
- Eseguire il test degli strumenti di rete prima del loro utilizzoStrumenti più veloci e di migliore qualità velocizzano le comunicazioni e il GFS2 di un cluster, aumentandone l'affidabilità. Tuttavia non è necessario acquistare l'hardware più costoso. Alcuni degli interruttori di rete più costosi presentano alcuni problemi nell'inoltro dei pacchetti multicast, usati a loro volta per passare gli
fcntl
lock (flock), mentre interruttori di rete meno costosi sono talvolta più veloci e più affidabili. È sempre meglio testare l'hardware prima di implementarlo in un ambiente di produzione.
2.8. Problematiche delle prestazioni: Controllare il Portale clienti di Red Hat
2.9. Blocco dei nodi GFS2
write
).
Nota
- Un inode viene usato in sola lettura su tutti i nodi.
- Un inode viene scritto o modificato solo da un nodo singolo.
mmap
() di un file su GFS2 con una mappatura lettura/scrittura, ma eseguite solo la lettura, tale operazione conta solo come lettura. Al contrario su GFS l'operazione conta come scrittura, in questi termini GFS2 è molto più scalabile con mmap
() I/O.
noatime
mount
, allora i processi di lettura causeranno l'aggiornamento dei timestamp del file anche da parte del processo di scrittura. È consigliato a tutti gli utenti di GFS2 di eseguire il montaggio usando noatime
a meno che non siano presenti requisiti specifici per atime
.
2.9.1. Problematiche con il Posix Locking
- L'uso di Flocks permette di avere una processazione più veloce rispetto ai lock di Posix.
- I programmi che utilzzano i lock di Posix in GFS2 non devono utilizzare la funzione
GETLK
, poichè in un ambiente clusterizzato l'ID del processo potrebbe essere per un nodo diverso nel cluster.
2.9.2. Regolazione delle prestazioni con GFS2
mbox
), o con una directory per ogni utente contente un file per ogni messaggio (maildir
). Quando arrivano le richieste attraverso IMAP, l'organizzazione ideale è quella di conferire ad ogni utente una affinità con un nodo specifico. In questo modo le richieste per la visualizzazione e rimozione dei messaggi di posta elettronica verranno serviti dalla cache presente sul nodo interessato. Ovviamente se il nodo fallisce, la sessione potrà essere riavviata su un altro nodo.
imap
che smtp
.
echo -n 3 >/proc/sys/vm/drop_caches
2.9.3. Risoluzione problematiche relative alle prestazioni di GFS2 con il GFS2 Lock Dump
debugfs
attraverso il seguente nome del percorso, assumendo che debugfs
sia stato montato su /sys/kernel/debug/
:
/sys/kernel/debug/gfs2/fsname/glocks
debugfs
è quello di utilizzare il comando cat
per avere una copia del contenuto completo del file (potrebbe richidere molto tempo se siete in possesso di una quantità di RAM molto grande ed un numero elevato di inode presenti in cache) se l'aplicazione presenta qualche problema, consultando le informazioni presenti in un secondo momento.
Nota
debugfs
una dopo qualche secondo o minuto dalla precedente. Confrontando le informazioni dell'holder nelle due tracce relative allo stesso numero di glock sarete in grado di verificare se il carico di lavoro prosegue senza alcun problema (lentamente) o se si è fermato (in questo caso siamo in presenza di un bug da riportare al supporto di Red Hat immediatamente).
debugfs
che iniziano con H: (holder 'detentori') rappresentano le richieste del blocco conferite o in attesa di essere assegnate. Il campo dei flag sulla linea f: mostra quale: Il flag 'W' si riferisce alla richiesta in attesa, 'H' invece si riferisce alla richiesta assegnata. I glock che possiedono un numero elevato di richieste d'attesa nella maggior parte dei casi sono quelli con maggiore contesa.
Tabella 2.1. Flag di glock
Flag | Nome | Significato |
---|---|---|
b | Blocco | Valido se impostato un flag locked, indica che l'operazione richiesta dal DLM potrebbe eseguire un blocco. Questo flag viene annullato per operazioni di declassamento e per lock "try". Lo scopo di questo flag è quello di permettere la raccolta di statistiche sul tempo di risposta DLM, indipendentemente dal tempo necessario per altri nodi di eseguire operazioni di demote dei lock. |
d | Pending demote | Una richiesta di retrocessione (remota) rinviata |
D | Demote (retrocessione) | Una richiesta di retrocessione (locale o remota) |
f | Log flush | È necessario eseguire il commit del log prima di rilasciare questo glock |
F | Frozen | Le repliche dei nodi remoti verranno ignorate - il recupero è in corso. Questo flag non si riferisce al freeze del file system, il quale utilizza un meccanismo diverso, ma viene usato solo per operazioni di ripristino. |
i | Invalidate in progress | La rimozione in questo glock della convilida delle pagine è in corso |
I | Initial | Impostato quando il blocco DLM è associato con questo glock |
l | Locked | Il glock è in procinto di cambiare stato |
L | LRU | Impostato quando glock è sull'elenco LRU |
o | Oggetto | Impostato quando glock è associato con un oggetto (cioè un inode per il tipo 2 di glock, e un gruppo di risorse per il tipo 3 di glock) |
p | Demote in progress | Glock è in procinto a rispondere ad una richiesta di retrocessione |
q | In coda | Impostato quando un holder è in coda per un glock ed è rimosso quando un glock è occupato, quando altri holder non sono disponibili. Usato come parte dell'algoritmo per il calcolo dell'intervallo minimo per un glock. |
r | Reply pending | La risposta ricevuta da un nodo remoto è in attesa di processazione |
y | Dirty | È necessario azzerare i dati sul disco prima di rilasciare questo glock |
Tabella 2.2. Flag holder di glock
Flag | Nome | Significato |
---|---|---|
a | Async | Non attendere il risultato di glock (il risultato verrà richiesto più avanti) |
A | Qualsiasi | Qualsiasi modalità di blocco compatibile è accettabile |
c | No cache | Quando sbloccato, retrocedi immediatamente il blocco DLM |
e | No expire | Ignora le richieste di cancellazione del blocco successive |
E | exact | Deve avere una modalità di blocco esatta |
F | First | Imposta quando l'holder è il primo ad essere conferito per questo blocco |
H | Holder | Indica che il blocco richiesto è stato conferito |
p | Priorità | Metti l'holder in cima alla coda |
t | Prova | Un blocco "try" |
T | Try 1CB | Un blocco "try" che invia una callback |
M | Wait | Imposta mentre in attesa del completamento della richiesta |
find -inum number
dove number è il numero inode modificato da un formato esadecimale nel file di glock in un formato decimale.
Nota
find
su di un file system in presenza di una contesa del blocco, molto probabilmente non farete altro che peggiorare il problema esistente. È consigliato arrestare l'applicazione prima di eseguire find
se siete alla ricerca di inode contesi.
Tabella 2.3. Tipi di glock
Numero tipo | Tipo di blocco | Uso |
---|---|---|
1 | Trans | Blocco transazione |
2 | Inode | Dati e metadati di Inode |
3 | Rgrp | Metadati del gruppo di risorse |
4 | Meta | Il superblocco |
5 | Iopen | Rilevamento ultimo nodo che ha utilizzato inode |
6 | Flock | flock (2) syscall |
8 | Quota | Operazioni quota |
9 | Diario | Journal mutex |
gfs2_grow
per estendere il file system.
Capitolo 3. Per iniziare
3.1. Prerequisiti
- Siate a conoscenza delle caratteristiche più importanti dei nodi GFS2 (consultare la Sezione 1.2, «Prima d'impostare il GFS2»).
- Assicuratevi che gli orologi presenti sui nodi del GFS2 siano sincronizzati. È consigliato utilizzare il software Network Time Protocol (NTP) presente con la distribuzione Red Hat Enterprise Linux.
Nota
Gli orologi del sistema presenti all'interno dei nodi del GFS2 devono essere impostati con qualche minuto di sfasamento tra loro, in modo da evitare un aggiornamento time-stamp dell'inode non necesario. Tali aggiornamenti non necessari possono influire negativamente sulle prestazioni del cluster - Per poter utilizzare il GFS2 in un ambiente clusterizzato sarà necessario configurare il sistema per un utilizzo del Clustered Logical Volume Manager (CLVM), un insieme di estensioni per il LVM Logical Volume Manager. Per poter usare il CLVM è necessario eseguire il software Red Hat Cluster Suite, incluso il demone
clvmd
. Per informazioni su come utilizzare CLVM consultare la Gestione del Logical Volume Manager. Per informazioni su come installare e gestire il Red Hat Cluster Suite consultare l'Amministrazione del Cluster.
3.2. Compiti iniziali per l'impostazione
- Impostazione dei volumi logici.
- Creazione di un file system GFS2.
- Montaggio dei file system.
- Utilizzando LVM, creare un volume logico per ogni file system GFS2 di Red Hat.
Nota
È possibile utilizzare gli scriptinit.d
inclusi in Red Hat Cluster Suite per attivare e disattivare automaticamente i volumi logici. Per maggiori informazioni sugli scriptinit.d
, consultate la Configurazione e Gestione di un Red Hat Cluster - Creare i file system GFS2 sui volumi logici creati durante la Fase 1. Scegliere un nome unico per ogni file system. Per maggiori informazioni sulla creazione di un file system GFS2, consultare la Sezione 4.1, «Creazione di un file system».È possibile utilizzare uno dei seguenti formati per la creazione di un file system GFS2 clusterizzato:
mkfs.gfs2 -p lock_dlm -t
ClusterName:FSName
-jNumberJournals BlockDevice
mkfs -t gfs2 -p lock_dlm -t
LockTableName
-jNumberJournals BlockDevice
Per maggiori informazioni su come creare un file system GFS2 consultare la Sezione 4.1, «Creazione di un file system». - Ad ogni nodo montare i file system GFS2. Per maggiori informazioni sul montaggio di un file system GFS2 consultare la Sezione 4.2, «Montaggio di un file system».Utilizzo del comando:
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
L'opzione
mount permette la manipolazione dei file ACL. Se un file system è stato montato senza l'opzione di mount-o
acl
, gli utenti saranno in grado di visualizzare gli ACL (con-o
aclgetfacl
), ma non saranno in grado di impostarli (consetfacl
).Nota
Utilizzare gli scriptinit.d
inclusi con il Red Hat High Availability Add-On per automatizzare i processi di montaggio e smontaggio dei file system GFS2.
Capitolo 4. Gestione del GFS2
4.1. Creazione di un file system
mkfs.gfs2
>. È possibile utilizzare mkfs
specificando l'opzione -t gfs2
. Così facendo verrà creato un file system sul volume LVM attivato. Le seguenti informazioni sono necessarie per eseguire il comando mkfs.gfs2
:
- Nome modulo/protocollo di blocco (il protocollo di blocco per un cluster è
lock_dlm
) - Nome del cluster (quando in esecuzione come parte di una configurazione del cluster)
- Numero di journal (un journal necessario per ogni nodo che monterà il file system)
mkfs.gfs2
, oppure il comando mkfs
con il parametro -t
specificando un filesystem di tipo gfs2
seguito dalle opzioni del file system gfs2.
Nota
mkfs.gfs2
non sarà possibile diminuire la dimensione del file system. Sarà possibile tuttavia aumentare la dimensione di un file system esistente con il comando gfs2_grow
come descritto in Sezione 4.6, «Come espandere un file system».
Utilizzo
mkfs.gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
Nota
mkfs.gfs2 -pLockProtoName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-jNumberJournals BlockDevice
Avvertimento
LockProtoName
e LockTableName
. Un utilizzo non appropriato dei parametri LockProtoName
e LockTableName
potrebbe causare la corruzione del file system o di lock space.
LockProtoName
- Specifica il nome del protocollo di blocco da usare. Il suddetto protocollo per un cluster è
lock_dlm
. LockTableName
- Questo parametro viene specificato per il file system GFS2 in una configurazione del cluster. Esso presenta due sezioni separate da due punti (senza spazio) nel seguente modo:
ClusterName:FSName
ClusterName
, il nome del cluster per il quale è stato creato il file system GFS2.FSName
, il nome del file system, può contenere da 1 a 16 caratteri ed il nome deve essere unico per tutti i file systemlock_dlm
presenti nel cluster, e per tutti i filesystem (lock_dlm
elock_nolock
) su ogni nodo locale.
Number
- Specifica il numero di journal da creare con il comando
mkfs.gfs2
. È necessaria l'implementazione di un journal per ogni nodo che monta il file system. Per i file system GFS2, è possibile aggiungere un numero maggiore di journal senza espandere il file system, come descritto nella Sezione 4.7, «Come aggiungere i journal ad un file system». BlockDevice
- Specifica un volume logico o fisico.
Esempi
lock_dlm
è il protocollo di blocco usato dal file system poichè esso è un file system clusterizzato. Il nome del cluster è alpha
, ed il nome del file system è mydata1
. Il file system contiene otto journal e viene creato su /dev/vg01/lvol0
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
mkfs -t gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
lock_dlm
, il quale può essere usato nel cluster alpha
. Il nome del file system è mydata2
. Il file system contiene otto journal e viene creato su /dev/vg01/lvol1
.
mkfs.gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
mkfs -t gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
Opzioni complete
mkfs.gfs2
» descrive le opzioni del comando mkfs.gfs2
(flag e parametri).
Tabella 4.1. Opzioni del comando: mkfs.gfs2
Flag | Parametro | Descrizione | |||||||
---|---|---|---|---|---|---|---|---|---|
-c | Megabytes | Imposta la dimensione iniziale di ogni quota change file del journal in Megabytes . | |||||||
-D | Abilita l'output di debugging. | ||||||||
-h | Aiuto. Mostra le opzioni disponibili. | ||||||||
-J | MegaBytes | Specifica la dimensione del journal in megabytes. La dimensione predefinita del journal è 128 megabytes. La dimensione minima è 8 megabytes. Journal più grandi migliorano le prestazioni anche se utilizzano una memoria maggiore rispetto ai journal più piccoli. | |||||||
-j | Number | Specifica il numero di journal da creare con il comando mkfs.gfs2 . Sarà necessario un journal per ogni nodo che monta il file system. Se questa opzione non viene specificata, verrà creato un solo journal. Per i file system GFS2, è possibile aggiungere un numero maggiore di journal senza espandere il file system. | |||||||
-O | Impedisce al comando mkfs.gfs2 di chiedere la conferma prima della scrittura sul file system. | ||||||||
-p | LockProtoName |
| |||||||
-q | Quiet. Non mostrare niente. | ||||||||
-r | MegaBytes | Specifica la dimensione delle risorse dei gruppi in megabytes. La dimensione minima della risorsa del gruppo è 32 MB. La dimensione massima è di 2048 MB. Una dimensione della risorsa del gruppo molto grande potrebbe aumentare le prestazioni su file system molto grandi. Se non specificato, mkfs.gfs2 sceglie la dimensione in base alla dimensione del file system: una dimensione media dei file system contiene circa 256MB di risorsa dei gruppi, file system più grandi avranno delle RG più grandi per migliori prestazioni. | |||||||
-t | LockTableName |
| |||||||
-u | MegaBytes | Specifica la dimensione iniziale del file dell'etichetta non collegato di ogni journal. | |||||||
-V | Mostra le informazioni sulla versione del comando |
4.2. Montaggio di un file system
Nota
cman
) non è stato ancora avviato:
[root@gfs-a24c-01 ~]# mount -t gfs2 -o noatime /dev/mapper/mpathap1 /mnt
gfs_controld join connect error: Connection refused
error mounting lockproto lock_dlm
-o acl
. Se un file system è stato montato senza l'opzione -o acl
, gli utenti saranno in grado di visualizzare le ACL (con getfacl
), senza però poterle impostare (con setfacl
).
Utilizzo
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
-o acl
- Opzione specifica al GFS2 che permettere la manipolazione dei file ACL.
BlockDevice
- Specifica il dispositivo a blocchi dove risiede il file system GFS2.
MountPoint
- Specifica la directory dove il file system GFS2 deve essere montato.
Esempio
/dev/vg01/lvol0
viene montato sulla directory /mygfs2
.
mount /dev/vg01/lvol0 /mygfs2
Utilizzo completo
mountBlockDevice MountPoint
-ooption
-o option
consiste in opzioni specifiche a GFS2 (consultare la Tabella 4.2, «Opzioni di mount specifiche al GFS2») o da opzioni mount -o
basate sugli standard di Linux, o tramite una combinazioni di entrambi. Le opzioni option
multiple vengono separate da virgole e non da spazi.
Nota
mount
è un comando Linux. In aggiunta all'utilizzo delle opzioni specifiche al GFS2 descritte in questa sezione, è possibile utilizzare altre opzioni standard del comando mount
(per esempio, -r
). Per informazioni su altre opzioni del comando mount
di Linux, consultare la pagina man di mount
.
-o option
che possono essere passati al GFS2 al momento del montaggio.
Nota
Tabella 4.2. Opzioni di mount specifiche al GFS2
Opzione | Descrizione | ||
---|---|---|---|
acl | Permette la manipolazione dei file ACL. Se un file system è stato montato senza l'opzione di montaggio acl , gli utenti saranno in grado di visualizzare le ACL (con getfacl ), senza però poterle impostare (con setfacl ). | ||
data=[ordered|writeback] | Una volta impostato data=ordered , i dati dell'utente modificati da una transazione verranno scaricati sul disco prima di confermare la transazione sul disco stesso. Tale operazione dovrebbe impedire una visualizzazione da parte dell'utente dei blocchi non inizializzati all'interno di un file dopo il verificarsi di un crash. Se invece è stato impostato data=writeback , i dati verranno scritti in qualsiasi momento sul disco, dopo che lo stesso è stato sporcato. Tale operazione non garantisce una consistenza simile a quella garantita dalla modalità ordered , ma dovrebbe essere più veloce sotto alcuni carichi di lavoro. La modalità predefinita è ordered . | ||
| Forza GFS2 a trattare il file system come se fosse un file system multihost. Per default utilizzando lock_nolock si abilita automaticamente il flag localcaching . | ||
| Indica a GFS2 di far eseguire flock e fcntl al livello VFS (virtual file system). Il flag localflocks viene automaticamente abilitato da lock_nolock . | ||
lockproto= LockModuleName | Permette all'utente di specificare il protocollo di blocco da usare con il file system. Se LockModuleName non risulta essere specificato, il nome del protocollo di blocco viene letto dal superblocco del file system. | ||
locktable= LockTableName | Permette all'utente di specificare la tabella di blocco da usare con il file system. | ||
quota=[off/account/on] | Abilita o disabilita i quota per un file system. L'impostazione dei quota in modo da essere in uno stato account , causa una gestione corretta delle statistiche di utilizzo per UID/GID da parte dei file system; i valori limiti e di avvertimento vengono ignorati. Il valore predefinito è off . | ||
errors=panic|withdraw | Se specificate errors=panic gli errori relativi al file system causeranno un kernel panic. Il comportamanto predefinito, simile a errors=withdraw , è quello per il sistema di ritirarsi dal file system e renderlo inacessibile fino al processo di riavvio successivo; In alcuni casi il sistema può restare in esecuzione. Per informazioni sulla funzione di 'withdraw' di GFS2 consultare Sezione 4.14, «Funzione Withdraw di GFS2». | ||
discard/nodiscard | Causa la generazione da parte di GFS2 delle richieste I/O "discard" per i blocchi che sono stati liberati. Utilizzabili da hardware idonei per implementare il thin provisioning e schemi simili. | ||
barrier/nobarrier | Causa l'invio da parte di GFS2 delle I/O barrier durante l'azzeramento del journal. Il valore predefinito è on . Questa opzione viene disattivata automaticamente se il dispositivo sottostante non supporta le I/O barrier. L'uso delle I/O barrier con GFS2 è altamente consigliato in ogni momento a meno che il dispositivo a blocchi è stato creato in modo tale da non poter perdere il contenuto del write cache (per esempio, se si trova su di un UPS e se sprovvisto di un write cache). | ||
quota_quantum=secs | Imposta il numero di secondi entro i quali una modifica delle informazioni relative ai quota è in grado di trascorrere in un nodo prima di essere scritta sul quota file. Esso rappresenta il metodo preferito per impostare questo parametro. Il valore è un numero intero di secondi maggiore di zero, per impostazione predefinita 60 secondi. Impostazioni più corte risultano in aggiornamenti più rapidi delle informazioni relative al lazy quota ed una possibilità più bassa di superare il quota. Impostazioni più lunghe rendono le operazioni dei file system più veloci ed efficienti. | ||
statfs_quantum=secs | L'impostazione di statfs_quantum su 0 rappresenta il metodo preferito per impostare la versione lenta di statfs . Il valore predefinito è 30 secondi il quale imposta il periodo di tempo massimo prima che le modifiche statfs vengono sincronizzate sul file statfs master. Tale impostazione può essere modificata in modo da permettere valori statfs più veloci ma meno accurati o valori più lenti e più accurati. Se impostata su 0 statfs riporterà sempre i valori veri. | ||
statfs_percent=value | Fornisce localmente un balzo sulla modifica in percentuale massima delle informazioni di statfs prima di sincronizzarle sul file statfs master anche se il periodo di tempo non è scaduto. Se impostato su statfs_quantum allora questa impostazione viene ignorata. |
4.3. Come smontare un file system
umount
.
Nota
umount
è un comando del sistema Linux. Le informazioni su questo comando sono disponibili nelle pagine man del comando umount
di Linux.
Utilizzo
umount MountPoint
MountPoint
- Specifica la directory sulla quale è attualmente montato il file system GFS2.
4.4. Considerazioni particolari durante il montaggio dei file system GFS2
fstab
non saranno riconosciuti dal sistema quando i file system verranno smontati al momento dell'arresto del sistema. Ne risulterà che lo script del GFS2 non smonterà il file system GFS2. Dopo aver eseguito lo script d'arresto di GFS2, il processo di arresto standard eliminerà tutti i processi dell'utente restanti, incluso l'infrastruttura del cluster provando così a smontare il file system. Questo processo fallirà senza alcuna sospensione del sistema e dell'infrastruttura del cluster.
- Usare sempre una voce nel file
fstab
per montare il file system GFS2. - Se un file system GFS2 è stato montato manualmente con il comando
mount
, assicuratevi di smontare il file system manualmente con il comandoumount
prima del reboot o dell'arresto del sistema.
4.5. Gestione quota del GFS2
quota=on
o quota=account
GFS2 controlla lo spazio utilizzato da ogni utente o gruppo, anche quando non è implementato alcun limite. Il GFS2 aggiorna le informazioni dei quota in modo tale da non aver bisogno di una ricostruzione dell'utilizzo del quota dopo il crash del sistema.
Nota
gfs2_quota
per la gestione dei quota. Per informazioni su questo comando consultare Appendice A, Gestione quota del GFS2 con il comando gfs2_quota
.
4.5.1. Configurazione dei disk quota
- Impostare i quota in modalità enforcement o accounting.
- Inizializzare il file del database quota con le informazioni correnti relative all'uso del blocco.
- Assegnare le politiche del quota. (In modalità accounting queste politiche non sono implementate.)
4.5.1.1. Impostazione dei quota in modalità Enforcement o Accounting.
quota=on
.
quota=account
.
Utilizzo
quota=on
.
mount -o quota=on BlockDevice MountPoint
quota=account
.
mount -o quota=account BlockDevice MountPoint
quota=off
. Questa risulta essere l'impostazioni predefinita.
mount -o quota=off BlockDevice MountPoint
quota={on|off|account}
on
- Specifica che il quota è stato abilitato quando il file system è montato.off
- Specifica che il quota è stato disabilitato quando il file system è montato.account
- Specifica la gestione delle statistiche dell'utente e del gruppo da parte del file system, anche se i limiti di quota non sono implementati.BlockDevice
- Specifica il dispositivo a blocchi dove risiede il file system GFS2.
MountPoint
- Specifica la directory dove il file system GFS2 deve essere montato.
Esempi
/dev/vg01/lvol0
è montato sulla directory /mygfs2
con quota accounting abilitato.
mount -o quota=on /dev/vg01/lvol0 /mygfs2
/dev/vg01/lvol0
è montato sulla directory /mygfs2
con un quota accounting gestito ma non implementato.
mount -o quota=account /dev/vg01/lvol0 /mygfs2
4.5.1.2. Creazione dei file del Quota Database
quotacheck
.
quotacheck
esamina i file system abilitati al quota e compila una tabella per l'uso corrente del disco per file system. La tabella viene usata per aggiornare la copia relativa all'uso del disco del file system. In aggiunta i file del disk quota del file system vengono aggiornati.
-u
e -g
del comando quotacheck
; per poter inizializzare entrambe le opzioni le stesse devono essere specificate. Per esempio, se i quota sono stati abilitati per il file system /home
, creare i file nella directory /home
:
quotacheck -ug /home
4.5.1.3. Assegnazione dei quota per utente
edquota
. Se avete montato il file system in modalità accounting (con l'opzione quota=account
), i quota non verranno implementati.
edquota username
/etc/fstab
per la partizione /home
(/dev/VolGroup00/LogVol02
nell'esempio di seguito riportato) e si esegue il comando edquota testuser
, verrà mostrato il seguente nell'editor configurato come il default per il sistema:
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0
Nota
EDITOR
sarà usato da edquota
. Per cambiare l'editor impostare la variabile EDITOR
nel file ~/.bash_profile
per il percorso completo dell'editor desiderato.
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000
quota testuser
4.5.1.4. Assegnazione dei quota per un gruppo
account=on
) i quota non verranno implementati.
devel
(è necessario che il gruppo esista per poter impostare un quota), usare il seguente comando:
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0
quota -g devel
4.5.2. Gestione del Disk Quota
repquota
. Per esempio il comando repquota /home
emette il seguente output:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
-a
), usare il seguente comando:
repquota -a
--
visualizzato dopo ogni utente è un modo semplice per determinare se sono stati superati i limiti del blocco. Se i limiti soft sono stati superati allora sarà possibile visualizzare un segno +
al posto del primo -
. Il secondo -
indica il limite dell'inode, ma i file system GFS2 non supportano i suddetti limiti quindi quel carattere resterà immutato (-
). I file system GFS2 non supportano alcun grace period quindi la colonna grace
resterà vuota.
repquota
non è supportato attraverso NFS, indipendentemente dal file system sottostante.
4.5.3. Mantenimento di un quota accurato
quotacheck
per creare, controllare e riparare i quota file. Eseguire altresì quotacheck
se credete che i quota file non siano accurati, ciò si può verificare quando un file system viene smontato incorrettamente dopo un arresto inaspettato del sistema.
quotacheck
consultare la pagina man di quotacheck
.
Nota
quotacheck
quando il file system è in sospensione (idle) su tutti i nodi poichè l'attività del disco potrebbe sfasare i valori elaborati dei quota.
4.5.4. Sincronizzazione dei Quota con il comando quotasync
quota_quantum
. È possibile modifcare il valore predefinito di 60 secondi usando l'opzione di montaggio quota_quantum=
come descritto in Tabella 4.2, «Opzioni di mount specifiche al GFS2». Altresì, il parametro quota_quantum
deve essere impostato su ogni nodo e ogni qualvolta viene montato il file system. Le modifiche del parametro quota_quantum
non verranno mantenute dopo i processi umount. È possibile aggiornare il valore quota_quantum
con mount -o remount
.
quotasync
per sincronizzare le informazioni relative al quota da un nodo al quota file sul disco tra gli aggiornamenti automatici eseguiti dal GFS2.
Utilizzo
quotasync [-ug] -a|mntpnt
...
u
- Sincronizzazione dei quota file dell'utente.
g
- Sincronizzazione dei quota file del gruppo
a
- Sincronizzare tutti i file system attualmente abilitati al quota e supporto della sincronizzazione. Senza -a sarà necessario specificare il mount point del file system.
mntpnt
- Specifica il file system GFS2 al quale vengono applicate le azioni.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Specifica il file system GFS2 al quale vengono applicate le azioni.
secs
- Specifica il nuovo periodo tra le normali sincronizzazioni del file quota del GFS2. I valori più piccoli possono rallentare le prestazioni.
Esempi
/mnt/mygfs2
.
# quotasync -ug /mnt/mygfs2
/mnt/mygfs2
, quando si esegue il rimontaggio del file system sul volume logico /dev/volgroup/logical_volume
.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
4.6. Come espandere un file system
gfs2_grow
viene usato per espandere un file system GFS2 dopo aver ingrandito il dispositivo sul quale risiede il file system. Con l'esecuzione di un comando gfs2_grow
su di un file system GFS2 esistente, verrà utilizzato tutto lo spazio rimasto tra la parte finale del file system, e la parte finale del dispositivo con una nuova estensione del file system GFS2 inizializzata. Una volta completata tale operazione, verrà aggiornato l'indice delle risorse per il file system. Tutti i nodi presenti nel cluster potranno usare lo spazio di storage appena aggiunto.
gfs2_grow
deve essere eseguito su di un file system montato, e su di un unico nodo del cluster. Tutti i nodi restanti noteranno l'avvenuta espansione ed automaticamente inizieranno ad usare il nuovo spazio.
Nota
mkfs.gfs2
non sarà possibile diminuire la dimensione del file system.
Utilizzo
gfs2_grow MountPoint
MountPoint
- Specifica il file system GFS2 al quale vengono applicate le azioni.
Commenti
gfs2_grow
:
- Eseguite il backup dei dati più importanti sul file system.
- Determinate il volume da espandere usato dal file system tramite il comando
df
.MountPoint
- Espandere il volume del cluster con LVM. Per informazioni sull'amministrazione dei volumi LVM consultate Amministrazione del Logical Volume Manager
gfs2_grow
, eseguite df
per controllare che il nuovo spazio sia disponibile nel file system.
Esempi
/mygfs2fs
.
[root@dash-01 ~]# gfs2_grow /mygfs2fs
FS: Mount Point: /mygfs2fs
FS: Device: /dev/mapper/gfs2testvg-gfs2testlv
FS: Size: 524288 (0x80000)
FS: RG size: 65533 (0xfffd)
DEV: Size: 655360 (0xa0000)
The file system grew by 512MB.
gfs2_grow complete.
Utilizzo completo
gfs2_grow [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Specifica la directory sulla quale è stato montato il file system GFS2.
Device
- Specifica il nodo del dispositivo del file system.
Tabella 4.3. Opzioni specifiche a GFS2 disponibili durante l'espansione di un file system
Opzione | Descrizione |
---|---|
-h | Help. Visualizza un breve messaggio relativo all'utilizzo |
-q | Quiet. Diminuisce il livello di verbosità |
-r MegaBytes | Specifica la dimensione della nuova risorsa del gruppo. La dimensione predefinita è 256MB. |
-T | Test. Esegue tutti i calcoli, ma non esegue la scrittura dei dati sul disco e non espande il file system. |
-V | Mostra le informazioni sulla versione del comando |
4.7. Come aggiungere i journal ad un file system
gfs2_jadd
viene usato per aggiungere i journal ad un file system GFS2. È possibile aggiungere journal ad un file system GFS2 in modo dinamico in qualsiasi momento, senza espandere il volume logico. Il comando gfs2_jadd
deve essere eseguito su di un file system montato, e solo su di un nodo nel cluster. Tutti i nodi restanti noteranno l'avvenuta espansione.
Nota
gfs2_jadd
fallirà anche se il volume logico contenente il file system è stato esteso e risulterà più grande del file system. Tale comportamento si verifica poichè in un file system GFS2 i journal sono file semplici e non metadati 'embedded', per questo motivo l'estensione del volume logico sottostante non fornirà alcuno spazio per i journal.
journals
di gfs2_tool
per sapere il numero di journal presenti nel file system GFS2. I seguenti esempi riportano il numero e la dimensione dei journal nel file system montato su /mnt/gfs2
.
[root@roth-01 ../cluster/gfs2]# gfs2_tool journals /mnt/gfs2
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
Utilizzo
gfs2_jadd -j Number MountPoint
Number
- Specifica il numero di nuovi journal da aggiungere.
MountPoint
- Specifica la directory sulla quale è stato montato il file system GFS2.
Esempi
/mygfs2
.
gfs2_jadd -j1 /mygfs2
/mygfs2
.
gfs2_jadd -j2 /mygfs2
Utilizzo completo
gfs2_jadd [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Specifica la directory sulla quale è stato montato il file system GFS2.
Device
- Specifica il nodo del dispositivo del file system.
Tabella 4.4. Opzioni specifiche al GFS2 disponibili per l'aggiunta dei journal
Flag | Parametro | Descrizione |
---|---|---|
-h | Help. Visualizza un breve messaggio sull'uso. | |
-J | MegaBytes | Specifica la dimensione dei nuovi journal in megabyte. La dimensione predefinita del journal è 128 megabyte. La dimensione minima è 32 megabyte. Per aggiungere journal con dimensioni diverse sul file system, eseguire il comando gfs2_jadd per ogni journal. La dimensione specificata durante la creazione del file system, viene arrotondata per difetto rendendola così multipla della dimensione del segmento del journal. |
-j | Number | Specifica il numero di nuovi journal da aggiungere tramite il comando gfs2_jadd . Il valore predefinito è 1. |
-q | Quiet. Diminuisce il livello di verbosità | |
-V | Mostra le informazioni sulla versione del comando |
4.8. Data Journaling
fsync()
su di un file, causerà la scrittura immediata dei dati del file sul disco. La chiamata ritorna quando il disco riporta il completamento della scrittura di tutti i dati.
fsync()
, in modo particolare per file più piccoli, poichè i dati del file vengono scritti sul journal in aggiunta ai metadati. Questo vantaggio si riduce velocemente con l'aumento della dimensione del file. La scrittura su file medio-grandi sarà più lento se il data journaling è stato abilitato.
fsync()
per eseguire la sincronizzazione dei dati del file possono avere migliori prestazioni attraverso il data journaling. Il data journaling può essere abilitato automaticamente per qualsiasi file GFS2 in una directory con opzione corretta (insieme a tutte le sottodirectory relative). I file esistenti con una lunghezza allo zero possono avere la funzione di journaling dei data abilitata o disabilitata.
chattr
:
/mnt/gfs2/gfs2_dir/newfile
, e successivamente controllano l'impostazione corretta del flag.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
/mnt/gfs2/gfs2_dir/newfile
, e successivamente controllano l'impostazione corretta del flag.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
chattr
per impostare il flag j
su di una directory. Quando impostate il suddetto flag per una directory, tutti i file e le directory successivamente create nella directory in questione, verranno salvate nel journal. L'insieme di comandi imposta il flag j
sulla directory gfs2_dir
, e controlla se il flag è stato impostato correttamente. Altresì, i comandi creeranno un nuovo file chiamato newfile
nella directory /mnt/gfs2/gfs2_dir
, e successivamente controlleranno l'impostazione del flag j
per il file. Poichè il flag j
è stato impostato per la directory, anche il newfile
dovrebbe avere il journaling abilitato.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
4.9. Configurazione degli aggiornamenti atime
ctime
— Ultimo cambiamento dello stato di un inodemtime
— Ultima modifica dei dati di un file (directory)atime
— L'ultimo accesso ai dati di un file (o directory)
atime
sono stati abilitati, come per impostazione predefinita sul GFS2 ed altri file system di Linux, ogni qualvolta il file viene letto, l'inode corrispondente deve essere aggiornato.
atime
, i suddetti aggiornamenti possono richiedere una quantità non necessaria di processi di scrittura e di attività di file locking. Tale traffico può influenzare negativamente le prestazioni, e per questo motivo è consigliato disabilitare o ridurre la frequezza degli aggiornamenti atime
.
atime
:
- Montaggio con
relatime
(atime relativo), il quale aggiornaatime
se l'aggiornamentoatime
precedente è più vecchio rispetto all'aggiornamentomtime
octime
. - Montaggio con
noatime
il quale disabilita gli aggiornamentiatime
sul file system in questione.
4.9.1. Montaggio con relatime
relatime
(atime relativo) può essere specificata quando il file system è stato montato. Ciò specifica che atime
viene aggiornato se l'aggiornamento atime
precedente è più vecchio rispetto all'aggiornamento mtime
o ctime
.
Utilizzo
mount BlockDevice MountPoint
-o relatime
BlockDevice
- Specifica il dispositivo a blocchi dove risiede il file system GFS2.
MountPoint
- Specifica la directory dove il file system GFS2 deve essere montato.
Esempio
/dev/vg01/lvol0
ed è montato sulla directory /mygfs2
. Gli aggiornamenti atime
si verificano solo se l'aggiornamento atime
precedente è più vecchio rispetto all'aggiornamento mtime
o ctime
.
mount /dev/vg01/lvol0 /mygfs2 -o relatime
4.9.2. Montaggio con noatime
noatime
può essere specificata se il file system è stato montato; questa opzione disabilita gli aggiornamenti atime
sul file system in questione.
Utilizzo
mount BlockDevice MountPoint
-o noatime
BlockDevice
- Specifica il dispositivo a blocchi dove risiede il file system GFS2.
MountPoint
- Specifica la directory dove il file system GFS2 deve essere montato.
Esempio
/dev/vg01/lvol0
e viene montato sulla directory /mygfs2
con aggiornamenti atime
disabilitati.
mount /dev/vg01/lvol0 /mygfs2 -o noatime
4.10. Sospensione di una attività su di un file system
dmsetup suspend
. Tale sospensione permette l'utilizzo di istantanee del dispositivo basato sull'hardware per catturare il file system in uno stato consistente. Il comando dmsetup resume
termina lo stato di sospensione.
Utilizzo
dmsetup suspend MountPoint
dmsetup resume MountPoint
MountPoint
- Specifica il file system.
Esempi
/mygfs2
.
# dmsetup suspend /mygfs2
/mygfs2
.
# dmsetup resume /mygfs2
4.11. Come ripristinare un file system
fsck.gfs2
.
Importante
fsck.gfs2
deve essere eseguito solo su di un file system non montato da tutti i nodi.
Importante
fsck.gfs2
. Il comando fsck.gfs2
non è in grado di determinare durante questo processo se il file system sia stato montato da un altro nodo presente nel cluster. Eseguire il comando fsck.gfs2
manualmente dopo il riavvio del sistema.
fsck.gfs2
non venga eseguito su un file system GFS2 al momento dell'avvio, modificare /etc/fstab
in modo tale che le ultime due colonne per il mount point del file system GFS2 riportino "0 0" e non "1 1" (o qualsiasi altro numero), come riportato nel seguente esempio:
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
Nota
fsck.gfs2
differisce da alcune versioni precedenti di gfs_fsck
nel modo di seguito riportato:
- La selezione di Ctrl+C durante l'esecuzione di
fsck.gfs2
interrompe e mostra un prompt il quale richiederà all'utente se abortire il comando, saltare il resto della fase corrente o continuare la processazione. - È possibile aumentare il livello di verbosità utilizando il flag
-v
. Aggiungendo un secondo flag-v
aumenterete ulteriormente tale livello. - È possibile diminuire il livello di verbosità utilizando il flag
-q
. Aggiungendo un secondo flag-q
diminuirete ulteriormente tale livello. - L'opzione
-n
apre un file system in modalità di sola lettura, e risponderà automaticamenteno
ad ogni richiesta. L'opzione fornisce un modo attraverso il quale si cercherà di utilizzare il comando per rilevare la presenza di errori, senza però permettere al comandofsck.gfs2
di essere implementato.
fsck.gfs2
per informazioni aggiuntive su altre opzioni del comando.
fsck.gfs2
necessita di una memoria del sistema superiore alla memoria usata per il sistema operativo e dal kernel. Ogni blocco della memoria nel file system GFS2 ha bisogno di circa cinque bit di memoria aggiuntiva o 5/8 di byte. Per questo motivo per una stima di byte della memoria necessari per eseguire il comando fsck.gfs2
sul file system, determinare il numero di blocchi contenuti dal file system e moltiplicare quel numero per 5/8.
fsck.gfs2
su di un file system GFS2 di 16TB con una dimensione del blocco di 4K, determinare prima il numero di blocchi di memoria contenuti nel file system, e dividere successivamente 16Tb con 4K.
17592186044416 / 4096 = 4294967296
4294967296 * 5/8 = 2684354560
fsck.gfs2
. Se la dimensione del blocco era 1K, l'esecuzione del comando fsck.gfs2
avrà bosogno di quattro volte la memoria, o approsimativamente di 11GB.
Utilizzo
fsck.gfs2 -y BlockDevice
-y
- Con il flag
-y
tutte le domande verranno risposte con unyes
. Con-y
, il comandofsck.gfs2
non vi richiederà alcuna risposta prima di eseguire le modifiche. BlockDevice
- Specifica il dispositivo a blocchi dove risiede il file system GFS2.
Esempio
/dev/testvol/testlv
viene riparato. Tutte le richieste di riparazione fatte vengono risposte automaticamente con yes
.
[root@dash-01 ~]# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete
4.12. Mount Bind e Context-Dependent Path Names
bind
del comando mount
.
bind
del comando mount
permette di rimontare parte della gerarchia del file su di una posizione diversa, pur restando disponibile nella posizione originale. Di seguito viene riportato il formato del comando:
mount --bind olddir newdir
olddir
saranno disponibili in due posizioni: olddir
e newdir
. È possibile utilizzare questa opzione per rendere disponibile un file singolo in due posizioni.
/root/tmp
risulteranno identici ai contenuti della directory /var/log
precedentemente montata.
[root@menscryfa ~]#cd ~root
[root@menscryfa ~]#mkdir ./tmp
[root@menscryfa ~]#mount --bind /var/log /root/tmp
/etc/fstab
in modo da avere gli stessi risultati al momento dell'esecuzione del mount. La suddetta entry di /etc/fstab
permetterà ai contenuti di /root/tmp
di essere identici ai contenuti della directory /var/log
.
/var/log /root/tmp none bind 0 0
mount
per controllare il montaggio del file system, come riportato nel seguente esempio.
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
/bin
come un Context-Dependent Path Name risolvibile in uno dei seguenti percorsi, a seconda dell'architettura del sistema.
/usr/i386-bin /usr/x86_64-bin /usr/ppc64-bin
/bin
vuota. Successivamente utilizzando uno script o una entry nel file /etc/fstab
, è possibile montare ogni directory individuale dell'architettura sulla directory /bin
, con un comando mount -bind
. Per esempio, è possibile usare il seguente comando all'interno di uno script.
mount --bind /usr/i386-bin /bin
/etc/fstab
.
/usr/1386-bin /bin none bind 0 0
%fill
per il file system). I Context-Dependent Path Names risultano molto più limitati nel contenuto. Da notare tuttavia che sarà necessario scrivere il proprio script per eseguire il mount in base al valore di %fill
.
Avvertimento
bind
ed il file system originale è stato precedentemente montato in modalità rw
, il nuovo file system sarà anch'esso montato in modalità rw
, anche se utilizzate il flag ro
; il flag ro
verrà ignorato senza generare alcun messaggio. In questo caso, il nuovo file system potrebbe essere contrassegnato in modo non corretto come ro
nella directory /proc/mounts
.
4.13. Mount bind e ordine di montaggio di un file system
bind
del comando mount
assicuratevi che i file system siano montati nell'ordine corretto. Nel seguente esempio la directory /var/log
deve essere montata prima di eseguire il mount bind sulla directory /tmp
:
# mount --bind /var/log /tmp
- In generale il montaggio dei file system è determinato dall'ordine nel quale il file system appare all'interno del file
fstab
. Eccezioni a questa regola sono i file system montati con il flag_netdev
o i file system che possiedono i propri scriptinit
. - Un file system con il proprio script
init
è montato nelle fasi successive del processo di inizializzazione, dopo il file system presente nel filefstab
. - File system montati con il flag
_netdev
sono montati dopo aver abilitato una rete sul sistema.
fstab
nel modo seguente:
- Montate i file system locali necessari per il mount bind.
- Eseguire il mount bind della directory sulla quale montare il file system GFS2.
- Montare il file system GFS2.
fstab
non sarà possibile montare i file system correttamente poichè il file system GFS2 non verrà montato fino a quando non sarà eseguito lo script init
di GFS2. In questo caso è consigliato scrivere uno script init
per eseguire il mount bind in modo tale che questa operazione non sia eseguita prima del montaggio del file system GFS2.
init
personalizzato. Esso esegue un mount bind di due directory su due directory di un file system GFS2. In questo esempio è presente un mount point GFS2 esistente su /mnt/gfs2a
, montato al momento dell'esecuzione dello script init
di GFS2, dopo l'avvio del cluster.
chkconfig
indicano quanto di seguito riportato:
- 345 indica i run level nei quali verrà iniziato lo script
- 29 è la priorità d'avvio la quale in questo caso indica che lo script verrà eseguito al momento dell'avvio dopo lo script
init
di GFS2, il quale avrà una priorità di 26 - 73 è la priorità d'arresto, in questo caso indica che lo script verrà arrestato durante il processo di shutdown prima dello script GFS2, il quale ha una priorità d'arresto pari a 74.
service start
ed un service stop
. Per esempio, se lo script è fredwilma
allora sarà possibile eseguire service fredwilma start
.
/etc/init.d
con gli stessi permessi di altri script presenti in quella directory. Successivamente sarà possibile eseguire un comando chkconfig on
per collegare lo script ai run level indicati. Per esempio se lo script è fredwilma
allora sarà possibile eseguire chkconfig fredwilma on
.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0
4.14. Funzione Withdraw di GFS2
fsck.gfs2
. La funzione withdraw di GFS è meno severa di un kernel panic, il quale potrebbe causare l'esecuzione del fencing di un nodo da parte di un altro nodo.
gfs2
abilitato ed il file system GFS2 è stato incluso nel file /etc/fstab
, il file system GFS2 verrà rimontato al momento del reboot. Se si verifica il ritiro del file system GFS2 a causa di una presunta corruzione del file system, è consigliato eseguire il comando fsck.gfs2
prima di rimontare il file system stesso. In questo caso per non rimontare il file system al momento dell'avvio eseguire la seguente procedura:
- Disabilitare momentaneamente lo script d'avvio sul nodo interessato con il seguente comando:
#
chkconfig gfs2 off
- Riavviare il nodo interessato avviando il software del cluster. Il file system GFS2 non verrà montato.
- Smontare il file system da ogni nodo nel cluster.
- Eseguire
fsck.gfs2
sul file system solo da un nodo in modo da assicurarsi che il file system non sia corrotto. - Abilitare nuovamente lo script d'avvio sul nodo interessato eseguendo il seguente comando:
#
chkconfig gfs2 on
- Rimontare il file system GFS2 da tutti i nodi nel cluster.
-o errors=panic
. Se la suddetta opzione è stata specificata, qualsiasi errore che normalmente è in grado di causare il ritiro del sistema causerà un processo di panic del sistema stesso. Tale operazione arresterà le comunicazioni con il cluster del nodo, causando così l'isolamento del nodo stesso.
gfs_controld
che richiede la revoca. Il demone gfs_controld
esegue il programma dmsetup
per posizionare il target di errore del device mapper sotto il file system impedendone l'accesso al dispositivo a blocchi. Successivamente verrà indicato al kernel che questa operazione è stata completata. Questo è il motivo per il quale il requisito per il supporto del GFS2 è quello di usare sempre un dispositivo CLVM sotto il GFS2, in caso contrario non sarà possibile inserire alcun target per il device mapper.
dmsetup
non è in grado di inserire un target d'errore come richiesto. Ciò si può verificare se è presente memoria insufficiente al momento della revoca e quindi sarà impossibile recuperare alcuna memoria a causa del problema che ha innescato la revoca stessa.
Capitolo 5. Diagnosi e correzioni dei problemi con i file system GFS2
5.1. Il file system GFS2 con prestazione lenta
5.2. Sospensione del file system GFS2 e riavvio di un nodo
- Il gfs2 lock dump per il file system su ogni nodo:
cat /sys/kernel/debug/gfs2/fsname/glocks >glocks.fsname.nodename
- Il DLM lock dump per il file system su ogni nodo: Per ottenere questo tipo di informazione usare
dlm_tool
:dlm_tool lockdebug -sv lsname.
In questo comando lsname è il nome usato da DLM per il file system in questione. Il suddetto valore è disponibile all'interno dell'output del comandogroup_tool
. - L'output del comando
sysrq -t
. - I contenuti del file
/var/log/messages
.
5.3. Sospensione del file system GFS2 e riavvio di tutti i nodi
- La presenza di un fencing fallito. I file system GFS2 verranno sospesi per assicurare l'integrità dei dati se si verifica il fallimento del processo di fencing. Controllare i log dei messaggi per la presenza di processi di fencing falliti al momento della sospensione. Assicurarsi che il fencing sia stato configurato correttamente.
- Il file system GFS2 potrebbe essere stato revocato. Controllate i log per la presenza della parola
withdraw
e di messaggi del GFS2 i quali indicano che il file system è stato revocato. La presenza di withdraw può indicare una corruzione del file system, il fallimento dello storage o un bug. Smontate il file system, aggiornate il pacchettogfs2-utils
ed eseguite il comandofsck
sul file system per ripristinare il servizio. Aprite un ticket con il Red Hat Support. Informateli della presenza di una revoca GFS2 e fornite i log necessari.Per informazioni sulla funzione withdraw di GFS2 consultare Sezione 4.14, «Funzione Withdraw di GFS2». - Questo errore potrebbe indicare la presenza di un blocco o di un bug. Raccogliere le informazioni durante uno di questi eventi ed aprire un ticket con il Red Hat Support, come descritto in Sezione 5.2, «Sospensione del file system GFS2 e riavvio di un nodo».
5.4. Impossibile montare il file system GFS2 su un nodo appena aggiunto al cluster
spectator
poichè l'uso del journal non è richiesto). È possibile aggiungere i journal ad un file system GFS2 con il comando gfs2_jadd
come descritto in Sezione 4.7, «Come aggiungere i journal ad un file system».
5.5. Spazio indicato come Usato in un file system vuoto
df
mostrerà che lo spazio sarà stato usato. Ciò si verifica poichè i journal del file system GFS2 consumano spazio (numero di journal * dimensione del journal) sul disco. Se avete creato un file system GFS2 con un numero di journal molto elevato o se avete specificato una dimensione molto grande del journal allora sarà possibile visualizzare che (numero di journal * dimensione di journal) lo spazio è già stato utilizzato quando eseguirete df
. Anche se non specificate un numero molto elevato o una dimensione molto grande dei journal, file system GFS2 piccoli (1GB o minori) mostreranno una quantità molto grande di spazio usato con la dimensione del journal predefinita.
Capitolo 6. Configurazione di un file system GFS2 in un cluster Pacemaker
cman
, clvmd
e pacemaker
su ogni nodo e creare il cluster Pacemaker. È necessario configurare il fencing per il cluster. Per informazioni su come configurare un cluster Pacemaker consultare la sezione Configurazione di Red Hat High Availability Add-On con Pacemaker.
- Impostare il parametro globale di Pacemaker
no_quorum_policy
sufreeze
.Nota
Per impostazione predefinita il valore dino-quorum-policy
è impostato sustop
, e indica che una volta perso il quorum tutte le risorse sulla partizione restante verranno immediatamente arrestate. Generalmente questa impostazione predefinita è quella più sicura e ottimale, ma diversamente dalla maggior parte delle risorse, GFS2 ha bisogno di un quorum per funzionare. Dopo la perdita di un quorum entrambe la applicazioni che utilizzano GFS2 eseguono il montaggio, questa operazione però non potrà essere arrestata correttamente. Qualsiasi tentativo di arrestare le risorse senza alcun quorum fallirà, isolando il cluster ogni qualvolta il quorum verrà perso.Per risolvere questo problema impostareno-quorum-policy=freeze
durante l'utilizzo di GFS2. Ciò significa che alla perdita del quorum, la partizione restante non eseguirà alcuna operazione fino a quando non sarà ristabilito il quorum.#
pcs property set no-quorum-policy=freeze
- Dopo aver controllato l'impostazione del tipo 3 di locking nel file
/etc/lvm/lvm.conf
, abilitando così il supporto del locking clusterizzato, creare il LV clusterizzato e formattare il volume con un file system GFS2. Create un numero di journal sufficiente per ogni nodo presente nel cluster.#
pvcreate /dev/vdb
#vgcreate -Ay -cy cluster_vg /dev/vdb
#lvcreate -L5G -n cluster_lv cluster_vg
#mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv
- Configurazione di una risorsa
clusterfs
.Non aggiungere il file system al file/etc/fstab
poichè esso verrà gestito come una risorsa del cluster Pacemaker. È possibile specificare le opzioni di montaggio come parte della configurazione delle risorse utilizzandooptions=options
. Eseguire il comandopcs resource describe Filesystem
per tutte le opzioni di configurazione.Questo comando usato per la creazione delle risorse del cluster specifica l'opzione di montaggionoatime
.#
pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" "options=noatime" op monitor interval=10s on-fail=fence clone interleave=true
- Verificare che GFS2 sia stato montato come previsto.
#
mount |grep /mnt/gfs2-demo
/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel) - (Facoltativo) Riavviare tutti i nodi del cluster per verificare la persistenza di gfs2 e il ripristino.
Appendice A. Gestione quota del GFS2 con il comando gfs2_quota
gfs2_quota
per gestire i quota. Questa appendice documenta l'uso del comando gfs2_quota
per la gestione dei quota del file system GFS2.
A.1. Impostazione dei quota con il comando gfs2_quota
gfs2_quota
. Utilizzare il comando su un nodo singolo sul quale è montato il GFS2.
quota=
del comando mount
durante il montaggio del file system GFS2 come riportato in Sezione A.4, «Come abilitare/disabilitare il Quota Enforcement».
Uso
gfs2_quota limit -uUser
-lSize
-fMountPoint
gfs2_quota limit -gGroup
-lSize
-fMountPoint
gfs2_quota warn -uUser
-lSize
-fMountPoint
gfs2_quota warn -gGroup
-lSize
-fMountPoint
User
- Un user ID da limitare o avvertire. Esso potrà essere un nome utente del file password o il numero UID.
Group
- Un group ID da limitare o avvertire. Esso potrà essere un nome del gruppo del file del gruppo o il numero GID.
Size
- Specifica il nuovo valore per un limite o un avviso. Per impostazione predefinita il valore è espresso in unità di megabyte. I flag
-k
,-s
e-b
modificano il valore in kilobyte, settori e blocchi del file system. MountPoint
- Specifica il file system GFS2 al quale vengono applicate le azioni.
Esempi
/mygfs2
.
# gfs2_quota limit -u Bert -l 1024 -f /mygfs2
/mygfs2
.
# gfs2_quota warn -g 21 -l 50 -k -f /mygfs2
A.2. Come visualizzare l'utilizzo ed i limiti del quota con il comando gfs2_quota
gfs2_quota get
. I contenuti del quota file possono essere visualizzati usando il comando gfs2_quota list
, in tal caso tutti gli ID con un soft limit, hard limit non zero, o un valore sono elencati.
Uso
gfs2_quota get -uUser
-fMountPoint
gfs2_quota get -gGroup
-fMountPoint
gfs2_quota list -f MountPoint
User
- Un user ID per la visualizzazione delle unformazioni relative ad un utente specifico. Esso potrà essere un nome utente del file password o il numero UID.
Group
- Un group ID per la visualizzazione delle unformazioni relative ad un gruppo specifico. Esso potrà essere il nome del gruppo o il numero GID.
MountPoint
- Specifica il file system GFS2 al quale vengono applicate le azioni.
Output del comando
gfs2_quota
sono visualizzate nel modo seguente:
userUser
: limit:LimitSize
warn:WarnSize
value:Value
groupGroup
: limit:LimitSize
warn:WarnSize
value:Value
LimitSize
, WarnSize
, e Value
sono rappresentati per impostazione predefinita in unità di megabyte. L'aggiunta dei flag -k
, -s
, o -b
alla linea di comando modificherà i valori in kilobyte, settori e blocchi del sistema.
User
- Un nome utente o ID ai quali vengono associati i dati.
Group
- Un nome del gruppo o ID ai quali vengono associati i dati.
LimitSize
- L'hard limit impostato per l'utente o il gruppo. Questo valore è zero se non è stato impostato alcun limite.
Value
- L'ammontare dello spazio del disco usato dall'utente o gruppo.
Commenti
gfs2_quota
non risolve gli UID e GID in nomi se l'opzione -n
viene aggiunta alla linea del comando.
-d
alla linea del comando. Tale impostazione è utile quando si cerca di far corrispondere i numeri del gfs2_quota
con i risultati di un comando du
.
Esempi
/mygfs2
.
# gfs2_quota list -f /mygfs2
users
sul file system /mygfs2
.
# gfs2_quota get -g users -f /mygfs2 -s
A.3. Sincronizzazione del quota con il comando gfs2_quota
quota_quantum
. È possibile modifcare il valore predefinito di 60 secondi usando l'opzione di montaggio quota_quantum=
come descritto in Tabella 4.2, «Opzioni di mount specifiche al GFS2». Altresì, il parametro quota_quantum
deve essere impostato su ogni nodo e ogni qualvolta viene montato il file system. Le modifiche del parametro quota_quantum
non verranno mantenute dopo i processi umount. È possibile aggiornare il valore quota_quantum
con mount -o remount
.
gfs2_quota sync
per sincronizzare le informazioni del quota di un nodo con il quota file sul disco tra gli aggiornamenti automatici eseguiti da GFS2.
Uso
gfs2_quota sync -f MountPoint
MountPoint
- Specifica il file system GFS2 al quale vengono applicate le azioni.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Specifica il file system GFS2 al quale vengono applicate le azioni.
secs
- Specifica il nuovo periodo tra le normali sincronizzazioni del quota file del GFS2. I valori più piccoli possono rallentare le prestazioni.
Esempi
/mygfs2
.
# gfs2_quota sync -f /mygfs2
/mnt/mygfs2
, quando si esegue il rimontaggio del file system sul volume logico /dev/volgroup/logical_volume
.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
A.4. Come abilitare/disabilitare il Quota Enforcement
quota=on
.
Uso
mount -o quota=on BlockDevice MountPoint
quota=off
. Questa è l'impostazione predefinita.
mount -o quota=off BlockDevice MountPoint
-o quota={on|off}
- Specifica che il quota enforcement è abilitato o disabilitato quando il file system è montato.
BlockDevice
- Specifica il dispositivo a blocchi sul quale risiede il file system GFS2.
MountPoint
- Specifica la directory dove montare il file system GFS2.
Esempi
/dev/vg01/lvol0
è montato sulla directory /mygfs2
con un quota enforcement abilitato.
# mount -o quota=on /dev/vg01/lvol0 /mygfs2
A.5. Come abilitare la contabilità dei quota
quota=account
.
Uso
mount -o quota=account BlockDevice MountPoint
-o quota=account
- Specifica la gestione delle statistiche dell'utente e del gruppo da parte del file system, anche se i limiti di quota non sono implementati.
BlockDevice
- Specifica il dispositivo a blocchi sul quale risiede il file system GFS2.
MountPoint
- Specifica la directory dove montare il file system GFS2.
Esempio
/dev/vg01/lvol0
viene montato sulla directory /mygfs2
con una contabilità del quota abilitata.
# mount -o quota=account /dev/vg01/lvol0 /mygfs2
Appendice B. Conversione di un file system da GFS a GFS2
gfs2_convert
. Da notare che è necessario eseguire la suddetta procedura su di un sistema Red Hat Enterprise Linux 5 prima di eseguire l'aggiornamento a Red Hat Enterprise Linux 6.
Avvertimento
gfs_fsck
per controllare il file system e correggere qualsiasi errore.
fsck.gfs2
sul file system fino a quando il processo di conversione non sia terminato.
B.1. Conversione dei Context-Dependent Path Names
bind
del comando mount
.
gfs2_convert
identifica CDPN sostituendoli con directory vuote aventi lo stesso nome. Per configurare i bind mount in modo da sostituire i CDPN, sarà necessario sapere i percorsi completi delle destinazioni dei link relativi ai CDPN che state sostituendo. Prima di convertire i file system usare il comando find
per identificare i link.
hostname
CDPN:
[root@smoke-01 gfs]# find /mnt/gfs -lname @hostname
/mnt/gfs/log
find
per altri CDPN (mach
, os
, sys
, uid
, gid
, jid
). Poichè i nomi CDPN possono avere un formato @hostname
o {hostname}
eseguire il comando find
per ogni variante.
B.2. Procedura conversione da GFS a GFS2
- Su di un sistema Red Hat Enterprise Linux eseguire un backup del vostro file system GFS esistente.
- Smontate il file system GFS da tutti i nodi presenti nel cluster.
- Eseguite il comando
gfs_fsck
sul file system GFS, in modo da assicurarvi che il file system non sia corrotto. - Eseguire
gfs2_convert
. Il sistema mostrerà le domande di conferma insieme ai messaggi d'avviso prima delle conversione digfsfilesystem
gfsfilesystem
in GFS2. - Aggiornamento al Red Hat Enterprise Linux 6.
/dev/shell_vg/500g
in un file system GFS2.
[root@shell-01 ~]# /root/cluster/gfs2/convert/gfs2_convert /dev/shell_vg/500g
gfs2_convert version 2 (built May 10 2010 10:05:40)
Copyright (C) Red Hat, Inc. 2004-2006 All rights reserved.
Examining file system..................
This program will convert a gfs1 filesystem to a gfs2 filesystem.
WARNING: This can't be undone. It is strongly advised that you:
1. Back up your entire filesystem first.
2. Run gfs_fsck first to ensure filesystem integrity.
3. Make sure the filesystem is NOT mounted from any node.
4. Make sure you have the latest software versions.
Convert /dev/shell_vg/500g from GFS1 to GFS2? (y/n)y
Converting resource groups...................
Converting inodes.
24208 inodes from 1862 rgs converted.
Fixing file and directory information.
18 cdpn symlinks moved to empty directories.
Converting journals.
Converting journal space to rg space.
Writing journal #1...done.
Writing journal #2...done.
Writing journal #3...done.
Writing journal #4...done.
Building GFS2 file system structures.
Removing obsolete GFS1 file system structures.
Committing changes to disk.
/dev/shell_vg/500g: filesystem converted successfully to gfs2.
Appendice C. Tracepoint GFS2 e debugfs glock File
debugfs
di glock che i tracepoint GFS2. Essa è rivolta agli utenti esperti con conoscenze approfondite dei file system, interessati a sviluppare ulteriormente le loro competenze sul design del GFS2 e su metodi di debug delle problematiche specifiche.
C.1. Tipi di tracepoint GFS2
blktrace
. I tracepoint di blktrace
possono essere utilizzati in combinazione con i tracepoint di GFS2, ottenendo quindi informazioni più dettagliate sulle prestazioni del sistema. A causa del livello operativo dei tracepoint, essi possono generare un volume elevato di dati in periodi molto brevi. I tracepoint sono stati ideati in modo da utilizzare carichi di lavoro minimi, ma al tempo stesso essi possono avere qualche effetto. Il filtraggio degli eventi può aiutare a ridurre il volume dei dati, facilitando così l'uso di informazioni utili alla comprensione di situazioni particolari.
C.2. Tracepoint
/sys/kernel/debug/tracing/
se debugfs
è stato montato nella posizione standard in /sys/kernel/debug
. La directory events
contiene tutti gli eventi rilevanti specificati e, in presenza del modulo gfs2
, sarà presente una sottodirectory gfs2
contenente ulteriori directory, una per ogni evento GFS2. I contenuti di /sys/kernel/debug/tracing/events/gfs2
dovrebbero somigliare al seguente:
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
enable
in ogni sottodirectory dell'evento. Situazione simile per il file filter
, il quale può essere utilizzato per impostare un filtro per ogni evento o insieme di eventi. Il significato dei singoli eventi viene affrontato in modo più dettagliato qui di seguito.
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
/sys/kernel/debug/tracing/trace_pipe
, può essere utilizzata quando è necessario consultare tutto l'output. Gli eventi vengono letti da questo file quando vengono generati; tramite questa interfaccia non sono disponibili le informazioni relative alla cronologia. Il formato dell'output è simile in entrambe le interfacce ed è descritto per ogni evento GFS2 in altre sezioni.
trace-cmd
è disponibile per la lettura dei dati relativi ai tracepoint. Per maggiori informazioni su questa utiliti consultare il link in Sezione C.10, «Riferimenti». trace-cmd
può essere utilizzata in modo simile a strace
, per esempio per l'esecuzione di un comando durante la raccolta delle informazioni desiderate.
C.3. Glock
Tabella C.1. Modalità glock e DLM lock
Modalità glock | Modalità DLM lock | Note |
---|---|---|
UN | IV/NL | Unlocked (nessun DLM lock associato con glock o con NL lock in base al flag I) |
SH | PR | Lock condiviso (lettura protetta) |
EX | EX | Lock esclusivo |
DF | CW | Posticipato (scrittura simultanea) isato per I/O Diretto e per la sospensione del file system |
Nota
lock_dlm
(da non confondere con DLM stesso) con GFS2.
Nota
Tabella C.2. Tipi di dati e modalità di glock
Modalità glock | Dati della cache | Metadati della cache | Dati corrotti | Metadati corrotti |
---|---|---|---|---|
UN | No | No | No | No |
SH | Si | Si | No | No |
DF | No | Si | No | No |
EX | Si | Si | Si | Si |
C.4. L'interfaccia debugfs di glock
debugfs
di glock permette di visualizzare lo stato interno dei glock e degli holder, include anche, in alcuni casi, un sommario degli oggetti bloccati. Ogni riga del file può iniziare con G: con doppio spazio (si riferisce a glock stesso) oppure con una lettera diversa, e con spazio singolo, e si riferisce alle strutture associate con glock immediatamente sopra nel file (H: rappresenta un holder, I: un inode e R: un gruppo di risorse). Di seguito viene riportato un esempio del contenuto di questo file:
G: s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2] R: n:258028 f:05 b:22256/22256 i:16800 G: s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522 G: s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2 G: s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
durante l'esecuzione di un postmark benchmark su un file system GFS2 di un nodo. Nell figura sono stati selezionati i glock in modo da mostrare alcune delle funzioni più interessanti dei glock dump.
iopen
relativo all'inode 75320. In presenza di inode e glock iopen
, il numero di glock è sempre identico al numero del blocco a disco dell'inode.
Nota
blktrace
) e con output di stat
(1).
debugfs
di glock.
Tabella C.3. Tipi di glock
Numero tipo | Tipo di lock | Uso |
---|---|---|
1 | trans | Lock di transazione |
2 | inode | Dati e metadati di Inode |
3 | rgrp | Metadati del gruppo di risorse |
4 | meta | Il superblocco |
5 | iopen | Rilevamento ultimo nodo che ha utilizzato inode |
6 | flock | flock (2) syscall |
8 | quota | Operazioni quota |
9 | journal | Journal mutex |
Tabella C.4. Flag di glock
Flag | Nome | Significato |
---|---|---|
d | Pending demote | Una richiesta di declassamento (remota) rinviata |
D | Demote (declassamento) | Una richiesta di declassamento (locale o remota) |
f | Log flush | È necessario eseguire il commit del log prima di rilasciare questo glock |
F | Frozen | Le risposte dai nodi remoti sono ignorate - il ripristino è in corso. |
i | Invalidate in progress | La rimozione in questo glock della convilida delle pagine è in corso |
I | Initial | Impostato quando il DLM lock è associato con questo glock |
l | Locked | Il glock è in procinto di cambiare stato |
L | LRU | Impostato quando glock è nell'elenco LRU |
o | Oggetto | Impostato quando glock è associato con un oggetto (cioè un inode per il tipo 2 di glock, e un gruppo di risorse per il tipo 3 di glock) |
p | Demote in progress | Glock è in procinto a rispondere ad una richiesta di declassamento |
q | In coda | Impostato quando un holder è in coda per un glock ed è rimosso quando un glock è occupato, quando altri holder non sono disponibili. Usato come parte dell'algoritmo per il calcolo dell'intervallo minimo per un glock. |
r | Reply pending | La risposta ricevuta da un nodo remoto è in attesa di processazione |
y | Dirty | È necessario azzerare i dati sul disco prima di rilasciare questo glock |
C.5. Holder di glock
Tabella C.5. Flag holder di glock
Flag | Nome | Significato |
---|---|---|
a | Async | Non attendere il risultato di glock (il risultato verrà richiesto più avanti) |
A | Qualsiasi | Qualsiasi modalità di blocco compatibile è accettabile |
c | No cache | Quando unlocked, declassa immediatamente DLM lock |
e | No expire | Ignora le richieste di cancellazione successive di lock |
E | Exact | Deve avere una modalità lock esatta |
F | First | Imposta quando un holder è il primo a essere conferito per questo lock |
H | Holder | Indica che il lock richiesto è stato conferito |
p | Priorità | Metti l'holder in cima alla coda |
t | Prova | Un lock "try" |
T | Try 1CB | Un lock "try" che invia una callback |
M | Wait | Imposta mentre in attesa del completamento della richiesta |
try 1CB
) invece, è simile al lock t ad eccezione del fatto che DLM invia una chiamata singola agli holder dei lock correnti non compatibili. Un tipo di utilizzo del lock T (try 1CB
) è con iopen
, utilizzati per una mediazione tra i nodi quando il conteggio i_nlink
di un inode è zero, e per determinare i nodi responsabili per la modifica dell'assegnazione dell'inode. Il glock iopen
normalmente presenta uno stato di shared (condiviso), ma se il conteggio i_nlink
è zero e ->delete_inode
() viene invocato, esso richiederà un lock esclusivo con l'insieme T (try 1CB
). Il processo di modifica dell'assegnazione dell'inode continuerà se viene conferito un lock. In caso contrario, i nodi che impedivano il conferimento di un lock creeranno un glock con il flag D (demote), che verrà revisionato in ->drop_inode
(), per assicurare che la modifica dell'assegnazione non venga dimenticata.
close
(). Altresì, quando il conteggio del link dell'inode viene diminuito fino a zero, l'inode sarà contrassegnato con uno stato speciale di zero link, ma ancora in uso nel bitmap del gruppo di risorse. Ciò funziona come l'elenco di orfani del file system3 ext3, e cioè permette a qualsiasi lettore del bitmap di sapere se è presente spazio disponibile in grado di essere recuperato.
C.6. Tracepoint di glock
gfs2_glock_state_change
è quello più importante poichè lo si utilizza per il controllo di ogni modifica sullo stato di glock, dalla creazione iniziale fino al declassamento finale che termina con gfs2_glock_put
, e NL finale in transizione su unlocked. Il flag di glock l (locked) viene sempre impostato prima della modifica dello stato, e non verrà rimosso se non nella parte finale. Durante la modifica dello stato (flag del detentore di glock H) non verrà mai conferito un holder. In presenza di holder nella coda, essi avranno sempre uno stato W (waiting). Dopo la modifica dello stato sarà possibile conferire un holder, questa è l'operazione finale prima della rimozione del flag l.
gfs2_demote_rq
controlla le richieste di declassamento, sia locali che remote. In presenza di memoria sufficiente sul nodo, le richieste di declassamento locali sono visualizzate raramente, e molto spesso vengono create a causa di operazioni di smontaggio o di reclamo della memoria. Il numero delle richieste di declassamento remote misura il livello di contesa tra i nodi per un gruppo di risorse o un inode particolare.
gfs2_promote
, ciò si verifica durante la fase finale di una modifica dello stato, o a causa di una richiesta di lock che può essere conferito immediatamente a causa dello stato di glock, il quale a sua volta memorizza in cache il lock con una modalità idonea. Dopo questa operazione verrà impostato il flag f (first). I gruppi di risorse utilizzano questo processo.
C.7. Tracepoint Bmap
gfs2_bmap
viene invocato due volte: la prima volta all'inizio per visualizzare la richiesta bmap, la seconda per visualizzare il risultato. Ciò facilita la corrispondenza delle richieste e dei risultati, e la misurazione del tempo necessario per mappare i blocchi nelle diverse parti del file system, in offset diversi del file o anche in file diversi. È altresì possibile visualizzare le dimensioni medie ritornate rispetto a quelle richieste.
gfs2_block_alloc
viene invocato non solo durante le operazioni di assegnazione, ma anche durante il processo di liberazione dei blocchi stessi. Poichè tutte le allocazioni si riferiscono all'inode per le quali è inteso il blocco, ciò può essere utilizzato per controllare quali blocchi fisici appartengono ai file di un file system attivo. Questa operazione è particolarmente utile se usata insieme con blktrace
, il quale è in grado di mostrare i percorsi I/O con problematiche relative che potrebbero far riferimento agli inode rilevanti, utilizzando la mappatura disponibile tramite questo tracepoint.
C.8. Tracepoint di log
gfs2_pin
), e il tempo necessario per salvare le operazioni sul log (gfs2_log_flush
). Questa operazione può essere particolarmente utile durante la risoluzioni di problematiche relative alle prestazioni del journal.
gfs2_log_blocks
controlla i blocchi riservati nel log, i quali possono assistere durante la visualizzazione se il log è troppo piccolo rispetto al carico di lavoro.
gfs2_ail_flush
(Red Hat Enterprise Linux 6.2 e versioni più recenti) è simile al gfs2_log_flush
poichè esso raccoglie le informazioni sull'inizio e la fine delle operazioni azzeramento dell'elenco AIL. L'elenco contiene i buffer riportati nel log, non ancora riscritti, e viene periodicamente azzerato per rendere disponibile più spazio utilizzabile dai file system, o per la richiesta di sync o fsync di un processo.
C.9. Statistiche di glock
dcount
è in grado di contare il numero di operazioni DLM richieste, e mostra la quantità di dati necessari per i calcoli di media/varianza.qcount
esegue un conteggio del numero di operazionisyscall
richieste. Generalmenteqcount
sarà uguale o maggiore didcount
.
- srtt/srttvar: Tempo medio di round trip per operazioni di non-blocco
- srttb/srttvarb: Tempo medio di round trip per operazioni di blocco
- irtt/irttvar: Tempo Inter-request (per esempio, tempo trascorso tra le richieste DLM)
sysfs
:
- Il file
glstats
. Questo file è simile aglocks
ma contiene le informazioni sulle statistiche, con un glock per riga. I dati vengono inizializzati "per cpu" per il tipo di glock per il quale è stato creato (a parte i contatori, che sono azzerati). Questo file può essere molto grande. - Il file
lkstats
. Al suo interno sono disponibili le informazioni "per cpu" per ogni tipo di glock. Ogni riga contiene un tipo d'informazione nella quale ogni colonna rappresenta una cpu core. Sono presenti otto righe per ogni tipo di glock, con ogni tipologia che si sussegue l'un l'altra.
C.10. Riferimenti
glocks
di GFS2, consultare le seguenti risorse:
- Questa appendice è stata parzialmente adattata da una presentazione di Steve Whitehouse alla Linux Symposium 2009, disponibile su http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=04 94f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Per informazioni sulle regole per il locking interne consultare http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=0494f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Per informazioni sugli eventi di tracciamento consultare http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/trace/events.txt;h=09bd8e9029892e4e1d48078de4d076e24eff3dd2;hb=HEAD.
- Per informazioni su
trace-cmd
consultare http://lwn.net/Articles/341902/.
Appendice D. Diario delle Revisioni
Diario delle Revisioni | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Revisione 7.1-3.2 | Wed Feb 4 2015 | Francesco Valente | |||||||||||
| |||||||||||||
Revisione 7.1-3.1 | Wed Feb 4 2015 | Francesco Valente | |||||||||||
| |||||||||||||
Revisione 7.1-3 | Tue Dec 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 7.0-9 | Wed Oct 8 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 7.0-8 | Thu Aug 7 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 7.0-4 | Thu Jul 17 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 7.0-3 | Wed Jul 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 7.0-1 | Thu Jun 5 2014 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 6.0-6 | Wed Nov 13 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 6.0-5 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 6.0-3 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 6.0-1 | Fri Sep 06 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 5.0-7 | Mon Feb 18 2013 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 5.0-5 | Mon Nov 26 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 5.0-4 | Tue Nov 13 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 5.0-1 | Mon Oct 15 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 4.0-2 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 4.0-1 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 3.0-2 | Thu Dec 1 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 3.0-1 | Mon Sep 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 2.0-1 | Thu May 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Revisione 1.0-1 | Wed Nov 15 2010 | Steven Levine | |||||||||||
|
Indice analitico
A
- atime, configurazione aggiornamenti, Configurazione degli aggiornamenti atime
- montaggio con noatime , Montaggio con noatime
- montaggio con relatime , Montaggio con relatime
B
- blocco dei nodi, Blocco dei nodi GFS2
C
- chi è rivolto, A chi è rivolto
- comando fsck.gfs2, Come ripristinare un file system
- comando gfs2_grow, Come espandere un file system
- comando gfs2_jadd, Come aggiungere i journal ad un file system
- comando gfs2_quota, Gestione quota del GFS2 con il comando gfs2_quota
- comando mkfs, Creazione di un file system
- comando mount, Montaggio di un file system
- comando quotacheck
- controllo accuratezza del quota con, Mantenimento di un quota accurato
- comando umount, Come smontare un file system
- come aggiungere i journal ad un file system, Come aggiungere i journal ad un file system
- come espandere un file system, Come espandere un file system
- come riparare un file system, Come ripristinare un file system
- come smontare un file system, Come smontare un file system, Considerazioni particolari durante il montaggio dei file system GFS2
- commento
- informazioni di contatto per questo manuale, Abbiamo bisogno dei vostri commenti!
- compiti iniziali
- impostazione, iniziale, Compiti iniziali per l'impostazione
- compiti prerequisiti
- configurazione, iniziale, Prerequisiti
- configurazione iniziale
- compiti prerequisiti, Prerequisiti
- configurazione, iniziale, Per iniziare
- configurazione, prima, Prima d'impostare il GFS2
- Considerazioni sulla configurazione, Considerazioni operative e configurazione del GFS2
- Context-Dependent Path Names (CDPNs)
- Conversione da GFS a GFS2, Conversione dei Context-Dependent Path Names
- creazione di un file system, Creazione di un file system
D
- data journaling, Data Journaling
- debugfs, Tracepoint GFS2 e debugfs glock File
- Dimensione massima del file system GFS2, Panoramica sul GFS2
- dimensione massima, file systen GFS2, Panoramica sul GFS2
- disk quota
- assegnazione per gruppo, Assegnazione dei quota per un gruppo
- assegnazione per utente, Assegnazione dei quota per utente
- come abilitare
- creazione file del quota, Creazione dei file del Quota Database
- esecuzione di quotacheck , Creazione dei file del Quota Database
- gestione di, Gestione del Disk Quota
- comando quotacheck, utilizzo per il controllo, Mantenimento di un quota accurato
- riporto, Gestione del Disk Quota
- hard limit, Assegnazione dei quota per utente
- risorse aggiuntive, Riferimenti
- soft limit, Assegnazione dei quota per utente
- disk quotas
- come abilitare, Configurazione dei disk quota
F
- file debugfs, Risoluzione problematiche relative alle prestazioni di GFS2 con il GFS2 Lock Dump
- file system
- atime, configurazione aggiornamenti, Configurazione degli aggiornamenti atime
- montaggio con noatime , Montaggio con noatime
- montaggio con relatime , Montaggio con relatime
- come aggiungere i journal, Come aggiungere i journal ad un file system
- context-dependent path names (CDPN), Mount Bind e Context-Dependent Path Names
- creazione, Creazione di un file system
- data journaling, Data Journaling
- espandere, Come espandere un file system
- gestione dei quota
- sincronizzazione dei quota, Sincronizzazione dei Quota con il comando quotasync
- gestione del quota, Gestione quota del GFS2 con il comando gfs2_quota
- come abilitare la contabilità dei quota, Come abilitare la contabilità dei quota
- come abilitare/disabilitare il quota enforcement, Come abilitare/disabilitare il Quota Enforcement
- impostazione dei quota, Impostazione dei quota con il comando gfs2_quota
- sincronizzazione dei quota, Sincronizzazione del quota con il comando gfs2_quota
- visualizzazione dei limiti del quota, Come visualizzare l'utilizzo ed i limiti del quota con il comando gfs2_quota
- gestione quota, Gestione quota del GFS2, Impostazione dei quota in modalità Enforcement o Accounting.
- montaggio, Montaggio di un file system, Considerazioni particolari durante il montaggio dei file system GFS2
- mount bind, Mount Bind e Context-Dependent Path Names
- ordine di montaggio, Mount bind e ordine di montaggio di un file system
- riparazione, Come ripristinare un file system
- smontare, Come smontare un file system, Considerazioni particolari durante il montaggio dei file system GFS2
- sospensione attività, Sospensione di una attività su di un file system
- flag glock, Risoluzione problematiche relative alle prestazioni di GFS2 con il GFS2 Lock Dump, L'interfaccia debugfs di glock
- flag holder di glock, Risoluzione problematiche relative alle prestazioni di GFS2 con il GFS2 Lock Dump, Holder di glock
- funzione withdraw, GFS2, Funzione Withdraw di GFS2
- funzioni, nuove e modificate, Funzioni nuove e modificate
G
- gestioen del quota
- visualizzazione dei limiti del quota, Come visualizzare l'utilizzo ed i limiti del quota con il comando gfs2_quota
- gestione dei quota
- sincronizzazione dei quota, Sincronizzazione dei Quota con il comando quotasync
- gestione del GFS2, Gestione del GFS2
- gestione del quota, Gestione quota del GFS2 con il comando gfs2_quota
- come abilitare la contabilità dei quota, Come abilitare la contabilità dei quota
- come abilitare/disabilitare il quota enforcement, Come abilitare/disabilitare il Quota Enforcement
- impostazione dei quota, Impostazione dei quota con il comando gfs2_quota
- sincronizzazione dei quota, Sincronizzazione del quota con il comando gfs2_quota
- gestione quota, Gestione quota del GFS2, Impostazione dei quota in modalità Enforcement o Accounting.
- GFS2
- atime, configurazione aggiornamenti, Configurazione degli aggiornamenti atime
- montaggio con noatime , Montaggio con noatime
- montaggio con relatime , Montaggio con relatime
- Considerazioni sulla configurazione, Considerazioni operative e configurazione del GFS2
- Funzionamento, Considerazioni operative e configurazione del GFS2
- funzione withdraw, Funzione Withdraw di GFS2
- gestione, Gestione del GFS2
- gestione dei quota
- sincronizzazione dei quota, Sincronizzazione dei Quota con il comando quotasync
- gestione del quota, Gestione quota del GFS2 con il comando gfs2_quota
- come abilitare la contabilità dei quota, Come abilitare la contabilità dei quota
- come abilitare/disabilitare il quota enforcement, Come abilitare/disabilitare il Quota Enforcement
- impostazione dei quota, Impostazione dei quota con il comando gfs2_quota
- sincronizzazione dei quota, Sincronizzazione del quota con il comando gfs2_quota
- visualizzazione dei limiti del quotas, Come visualizzare l'utilizzo ed i limiti del quota con il comando gfs2_quota
- gestione quota, Gestione quota del GFS2, Impostazione dei quota in modalità Enforcement o Accounting.
- glock, Tracepoint GFS2 e debugfs glock File
I
- impostazione, iniziale
- compiti iniziali, Compiti iniziali per l'impostazione
- introduzione, Introduzione
- a chi è rivolto, A chi è rivolto
M
- montaggio di un file system, Montaggio di un file system, Considerazioni particolari durante il montaggio dei file system GFS2
- mount bind, Mount Bind e Context-Dependent Path Names
- ordine di montaggio, Mount bind e ordine di montaggio di un file system
O
- opzione di montaggio quota= , Impostazione dei quota con il comando gfs2_quota
- opzione di mount acl, Montaggio di un file system
- opzioni specifiche a GFS2 per la tabella d'espansione dei file system, Utilizzo completo
- opzioni specifiche al GFS2 per l'aggiunta della tabella dei journal, Utilizzo completo
P
- panoramica, Panoramica sul GFS2
- configurazione, prima, Prima d'impostare il GFS2
- funzioni, nuove e modificate, Funzioni nuove e modificate
- parametro regolabile quota_quantum, Sincronizzazione dei Quota con il comando quotasync, Sincronizzazione del quota con il comando gfs2_quota
- path names, context-dependent (CDPN), Mount Bind e Context-Dependent Path Names
- Posix locking, Problematiche con il Posix Locking
- prefazione (vedi introduzione)
Q
- quotacheck , Creazione dei file del Quota Database
R
- regolazione delle prestazioni, Regolazione delle prestazioni con GFS2
- regolazione, prestazioni, Regolazione delle prestazioni con GFS2
S
- smontare, sospensione del sistema, Considerazioni particolari durante il montaggio dei file system GFS2
- sospensione del sistema durante lo smontaggio, Considerazioni particolari durante il montaggio dei file system GFS2
- sospensione dell'attività su di un file system, Sospensione di una attività su di un file system
T
- tabella di montaggio, Utilizzo completo
- tabella opzioni del comando mkfs.gfs2, Opzioni complete
- tabelle
- opzioni del comando mkfs.gfs2, Opzioni complete
- opzioni di montaggio, Utilizzo completo
- opzioni specifiche a GFS2 per l'espansione dei file system, Utilizzo completo
- opzioni specifiche al GFS2 per l'aggiunta dei journal, Utilizzo completo
- Tipi di glock, Risoluzione problematiche relative alle prestazioni di GFS2 con il GFS2 Lock Dump, L'interfaccia debugfs di glock
- tracepoint, Tracepoint GFS2 e debugfs glock File