跳转至主要内容
  • 快速、轻松地下订单
  • 查看订单并跟踪您的发货状态
  • 创建并访问您的产品列表
  • 使用“Company Administration”(公司管理),管理Dell EMC站点、产品和产品级联系人。

Doppi errori e lacune negli array RAID

摘要: Gli array RAID non sono immuni da errori dei dati. Questo articolo fornisce consigli per prevenire e mitigare questi problemi.

本文可能已自动翻译。如果您对其质量有任何反馈,请使用此页面底部的表单告知我们。

文章内容


症状

In questo articolo vengono fornite informazioni sugli errori dei dati, i doppi errori e le lacune in un array RAID. Vengono inoltre forniti consigli per prevenire/ridurre questi problemi e indicazioni su come risolverli quando si verificano.

Sommario
  1. Errori dei dati e doppi errori
  2. Lacune: cosa sono e a cosa sono dovute?
  3. Prevenzione dei problemi prima della loro insorgenza e risoluzione delle lacune dopo il loro verificarsi

     

Capitolo 1. Errori dei dati e doppi errori

Gli array RAID non sono immuni da errori dei dati.  Il firmware del controller RAID e dei dischi rigidi contiene funzionalità volte a rilevare e correggere molti tipi di errori dei dati prima che vengano scritti su un array o su un'unità.  Se si utilizza firmware obsoleto, è possibile che i dati vengano scritti in maniera non corretta su un array o su un'unità, poiché mancano le funzioni di gestione/correzione degli errori disponibili nelle versioni più recenti del firmware.


Gli errori dei dati possono essere dovuti anche a blocchi fisici danneggiati.  Questa situazione può verificarsi, ad esempio, quando la testina di lettura/scrittura tocca il piatto rotante (condizione nota come "head crash").  I blocchi possono anche danneggiarsi nel tempo a causa della riduzione della capacità del piatto di memorizzare magneticamente i bit in una posizione specifica.  Spesso, i blocchi danneggiati a seguito del deterioramento di un piatto possono comunque essere letti correttamente.  Un blocco danneggiato del genere potrebbe essere rilevato solo in modo intermittente o con un'estesa diagnostica eseguita sulle unità.  


Un blocco danneggiato, detto anche indirizzo LBA (Logical Block Address, indirizzo di blocco logico) danneggiato, può essere causato anche da errori logici dei dati.  Questa condizione si verifica quando i dati vengono scritti in modo non corretto su un'unità anche se la scrittura viene registrata come riuscita correttamente.  È inoltre possibile che dei dati corretti memorizzati su un'unità vengano modificati inavvertitamente.  Un esempio è rappresentato da un "bit flip", o inversione di bit, che può verificarsi quando la testina di lettura/scrittura supera una posizione o esegue la scrittura su una posizione vicina e fa sì che i dati, sotto forma di zeri e uno, cambino assumendo un valore diverso.  Tale condizione genera un danneggiamento della "coerenza" dei dati.  Il valore dei dati su un blocco specifico è diverso rispetto ai dati originali e potrebbe non corrispondere più al checksum dei dati.  L'indirizzo LBA fisico è corretto e la scrittura può essere eseguita correttamente su di esso, ma contiene attualmente dati non corretti e potrebbe essere interpretato come un blocco danneggiato.


Gli indirizzi LBA non validi vengono in genere segnalati in base al Sense Code 3/11/0. Il Sense Key 3 è un Medium Error (Errore supporto).  L'ASC (Additional Sense Code) e l'ASCQ (Additional Sense Qualifier) 11/00 vengono definiti Unrecovered Read Error (Errore di lettura non recuperato).  Non avviene alcun tentativo di correggere il blocco e non viene indicato se il blocco danneggiato sia il risultato di un difetto fisico sul piatto dell'unità o di un errore dei dati dovuto ad altre cause.  L'esistenza di un Sense Code 3/11/00 non significa automaticamente che l'unità fisica sia guasta o debba essere sostituita.


