Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
XFS e il fantomatico Error 990
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Sun May 21, 2006 7:35 pm    Post subject: XFS e il fantomatico Error 990 Reply with quote

Proprio per l'uso esasperato delle 'tree structures', il filesystem XFS è particolarmente soggetto alla corruzione dei dati in memoria. Ecco quindi che in particolarissime situazioni, molto rare, la corruzione dei dati in memoria si trasforma in una corruzione dei dati fisici presenti in XFS o nella sua struttura (inodes).

Se questo dovesse succedere, XFS genera a video messaggi di warning relativi a problemi di I/O, nei logs vengono generati errori di I/O sulla periferica IDE/SATA/SCSI e tutto l'intero sistema si paralizza. Il reboot della macchina non sortisce nessun effetto, appena il FS viene ri-montato vengono segnalati nuovamente a video i warning di I/O e tutto il sistema operativo si blocca nuovamente.

esempio di errore I/O rilevabile nei logs:
Code:

May 21 16:14:39 [kernel]  [<c01be0f8>] xfs_iget_core+0x17f/0x408
May 21 16:14:39 [kernel]  [<c01be3e5>] xfs_iget+0x64/0xe1
May 21 16:14:39 [kernel]  [<c01d3239>] xfs_dir_lookup_int+0x53/0xaa
May 21 16:14:39 [kernel]  [<c01d7b3c>] xfs_lookup+0x48/0x71
May 21 16:14:39 [kernel]  [<c01e1134>] linvfs_lookup+0x2b/0x60
May 21 16:14:39 [kernel]  [<c014cdc7>] real_lookup+0x53/0xad
May 21 16:14:39 [kernel]  [<c014cfe4>] do_lookup+0x49/0x78
May 21 16:14:39 [kernel]  [<c014d5dc>] __link_path_walk+0x5c9/0x93b
May 21 16:14:39 [kernel]  [<c014d98f>] link_path_walk+0x41/0xaa
May 21 16:14:39 [kernel]  [<c0136cbe>] do_anonymous_page+0xa8/0x109
May 21 16:14:39 [kernel]  [<c0136fe4>] __handle_mm_fault+0xa6/0x167
May 21 16:14:39 [kernel]  [<c01f5a2c>] strncpy_from_user+0x2d/0x4c
May 21 16:14:39 [kernel]  [<c014dce2>] do_path_lookup+0x182/0x19d
May 21 16:14:39 [kernel]  [<c014df12>] __user_walk_fd+0x29/0x3f
May 21 16:14:39 [kernel]  [<c0149b7e>] vfs_lstat_fd+0x12/0x39
May 21 16:14:39 [kernel]  [<c0136cbe>] do_anonymous_page+0xa8/0x109
May 21 16:14:39 [kernel]  [<c0136fe4>] __handle_mm_fault+0xa6/0x167
May 21 16:14:39 [kernel]  [<c014a103>] sys_lstat64+0xf/0x23
May 21 16:14:39 [kernel]  [<c0111df3>] do_page_fault+0x17b/0x4cb
May 21 16:14:39 [kernel]  [<c0111c78>] do_page_fault+0x0/0x4cb
May 21 16:14:39 [kernel]  [<c01028cb>] sysenter_past_esp+0x54/0x75
May 21 16:15:14 [kernel] Filesystem "hdc2": corrupt dinode 68934869, extent total = 1, nblocks = 0.  Unmount and run xfs_repair.
May 21 16:15:14 [kernel] 0x0: 49 4e 81 a4 01 02 00 01 00 00 00 00 00 00 00 00
May 21 16:15:14 [kernel] Filesystem "hdc2": XFS internal error xfs_iformat(1) at line 415 of file fs/xfs/xfs_inode.c.  Caller 0xc01bfe12
May 21 16:15:14 [kernel]  [<c01bf02c>] xfs_iformat+0x1be/0x48e
May 21 16:15:14 [kernel]  [<c01bfe12>] xfs_iread+0xbd/0x19d


