όταν οι δίσκοι κάνουν σιωπηλά λάθη τι μας σώζει?

Apollon Oikonomopoulos apollon at noc.grnet.gr
Wed Sep 15 11:14:01 EEST 2010


On 10:35 Wed 15 Sep     , Γιώργος Πάλλας wrote:
> On 09/15/2010 09:43 AM, Nick Demou wrote:
> > 2010/9/15  <rouvas at di.uoa.gr>:
> >   
> >> Nick Demou wrote:
> >>     
> >>> διάβασα πάρα-πολύ από χθες και όλα δείχνουν ότι [το btrfs] είναι σταθερό
> >>> τουλάχιστον για non-critical δεδομένα. Προσωπικά θα το βάλω στα non
> >>>       
> >> Αν τα δεδομένα σου είναι "non-critical", ποιος ο λόγος να ψάχνεις τόσο το
> >> θέμα; on-line checksumming, RAID, κλπ;
> >>     
> > έχω και critical και non-critical δεδομένα. Κάνω δοκιμές / πειράματα
> > από νωρίς στα non-critical δεδομένα ώστε να μπορώ αργότερα να κάνω
> > εφαρμογή όσων έμαθα στα critical. Τυπική στρατηγική.
> >
> >   
> >> Αν, πάλι, τα δεδομένα σου είναι "critical", η λύση είναι απλή και λέγεται
> >> πολλαπλό back-up (αναλόγως πως αξιολογείς το "critical")
> >>     
> >
> 
> 
> Νομίζω ότι είτε τα data είναι critical είτε όχι, πρέπει πάντα το state
> τους να είναι ξεκάθαρο: είτε τα έχω, είτε όχι... Είχα δε την εντύπωση
> ότι οι δίσκοι κάνουν checksumming (έστω υποτυπώδες) στα data blocks
> τους. Κάνω λάθος;;
> 

Κι όμως, πραγματικό end-to-end integrity υπάρχει μόνο στα μεγάλα 
enterprise storage systems (και εκεί συζητιέται…). Το πρόβλημα είναι 
διπλό:

Αφενός τα filesystems που κάνουν checksumming (π.χ. btrfs) επαληθεύουν 
τα checksums κατά την ανάγνωση. Αν κάνεις πολύ καιρό να διαβάσεις τα 
δεδομένα σου ή να κάνεις fsck, μπορεί να αργήσεις να πάρεις είδηση ένα 
silent corruption που μπορεί να εξελίσσεται για μέρες ή και μήνες. Αυτός 
είναι ο λόγος που τα περισσότερα τέτοια filesystems έχουν και ένα 
background job που κάνει το λεγόμενο "scrubbing", διαβάζει και 
επαληθεύει δηλαδή τα δεδομένα που έχουν ήδη γραφτεί.

Αφετέρου, κάθε layer (filesystem, OS, controller, δίσκος) κάνει checks 
για τον εαυτό του, χωρίς να υπάρχει ανταλλαγή πληροφοριών/parity με τα 
υπόλοιπα στρώματα. Γίνονται προσπάθειες για τυποποίηση ενός συστήματος 
(DIX - Data Integrity Extensions), το οποίο θα επιτρέπει την προσθήκη 8 
ακόμα bytes end-to-end (από το application layer μέχρι το δίσκο), τα 
οποία θα χρησιμοποιούνται για την επαλήθευση ότι τα δεδομένα που 
γράφτηκαν ήταν αυτά που ήθελε η εφαρμογή να γραφτούν (και όχι απλά αυτά 
που είπε ο controller να γραφτούν για παράδειγμα). Για όποιον 
ενδιαφέρεται για το ζήτημα, υπάρχει μια ενδιαφέρουσα παρουσίαση από το 
φετινό LinuxCon[1].

Κοινώς, ο μόνος τρόπος να διασφαλίσει κανείς τα δεδομένα του είναι το 
τακτικό και πλήρες backup. Όταν και αν εφαρμοστεί στην πράξη το DIX, 
τότε θα μπορούμε να κοιμόμαστε χωρίς να βλέπουμε τόσο συχνά εφιάλτες με 
silent corruptions, αλλά backup και πάλι θα παίρνουμε.

/Απόλλων

[1] http://events.linuxfoundation.org/slides/2010/linuxcon2010_petersen.pdf


More information about the Linux-greek-users mailing list