I controller RAID basati su hardware Dell offrono funzioni come Patrol Read e Check Consistency per correggere molti scenari di errore dei dati.  Patrol Read opera per impostazione predefinita come attività in background automatizzata per controllare tutti i singoli blocchi su un disco rigido affinché i dati possano essere letti correttamente.  La funzione tenterà di correggere i blocchi danneggiati o di rimappare i blocchi non correggibili su blocchi riservati.  Check Consistency è una funzione attivata manualmente (può anche essere pianificata) che mette a confronto tutte le unità di un array le une con le altre per verificare che i dati e la ridondanza corrispondano correttamente.  Ad esempio, in un array RAID 5, verranno messe a confronto tre unità per verificare che i dati e la parità utilizzino i valori corretti.  Se viene rilevato un singolo errore, i dati e/o la parità rimanenti verranno utilizzati per riscrivere e correggere il valore errato.  Analogamente, in un array RAID 1, i dati su un'unità vengono confrontati con l'altra unità per garantirne il mirroring.


Un singolo errore in un array RAID, se non corretto, può causare errori più gravi nell'array, soprattutto quando si verifica un secondo errore.  Uno o più singoli errori non causano la perdita dei dati purché l'array rimanga in uno stato ottimale.  Dati e ridondanza sono ancora sufficienti per un funzionamento normale mentre l'array è ottimale.


Grazie alla capacità del controller di correggere gli errori durante il funzionamento normale, non è sempre facile rilevare quando si verificano problemi sottostanti nei dati.  In condizioni di uno o più singoli errori, raramente vengono riportati errori o avvisi nel registro del controller, nei registri dell'hardware o nei registri eventi del sistema operativo.  Per questo motivo, può sembrare per molto tempo che un array funzioni normalmente, nonostante la presenza di errori di coerenza e/o di singoli errori.



SLN111497_en_US__11
Figura 1. Più guasti singoli in un array RAID 5 - Array ottimale


Come illustrato nella Figura 1, l'array presenta più errori.  Tuttavia, poiché è presente solo un singolo errore in ogni stripe, il controller può comunque accedere a tutti i dati grazie alla ridondanza di RAID 5.  Se l'errore avviene nel segmento di parità, tutti i dati sono intatti e l'errore non ha alcun impatto sulle operazioni di lettura.  Se l'errore si verifica in un segmento di dati, deve avvenire un confronto XOR tra i dati corretti e gli elementi di parità corretti per ricalcolare il segmento di dati mancanti/errati.  In entrambi i casi, poiché è presente solo un singolo errore in ogni stripe, è disponibile una ridondanza sufficiente per accedere correttamente a tutti i dati.

Quando una o più unità in un array RAID contengono errori di dati e un'altra unità nell'array non è più un membro attivo dell'array a causa di un guasto dell'unità, di una configurazione esterna, della rimozione dell'unità o per qualsiasi altro motivo, si crea una condizione nota come "doppio errore".  Una condizione di doppio errore genera l'immediata perdita di qualsiasi informazione contenuta negli stripe interessati.



SLN111497_en_US__22
Figura 2. Doppio errore con un'unità guasta (i dati negli stripe 1 e 2 vengono persi) - Array danneggiato    


È possibile che si verifichi una condizione di doppio errore con l'array che rimane in uno stato ottimale.  Ciò potrebbe verificarsi in presenza di indirizzi LBA danneggiati identici su più dischi rigidi.  Una condizione del genere è estremamente rara, dato l'elevato numero di indirizzi LBA sugli odierni dischi rigidi di dimensioni maggiori.  È molto improbabile che lo stesso indirizzo LBA su più dischi rigidi sia "danneggiato".

L'esecuzione di regolari operazioni Check Consistency corregge i singoli errori, che si tratti di un blocco fisico danneggiato o di un errore logico dei dati. Check Consistency ridurrà inoltre il rischio di una condizione di doppio errore in caso di ulteriori errori.  Quando esiste solo un singolo errore in un determinato stripe, Check Consistency può quasi sempre eliminare l'errore.

Torna all'inizio
 
 

Capitolo 2. Lacune: cosa sono e a cosa sono dovute?


Una lacuna è una funzione dei controller PERC di Dell progettata per consentire al controller di ripristinare la ridondanza dell'array nonostante la perdita di dati causata da una condizione di doppio errore.  Un altro nome con cui viene designata è "ricostruzione con errori".  Il controller RAID rileva un doppio errore e, poiché la ridondanza non è sufficiente per ripristinare i dati nello stripe interessato, crea una lacuna in tale stripe e consente la continuazione del processo di ricostruzione.

 
  • Qualsiasi condizione che generi l'inaccessibilità dei dati nello stesso stripe su più di un'unità è un doppio errore.
  • I doppi errori causano la perdita di tutti i dati all'interno dello stripe interessato.
  • Tutte le lacune sono doppi errori, ma NON tutti i doppi errori sono lacune.


SLN111497_en_US__33
Figura 3. Stripe con lacune (i dati negli stripe 1 e 2 vengono persi a causa di una condizione di doppio errore) - Array ottimale


Senza lacune, la ricostruzione dell'array ha esito negativo e lascia l'array in uno stato danneggiato.  In alcuni casi, gli errori possono causare il guasto di altre unità e far entrare l'array in uno stato offline di assenza di funzionamento.  Le lacune in un array non hanno alcun impatto sulla capacità di avvio o di accesso ai dati contenuti nell'array.  Qualsiasi danno o perdita di dati a causa di una condizione di doppio errore è già avvenuto. 



Le lacune possono verificarsi in una delle seguenti situazioni:
 
  • Esiste già un doppio errore (dati già persi)
    • L'errore dei dati su un'unità online viene propagato (copiato) su un'unità di ricostruzione.
 
  • Non esiste un doppio errore (i dati vengono persi quando si verifica il secondo errore)
    • In stato danneggiato, in caso di danneggiamento di un blocco su un'unità online, al determinato indirizzo LBA si verificherà una lacuna.


Le lacune in un array offrono il vantaggio di mantenere il sistema disponibile in produzione e di poter ripristinare la ridondanza dell'array.  I dati contenuti nello stripe interessato vanno persi, sia che la lacuna si verifichi o meno.  Il principale svantaggio del metodo LSI è che, quando l'array presenta una lacuna al suo interno, continueranno a riscontrarsi errori non correggibili ogni volta che viene eseguito l'accesso ai dati interessati (se presenti). 


Una lacuna può avvenire in tre posizioni.  In primo luogo, una lacuna può avvenire in uno spazio vuoto che non contiene dati.  Lo stripe non sarà accessibile, ma data l'assenza di dati in tale posizione, non si avrà alcun impatto significativo.  Tutti i tentativi di scrittura su uno stripe con lacune da parte del sistema operativo avranno esito negativo e i dati verranno scritti in una posizione diversa. 


In secondo luogo, una lacuna può avvenire in uno stripe contenente dati non critici, ad esempio un file README.TXT.  Se non avviene alcun accesso ai dati interessati, non verranno generati errori durante le normali operazioni di I/O.  Se si tenta di eseguire un backup del file system, il backup dei file interessati da una lacuna avrà esito negativo.  L'esecuzione delle operazioni Check Consistency o Patrol Read genera il Sense Code:  3/11/00 per l'indirizzo LBA e/o gli stripe applicabili.


In terzo luogo, è possibile che si verifichi una lacuna nello spazio dati a cui si accede.  In tal caso, i dati persi possono causare vari tipi di errori.  Può trattarsi di errori minori che non influiscono negativamente sull'ambiente di produzione,  ma possono anche essere di tipo più grave e impedire l'avvio del sistema operativo o il funzionamento di applicazioni.


 Un array con lacuna dovrà probabilmente essere eliminato e ricreato per rimuovere la lacuna.  Questa procedura causa la cancellazione di tutti i dati. I dati dovranno quindi essere ricreati o ripristinati da un backup una volta eliminata la lacuna.  La risoluzione di una lacuna può essere pianificata per un orario più vantaggioso in base alle esigenze aziendali.


Se si accede ai dati all'interno di uno stripe con lacune, continuano a essere segnalati errori a fronte degli indirizzi LBA danneggiati interessati senza possibilità di correzione. Infine (potrebbe trattarsi di minuti, giorni, settimane, mesi, ecc.), la tabella BBM (Bad Block Management) si riempirà e di conseguenza una o più unità verranno contrassegnate con lo stato di errore previsto. Facendo riferimento alla figura 3, l'unità 0 sarà in genere l'unità contrassegnata con lo stato di errore previsto a causa della propagazione degli errori delle unità 1 e 2 su di essa. L'unità 0 potrebbe effettivamente funzionare normalmente e la sostituzione dell'unità 0 fa sì che anche la sostituzione venga contrassegnata come guasto predittivo.


L'esecuzione di Check Consistency dopo una lacuna non risolve il problema.  Ecco perché è molto importante eseguire Check Consistency a intervalli regolari. E lo diventa ancor di più prima di sostituire le unità, laddove possibile. L'array deve essere in uno stato ottimale per eseguire Check Consistency.


Un array RAID con un singolo errore di dati e un ulteriore evento di errore, ad esempio il guasto di un disco rigido, causa una lacuna quando l'unità guasta o sostitutiva viene ricostruita nell'array. Ad esempio, un array RAID 5 in stato ottimale include tre membri: unità 0, unità 1 e unità 2. Se l'unità 0 si guasta (figura 2) e viene sostituita, i dati e la parità rimanenti sulle unità 1 e 2 vengono utilizzati per ricostruire le informazioni mancanti sull'unità sostitutiva 0. Tuttavia, se è presente un errore di dati sull'unità 1, quando l'operazione di ricostruzione raggiunge tale errore, all'interno dello stripe non ci sono informazioni sufficienti per ricostruire i dati mancanti in tale stripe. L'unità 0 non contiene dati, l'unità 1 contiene dati danneggiati e l'unità 2 contiene dati corretti poiché viene ricostruita. All'interno dello stripe ci sono più errori. L'unità 0 e l'unità 1 non contengono dati validi, pertanto i dati in tale stripe non possono essere recuperati e vengono pertanto persi.  Il risultato, come illustrato nella figura 3, è la creazione di lacune (negli stripe 1 e 2) durante la ricostruzione. Gli errori vengono propagati all'unità 0. 


Grazie alle lacune negli array, viene ripristinata la ridondanza e l'array torna in uno stato ottimale.  In questo modo l'array è protetto da un'ulteriore perdita di dati in caso di altri errori o guasti delle unità.
 
Torna all'inizio
 

Capitolo 3. Prevenzione dei problemi prima della loro insorgenza e risoluzione delle lacune dopo il loro verificarsi


La tentazione è quella di operare in base alla premessa "se non è rotto, non correggerlo". Anche se può essere vero in molti campi, per proteggere e gestire al meglio i sottosistemi di storage, si consiglia di eseguire una manutenzione periodica e di routine. Una manutenzione proattiva può correggere gli errori esistenti e prevenire l'insorgenza di altri. Non è possibile prevenire tutti gli errori, ma la maggior parte di quelli più gravi può essere notevolmente attenuata eseguendo una manutenzione proattiva. Per i sottosistemi RAID e di storage, i passaggi sono i seguenti:

 
  • Aggiornare driver e firmware su controller, dischi rigidi, backplane e altri dispositivi
  • Eseguire le operazioni di Check Consistency di routine.
  • Esaminare i registri per verificare la presenza di eventuali indicazioni di problemi

Non deve trattarsi di una revisione tecnica generale, ma potrebbe semplicemente essere una rapida panoramica dei registri alla ricerca di indicazioni estremamente evidenti di potenziali problemi
In caso di domande o dubbi, contattare il supporto tecnico Dell


Uno degli aspetti più critici è assicurarsi che il firmware sia sempre aggiornato. Il firmware è la posizione in cui risiede tutta la logica per il funzionamento di un dispositivo. Fornisce le funzionalità del dispositivo, insieme a una varietà di funzioni per la gestione e la correzione degli errori. Mantenere aggiornato il firmware può assicurare prestazioni migliori e un numero minore di errori. È inoltre possibile aggiungere nuovi miglioramenti e funzioni tramite un aggiornamento del firmware.


Il firmware può trovarsi in diverse posizioni. I controller RAID contengono firmware, così come ognuno dei singoli dischi rigidi installati in un sistema o in un array. I backplane e le enclosure esterne contengono anche firmware che può influire sul funzionamento delle unità e degli array contenuti al suo interno.


Un altro consiglio di manutenzione proattiva è quello di eseguire l'operazione "Check Consistency".  La verifica della coerenza è un'operazione manuale in quanto consuma una parte della larghezza di banda disponibile complessiva del controller RAID. Tuttavia, la verifica della coerenza può essere pianificata per l'esecuzione in un momento con un impatto ridotto sulle prestazioni.


L'operazione verifica la presenza di blocchi danneggiati sulle unità, ma soprattutto confronta i dati nell'array per assicurarsi che tutti i componenti corrispondano correttamente. Quando individua un problema, determina quali sono i dati che dovrebbero essere simili e li corregge controllando i dati sulle altre unità dell'array. La correzione degli errori dei dati quando sono relativamente ridotti è il modo migliore per ridurre il rischio di lacune causate dalla presenza di errori dei dati esistenti insieme a un secondo errore o guasto. La presenza di doppi errori e lacune può causare la perdita di produttività dovuta al tempo necessario per ripristinare gli array e i dati in uno stato di funzionamento e può persino portare alla perdita completa di tutti i dati.


Se è presente una condizione di doppio errore o lacuna, spesso si verifica una perdita di dati. Se la posizione di questi errori è in uno spazio vuoto o in uno spazio di dati non critici, l'impatto immediato sui dati in un ambiente di produzione è relativamente ridotto. Tuttavia, la presenza di questi errori può significare l'esistenza di problemi più gravi. Errori hardware e firmware obsoleto potrebbero richiedere un'attenzione immediata.