Gli user più impavidi si armano di livecd o di altro cd-rescue, e fanno un check della partizione con xfs_check e xfs_repair sperando nel miracolo, ma aimè xfs_repair si fermerà sempre mostrando a video il seguente errore:

Code:
Filesystem "hdc2": corrupt dinode 68934869, extent total = 1, nblocks = 0.  Unmount and run xfs_repair
fatal error -- couldn't map inode 68934869, err = 990


Qualsiasi tentativo di riparazione o check del FS tramite i tools presenti in xfsprogs, non sortirà nessun effetto, ne risolverà l'annoso problema. Questa situazione, spesso e volentieri, viene scambiata dall'utente inesperto come una corruzione totale del FS e in genere si procede alla formattazione, sparando poi a zero nei forums e nei ng sul fatto che il 'cattivo XFS gli ha mangiato tutti i dati' :wink: (dando vita alle valanghe di flames sui FS).

Eppure, nonostante i fatti dicano il contrario, io affermo con assoluta certezza che: con il filesystem XFS i problemi di corruzione non esistono, ed è impossibile corrompere una partizione XFS :lol:

Innanzi tutto, pochi sanno che appena si verifica una corruzione dei dati o della struttura del FS, anche minima, XFS per preservare i dati ed evitare danni maggiori, entra in modalità 'freeze' bloccando ogni successiva scrittura sul disco; ciò genera i messaggi di errore di I/O. la modalità 'freeze' viene tolta solo quando i problemi di corruzione vengono risolti, altrimenti resta sempre attiva. ATTENZIONE: è il freeze di XFS che genera i messaggi di errore, non la corruzione del FS !! :wink:

In secondo luogo, pochi sanno che una volta che il filesystem è entrato in modalità 'freeze', i tools di riparazione (xfs_repair) non possono correggere automaticamente le corruzioni in cui si imbattono, e quindi si bloccano perchè attendono un intervento 'manuale' da parte dell'utente, e questo genera il famigerato Error 990. ATTENZIONE: l'errore 990 è generato dal freeze del filesystem, non dalla corruzione !! :wink:

Ora, se avele letto attentamente e compreso tutto ciò che ho esposto fino ad ora, la domanda vi dovrebbe sorgere spontanea, ovvero: "come faccio a dire a XFS di ignorare il freeze e correggere gli inode corrotti?"

risposta: man xfs_db

ma siccome tale man è scritto per chi conosce il filesystem nei minimi dettagli, mi rendo conto per tanto che non è di facile comprensione per i comuni mortali, ecco per cui il motivo di questo thread. Ve lo spiegherò passo passo e con parole semplici:

1- c'è solo una cosa da fare, azzerare lo stato dell' inode corrotto, in modo tale che venga riconosciuto da xfs_repair adeguatamente e quindi riparato. per fare questo si usa il comando xfs_db nel seguente modo:

Code:
xfs_db -x -c 'inode 68934869' -c 'write core.nextents 0' -c 'write core.size 0' /dev/hdXX


ovviamente dovete sostituire il valore '68934869' con quello riportato da xfs_repair a fine scansione, e procedere nello stesso modo per tutti gli inode corrotti segnalati da xfs_repair con l'errore 990. Quando avrete finito, xfs_repair eseguirà tutto quello che c'è da fare per le riparazioni, e il vostro filesystem tornerà a funzionare come prima, senza perdita alcuna di dati o integrità strutturale, salvo eccezioni(*1). Se xfs_repair durante la ri-generazione dell'inode (con il comando sopra citato si provvede alla sua azzerazione a livello di attributi) trova delle incongruenze, i dati incongruenti in esso contenuti vengono spostati in lost-found (leggere attentamente nota 1) e questo è sintomo di cattivo hardware, soprattutto la RAM(*2).

Spero che questo thread posso essere di aiuto a qualcuno.