Se esiste una condizione nota o sospetta di doppio errore o lacuna, attenersi alla seguente procedura per ridurre al minimo il rischio di problemi più gravi:

 
  • Eseguire una verifica della coerenza (l'array deve essere in stato ottimale)
  • Determinare se esistono problemi di hardware
  • Verificare il registro del controller
  • Eseguire una diagnostica dell'hardware
  • Contattare il supporto tecnico Dell se necessario

Dopo aver eseguito queste operazioni, possono sussistere ulteriori problemi. Le lacune possono indurre nel tempo uno stato di errore previsto dei dischi rigidi. Gli errori dei dati che vengono propagati a un'unità verranno registrati come errori dei supporti sull'unità, anche se non esistono effettivi problemi di hardware. Ogni volta che si accede all'indirizzo LBA, viene segnalato un errore. Una volta che il registro degli errori è pieno, l'unità viene segnalata come Predictive Failure.


Un singolo indirizzo LBA con lacuna su un'unità può essere segnalato più volte. A seconda del numero di lacune, è possibile che più unità di un array siano registrate con lo stato di errore previsto. Sostituendo l'unità in stato di errore previsto, le lacune esistenti verranno propagate nuovamente all'unità sostitutiva, per cui quest'ultima verrà anch'essa contrassegnata con lo stato di errore previsto. In tal caso, l'unica azione correttiva consiste nel risolvere la condizione di lacuna.


Guardando la Figura 3, è presente una lacuna sugli stripe 1 e 2. La sostituzione dei dischi rigidi non risolve il problema, poiché la ridondanza dei dati non è sufficiente per ricostruire i dati originali. Tutti i dati contenuti negli stripe con lacune vengono persi (se non conservati in un precedente backup). Ricordare che una lacuna non causa una perdita di dati, mentre una condizione di doppio errore genera una perdita di dati. La lacuna consente di ripristinare la ridondanza per un array che contiene un doppio errore.
 

 

Nota: di seguito è riportata la procedura utilizzata per risolvere la maggior parte delle lacune. Per tale risoluzione, potrebbe non essere necessario eseguire tutte queste operazioni. Se questa procedura non risolve il problema, contattare il supporto tecnico Dell per ulteriore assistenza.

 

 

Avvertenza: la seguente procedura comporta la perdita di tutti i dati presenti sull'array. Prepararsi a eseguire il ripristino da un backup o in altro modo prima di procedere. Prestare la massima attenzione affinché la seguente procedura non abbia conseguenze sugli altri eventuali array.
  1. Eliminare la cache conservata (se presente)
  2. Cancellare le configurazioni esterne (se presenti)
  3. Eliminare l'array
  4. Spostare le unità di una posizione (utilizzando la figura 1, spostare il disco 0 allo slot 1, il disco 1 allo slot 2 e il disco 2 allo slot 0)
  5. Ricreare l'array come desiderato
  6. Eseguire un'operazione di inizializzazione completa dell'array (non un'inizializzazione rapida).
  7. Eseguire una verifica della coerenza sull'array

Se la verifica della coerenza viene completata senza errori, è lecito presumere che l'array sia ora integro e che la lacuna sia stata risolta. I dati possono ora essere ripristinati nell'array integro.


In casi più gravi, il problema potrebbe non essere risolto e potrebbero persistere alcuni errori nonostante questa procedura. Se questa procedura non risolve il problema, contattare il supporto tecnico Dell per ulteriore assistenza.


Potrebbe essere necessario analizzare le lacune più dettagliatamente per determinare quali unità sono in comune. Ad esempio, nella figura 3, il registro del controller potrebbe indicare una lacuna tra i dischi 0 e 1 e una lacuna tra i dischi 0 e 2. Il disco 0 è l'unità in comune. Seguire la stessa procedura sopra riportata, ma prima rimuovere completamente le unità in comune. Utilizzando l'esempio della figura 1, rimuovere il disco 0 e quindi seguire la procedura descritta. Creare l'array utilizzando i dischi rimanenti (1 e 2). Al termine e dopo aver determinato l'integrità dell'array tramite una verifica della coerenza, aggiungere nuovamente il disco 0 e ripetere la procedura con tutte le unità oppure usando le funzioni RLM (RAID Level Migration) e/o OCE (Online Capacity Expansion) per aggiungere le unità rimanenti nell'array.


Eventuali unità contrassegnate come Predictive Failure devono essere rimosse ed escluse dal processo di ripristino. Sempre utilizzando la figura 3 come esempio, se il disco 0 era in stato di errore previsto, rimuovere tale unità. Quindi, eseguire la procedura descritta in precedenza. Poiché restano solo 2 unità, l'array RAID creato è un RAID 1 anziché un RAID 5. Dopo aver reperito un disco 0 sostitutivo (a causa del guasto predittivo), ripetere la procedura includendo tutte le 3 unità oppure aggiungere il disco 0 all'array esistente utilizzando la funzione RLM e modificarlo da RAID 1 con 2 unità a RAID 5 con 3 unità.


Il processo può essere scoraggiante, soprattutto considerando una potenziale perdita di dati. Il detto "prevenire è meglio che curare" è senz'altro vero in questo caso. L'esperienza dimostra che quasi tutte le condizioni di doppio errore e lacune sarebbero potute essere evitate eseguendo una manutenzione proattiva sull'hardware e sugli array RAID.
 

 

Nota: un efficace monitoraggio del sistema consente di rilevare e correggere i problemi tempestivamente e di conseguenza ridurre il rischio di problemi più gravi.


 

Articolo correlato
PERC - Come correggere una lacuna nei RAID

 

Torna all'inizio

 

原因

-

解决方案

-

文章属性


受影响的产品

Servers

上次发布日期

25 3月 2022

版本

6

文章类型

Solution