(*1) se la corruzione in memoria dei dati è stata provocata da un problema hardware e non software, ci sono altissime probabilità che in seguito alla riparazione delle corruzioni degli inode ci sia anche perdita parziale o totale dei dati in esso presenti (ATTENZIONE: non è colpa di XFS se l'hardware si è guastato, ne può preservare i dati in caso avvengano, nessuno fa i miracoli!!)

(*2) la qualità della RAM incide parecchio sulle corruzioni dei dati in memoria, e queste avvengono molto più facilmente con moduli di bassa qualità. L'uso di XFS in produzione è sempre da abbinare all'uso di moduli di memoria ECC onde ridurre praticamente a zero la possibilità di errori hardware legati alla RAM.
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2960
Location: Milano, Italy

PostPosted: Mon May 22, 2006 9:14 am    Post subject: Reply with quote

8O 8O Senza parole 8O 8O

Bellissimo, grazie equilibrium del post
_________________
Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! ;)
Back to top
View user's profile Send private message
Luca89
Advocate
Advocate


Joined: 27 Apr 2005
Posts: 2107
Location: Agrigento (Italy)

PostPosted: Mon May 22, 2006 9:36 pm    Post subject: Reply with quote

grazie !equilibrium, dritto nei segnalibri, non si sa mai. :wink:
_________________
Running Fast!
Back to top
View user's profile Send private message
Peach
Advocate
Advocate


Joined: 08 Mar 2003
Posts: 3676
Location: London, UK

PostPosted: Tue Mar 06, 2007 10:40 am    Post subject: Reply with quote

a causa di un errore di I/O tipo
Code:
[<c0102c22>] sysenter_past_esp+0x5f/0x85
ho avuto la necessità di lanciare xfs_repair e m'è spuntato l'errore 990.
il problema è che riportando, come suggerisci, nextents e size a 0, l'errore mi si ripresenta sempre sullo stesso blocco:
Code:
corrupt inode 33805919, extent total=30, nblocks=1.
fatal error -- couldn't map inode 33805919, err=990


suggerimenti?

PS: il fs è stato formattato con: -d unwritten=0 -l size=32m -b size=512
_________________
Gentoo user since 2004.
"It's all fun and games, until someone loses an eye" - mom
Back to top
View user's profile Send private message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Sat Mar 10, 2007 7:32 pm    Post subject: Reply with quote

Peach wrote:
il problema è che riportando, come suggerisci, nextents e size a 0, l'errore mi si ripresenta sempre sullo stesso blocco:


ciao,
scusa la lunga attesa per la risposta, ma "tempus fugit".
rispondo velocemente, per caso stai usando il liveCD 2006.* per fare il repair/check?
se sì, allora è normale, nel senso che sul liveCD c'è ancora la versione di sys-fs/xfsprogs-2.6* bacata.
dovresti usare la versione stabile in portage: sys-fs/xfsprogs-2.8.11
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
Peach
Advocate
Advocate


Joined: 08 Mar 2003
Posts: 3676
Location: London, UK

PostPosted: Sun Mar 11, 2007 12:44 am    Post subject: Reply with quote

!equilibrium wrote:
dovresti usare la versione stabile in portage: sys-fs/xfsprogs-2.8.11

beh ho risolto ripartendo dall'ultimo stage4 che avevo fatto.
buono a sapersi del bug
ci può essere la possibilità di compromissione del fs usando quella versione??

tocca aspettare la 2007.* :twisted:
_________________
Gentoo user since 2004.
"It's all fun and games, until someone loses an eye" - mom
Back to top
View user's profile Send private message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Mon Mar 12, 2007 9:06 am    Post subject: Reply with quote

Peach wrote:
ci può essere la possibilità di compromissione del fs usando quella versione??


no assolutamente, a meno che non usi il kernel 2.6.17*
il tool xfsprogs 2.6* semplicemente ti riporta il fix del problema, ma in realtà non l'ha fatto (dal kernel 2.6.18+ c' èstato un cambio di ABI nei driver e nella struttura del fs e vecchi tools non sono in grando di interagire correttamente con il nuovo formato), ma non altera o peggiora in nessun modo il filesystem. stai tranquillo ;)
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum