ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Νέα από τον πλανήτη…planet.ellak.gr: ZFS: Μην το δοκιμάσεις γιατί θα σου αρέσει

by: Cerebrux

Όταν δημιουργήσεις το πρώτο σου ZFS με μια απλή εντολή και δεις πόσο ολοκληρωμένο σύστημα είναι όπως και την «αυτοΐαση» να συμβαίνει για πρώτη φορά μπροστά σου… κάτι αλλάζει για πάντα μέσα σου, όπως άλλαξε την πρώτη φορά που είδες ένα ολόκληρο λειτουργικό σύστημα Linux να δουλεύει από ένα Live CD… ναι ρε CD….

Σημείωση: Αν δεν έχεις διαβάσει το πρώτο μέρος, ή απλά το διάβασες σε στιλ «ξεπέτα» σταμάτα εδώ και διάβασε το καλά… να σε αυτό το λινκ.

Κάθε φορά που χρησιμοποιούμε, οποιαδήποτε λύση προληπτικών μέτρων κατά της απώλειας δεδομένων, όπως δημιουργία αντιγράφων ασφαλείας ή/και επαλήθευση ακεραιότητας δεδομένων συστήματος αρχείων, πρέπει να δοκιμάσουμε τη ρύθμισή μας με ορισμένες προσομοιωμένες αποτυχίες δίσκων προτού εφαρμόσουμε μια λύση σε πραγματικό περιβάλλον.

Η αλήθεια είναι ότι σκεφτόμουν αρκετές μέρες πως να προσεγγίσω το θέμα της πρακτικής χρήσης σε περιβάλλον προσομοίωσης από την σκοπιά του αδαή:

«Μήπως πρώτα να τους δείξω πως να το δοκιμάσουν σε VM για να μην κάνουν καμιά πατάτα; Ή μήπως να το κάνουμε σε κάνα άχρηστο USB μικρό για να έχουμε το κεφάλι μας ήσυχο ;»

Τελικά αποφάσισα να μην το παίξω προστατευτικός γονιός κανενός σας και να ακολουθήσω την μέθοδο «Σκάσε και κολύμπα»

Εγκατάσταση του ZFS στο Linux

To ZFS είμαι σίγουρος ότι έχει πακεταριστεί για όλες τις διανομές οπότε αν… δεν έχετε ζωή και υποχρεώσεις να ροκανίζουν τον χρόνο σας, σας αρέσει να δουλεύετε εσείς για τον υπολογιστή και όχι το αντίστροφο, και δεν χρησιμοποιείτε Ubuntu ή Debian, δεν θα σας πως εγώ πως να το εγκαταστήσετε… βγάλτε τα πέρα μόνοι σας.

Επομένως όσοι δεν ανήκετε στην παραπάνω κατηγορία εγκαταστήστε το ZFS με

1sudoapt installzfsutils-linux

Μετά την εγκατάσταση φυσικά, το ZFS και τα εργαλεία του είναι ίδια σε όλα τα UNIX-base και UNIX-like λειτουργικά οπότε η χρήση του zpool και zfs που θα δείξουμε εδώ είναι ίδια παντού. Τέλος, θέλω να παρατηρήσεις ότι οι παράμετροι των δυο εφαρμογών είναι «ανθρώπινοι» με λέξεις που καταλαβαίνεις τι κάνουν και έχουν μια λογική σειρά… σε αντίθεση με κάτι εντολές με παραμέτρους όπως -Syyu …. τιναυτορε….. !

Να εξηγούμαστε όμως… για να μην παρεξηγούμαστε

Με το mdadm του RAID μπορείτε να ρυθμίσετε οποιοδήποτε είδος RAID pool θέλετε και μπορείτε ακόμη και να το επεκτείνετε με περαιτέρω δίσκους εάν χρειαστεί αργότερα. Στη συνέχεια, μπορείτε να προσθέσετε και το dm-integrity για ανίχνευση σφαλμάτων και διόρθωση σφαλμάτων σε επίπεδο μπλοκ. Εάν προσθέσετε και το dm-crypt με LUKS σε αυτό, η ακεραιότητα των δεδομένων προστατεύεται με εγγενή κρυπτογράφηση. Και αν θέλετε να χρησιμοποιείτε το RAID ως LVM δίσκους μπορείτε επίσης να κάνετε και snapshotting. Ουφ… ήδη κουράστηκα με τόσα λογισμικά και ρυθμίσεις…

Αν ζαλιστήκατε και εσείς… μπορείτε απλά να τα κάνετε όλα αυτά με το ZFS… ήδη από το μακρινό 2005…

Όπως είπα στο πρώτο μέρος της σειράς άρθρων για το ZFS, το ZFS είναι Όλα σε 1 σύστημα αρχείων και Logical Volume Manager με ενσωματωμένες δυνατότητες δημιουργίας RAID. Επίσης ανέφερα στα χαρακτηριστικά του την αυτο-προστασία των δεδομένων από προβλήματα «φθοράς» σε mirrored δίσκους ή προβληματικούς δίσκους γενικά. Τέλος, είχα πει ότι για το ZFS δεν έχει σημασία αν το μέσο αποθήκευσης είναι δίσκος, flash disk, αρχείο δίσκου, εικονικός δίσκος, ένας ή πολλοί κλπ. αλλά σημασία έχουν τα vdev. Με αυτά στο μυαλό μας, θα δημιουργήσουμε ZFS pool αποθήκευσης με ψεύτικους δίσκους και στη συνέχεια θα προκαλέσουμε σκόπιμα πρόβλημα για να δούμε στην πράξη τις δυνατότητες του ZFS.

Το θέμα για όλα αυτά όμως και ζήτημα που με ανησυχούσε, όπως είπα και στην αρχή, είναι ότι η αμπαλίαση κάποιων από εσάς είναι τόσο επικίνδυνη που μπορεί με τις εντολές που θα τρέξουμε να αυτοπυροβοληθείτε και να πάρετε το σύστημα σας στα χέρια σας.

Μετά όμως είπα στον εαυτό μου… «ποιος είμαι εγώ να σταθώ εμπόδιο στους μηχανισμούς της φυσικής επιλογής» οπότε από εδώ και πέρα, ότι τρέξετε, έχετε την απόλυτη ευθύνη των πράξεών σας.

Δημιουργία ZFS σε κατοπτρικό (mirrored) χώρο αποθήκευσης με 2 δίσκους

Ξεκινάμε με το πρώτο σενάριο…

Δεν ξέρω γιατί κλείσατε το τερματικό με το οποίο κάνατε εγκατάσταση το ZFS ή γιατί δεν έχετε μόνιμα ανοιχτό ένα αλλά … τέλος πάντων ήρθε η ώρα να ανοίξετε ένα.

Έστω λοιπόν, ότι έχουμε έναν υπολογιστή που θα τον ονομάσουμε zfsnoob. Αυτός ο υπολογιστής θα έχει δυο σκληρούς δίσκους. Πάμε λοιπόν να τον δημιουργήσουμε στον home μας φτιάχνοντας ένα φάκελο και φυσικά και να τον ανοίξουμε:

1cd&& mkdirzfsnoob && cdzfsnoob

Αφού είστε που είστε μέσα στον φάκελο zfsnoob, παραγγείλετε και δυο SSD δίσκους των 100MB … ναι Megabyte… όχι Gigabyte…. μια χαρά είναι για αυτό που θα κάνουμε. θα χρησιμοποιήσουμε το dd για την «παραγγελία» μας και το pwd για να δημιουργηθούν στην διαδρομή του φακέλου zfsnoob. Οπότε πάμε να αγοράσουμε 2 δίσκους:

1234forpsemataola inssddiskos1.img ssddiskos2.imgdo    ddif=/dev/zeroof=`pwd`/$psemataola bs=1M count=100done
δημιουργία εικονικών δίσκων

Αν όλα έχουν πάει καλά …. και δεν έχετε διαγράψει τους φακέλους σας, τότε θα έχετε δυο «SSD δίσκους» των 100ΜΒ έκαστος μέσα στον φάκελο zfsnoob

δυο εικονικοί δίσκοι

Έχουμε λοιπόν 2 δίσκους αλλά εμείς θέλουμε ο αποθηκευτικός χώρος να είναι έτσι διαμορφωμένος ώστε ότι αποθηκεύεται στον έναν να αποθηκεύεται και στον άλλον. Άρα εμείς ουσιαστικά θα βλέπουμε μόνο 100ΜΒ ελεύθερο χώρο και όχι 200ΜΒ. Πως θα το κάνουμε αυτό ;

Θα δημιουργήσουμε αυτό που ονομάζεται Mirrored διαρρύθμιση (ή RAID-1 για όσους δουλεύουν με RAID). Αυτού του τύπου η διαρρύθμιση δίσκων χάνει μεν σε χωρητικότητα, παρέχει όμως ανθεκτικότητα σε περίπτωση προβλήματος σε ένα από τους δυο δίσκους.

Ας κουμπώσουμε τους δίσκους σε mirror vdev διαρρύθμιση:

1sudozpool create kathreftaki mirror `pwd`/ssddiskos1.img `pwd`/ssddiskos2.img
mirrored disk

Ωραία ! Μόλις φτιάξαμε :

  • το πρώτο μας ZFS pool με το όνομα kathreftaki
  • και ταυτόχρονα έγιναν format σε ZFS
  • ενώ ρυθμίστηκαν και ως αντίγραφο το ένα του άλλου (σαν να είναι RAID-1)….

Στόπ τώρα… πάρτε μια βαθιά ανάσα και όσοι έχετε χρησιμοποιήσει mdadm ή pv-vg-lv create και mkfs.* πείτε μου στα σχόλια πως σας φάνηκε το εργαλείο zpool. Με ένα εργαλείο έγιναν όλα μαζί.

Αν τώρα θέλουμε να πάρουμε κάποιες πληροφορίες για αυτό το pool τρέχουμε :

1zpool status

Όπου λογικά θα πρέπει να δούμε ότι οι δίσκοι έχουν τοποθετηθεί σε ένα mirror vdev που ονομάζεται mirror-0. Αν θέλουμε να δούμε πληροφορίες σχετικά με τον διαθέσιμο χώρο:

1zpool list
zpool status zpool list

Ωπ ! … μας δουλεύει; Γιατί δεν είναι διαθέσιμα τα 100MB και είναι μόνο τα 80ΜΒ; Διότι για να κάνει τα μαγικά που κάνει το ZFS, όπως τα είπα στο πρώτο μέρος της σειράς άρθρων για το ZFS, θα κρατήσει για τον εαυτό του μια ποσότητα χώρου, οπότε δεν μας απασχολεί αυτό.

Ωραία λοιπόν, είναι έτοιμο το pool μας… αλλά που είναι συνδεδεμένος ο «αποθηκευτικός χώρος»; Για να το δούμε αυτό θα χρησιμοποιήσουμε το δεύτερο εργαλείο που αφορά το σύστημα αρχείων:

1234sudozfs get mountpoint poolNAME             PROPERTY          VALUE                    SOURCEkathreftaki    mountpoint       /kathreftakilocal

Θα παρατηρήσεις, ότι εξορισμού το ZFS δημιουργεί σημείο προσάρτησης για το pool μας απευθείας στο /ριζικό κατάλογο και σε φάκελο ίδιου ονόματος με το pool. Να θυμάσαι πάντα ότι επειδή η δημιουργία του pool με τα vdev γίνεται από sudo χρήστη και τα δικαιώματα πρόσβασης στο προσαρτημένο σύστημα αρχείων του dataset ανήκει στον root. Οπότε πάμε να το αλλάξουμε για να μπορούμε να βάζουμε δικά μας αρχεία.

1sudochown$USER /kathreftaki

Πάμε μέσα σε αυτό τον φάκελο

1cd/kathreftaki

Ας φτιάξουμε ένα αρχείο με λίγο κείμενο μέσα

1echo"Tria poulakia kathontan... "> keimeno.txt

Άρα έχουμε ένα αρχείο με όνομα keimeno.txt οπότε ήδη τον ZFS γνωρίζει το checksum του αρχείου αυτού το οποίο και χρησιμοποιεί για να ελέγχει αν κάτι δεν είναι όπως θα έπρεπε. Αυτό συμβαίνει διότι αν προσθέσουμε και άλλο κείμενο, ή αλλάξουμε έστω και ένα γράμμα ή αλλοιωθεί το αρχείο για κάποιον λόγο, θα αλλάξει και ο αριθμός που αντιπροσωπεύει το checksum. Για να δούμε τον αριθμό αυτό τρέχουμε:

123sha1sum keimeno.txt4c3ad571b4f1109f6587acba68f6388de2833514  keimeno.txt

¨Έστω ότι έχουμε τελειώσει την δουλειά μας και θέλουμε να τερματίσουμε αυτόν τον ψεύτικο υπολογιστή. Όταν κλείνει ένα PC τι γίνονται οι μονάδες αποθήκευσής ; Συγχρονίζουν τα δεδομένα και κάνουν ασφαλή διακοπή λειτουργίας. Οπότε πάμε να κάνουμε ασφαλή εξαγωγή του pool μας. Για να το κάνουμε αυτό τρέχουμε:

12cdsudozpool exportkolitoi

Τώρα φυσικά αν τσεκάρουμε με zpool list την ύπαρξη του pool μας, θα μας πει ότι δεν υπάρχει, πράγμα απολύτως φυσιολογικό.

Πάμε τώρα πίσω στον φάκελο με τους δίσκους

1cd~/zfsnoob

Έστω ότι έρχεται ένας καλικάντζαρος και μας χαλάει τον έναν από τους δυο δίσκους με την εντολή:

1ddif=/dev/zeroof=`pwd`/ssddiskos1.img bs=1M count=100

Πάμε λοιπόν εμείς και ανοίγουμε πάλι αυτό τον υπολογιστή το οποίο και φορτώνει το pool μας

1sudozpool import-d `pwd`/ssddiskos1.img -d `pwd`/ssddiskos2.img
zpool import disks

Ωχ ωχ ωχ ! Τι βλέπουμε λοιπόν; Τo ZFS αυτόματα μας ειδοποιεί ότι ο ένας δίσκος δεν είναι διαθέσιμος !. Το pool εμφανίζεται DEGRADED, με το ssddiskos2.img να εμφανίζεται ως ONLINE (υγιές) και μόνο o ssddiskos1.img που έγινε η ζημιά να εμφανίζεται ως ΜΗ ΔΙΑΘΕΣΙΜΟ (UNAVAIL) λόγω των κατεστραμμένων δεδομένων του.

Παρόλα αυτά λέει ότι το pool μας μπορεί να φορτωθεί χρησιμοποιώντας το id: ή το όνομα του υγιούς δίσκου. Οπότε πάμε να το κάνουμε:

1sudozpool importkathreftaki -d `pwd`/ssddiskos2.img
zpool import the pool wiht the healthy disk

Βλέπουμε ότι «θυμάται» ότι το pool μας είχε και έναν άλλον δίσκο και μας εμφανίζει και τη διαδρομή που είχε. Έτσι, το pool μας είναι online και λειτουργεί, αν και σε υποβαθμισμένη κατάσταση. Μπορούμε όμως να δούμε το αρχείο μας αφού δεν έχει καταστραφεί:

12cat/kathreftaki/keimeno.txt Tria poulakia kathontan...

Τώρα όμως θα πρέπει να αγοράσουμε έναν νέο δίσκο και να αντικαταστήσουμε το χαλασμένο. Στον φάκελο zfsnoob δημιουργούμε τον ssddiskos3.img

12cd~/zfsnoobddif=/dev/zeroof=`pwd`/ssddiskos3.img bs=1M count=100

Στη συνέχεια, ας ακολουθήσουμε τις οδηγίες από την κατάσταση zpool status που μας λέει πως να αντικαταστήσουμε το δίσκο:

1sudozpool replace kathreftaki `pwd`/ssddiskos1.img `pwd`/ssddiskos3.img

Τι έκανε λοιπόν το παραπάνω; Είπε στο kathreftaki pool να αντικαταστήσει τον χαλασμένο ssddiskos1.img με τον δίσκο ssddiskos3.img που μόλις βγάλαμε από την ζελατίνα.

replace disk in zfs

Θα παρατηρήσεις μια λέξη στο scan: όπου λέει resilvered (επαναργυρωμένο), αυτό σημαίνει ότι ξεκίνησε και ολοκλήρωσε επιτυχώς την δημιουργία αντιγράφων του ενός δίσκου στον άλλον χωρίς να χρειαστεί να κάνουμε τίποτα άλλο. Φυσικά αν π.χ. τα δεδομένα ήταν αρκετά GB τότε θα βλέπαμε και το ποσοστό ολοκλήρωσης και πιθανόν να μην είχε γίνει και τόσο γρήγορα.

Πριν πάμε στο επόμενο level, ας καθαρίσουμε λίγο διαγράφοντας τα πειράματά μας

1sudozpool destroy kathreftaki

και όπως θα προσέξατε δεν δίνει δεύτερη ευκαιρία ρωτώντας » ρε είσαι σίγουρος ; θα σου διαγράψω τους δίσκους ;«. Καταστρέφει το pool άμεσα. Στη συνέχεια μπορούμε να αφαιρέσουμε τους ψεύτικους «δίσκους» που δημιουργήσαμε:

12cd~/zfsnoobrmssddiskos*

Δημιουργία ZFS σε RAID-Z διάταξη με 3 δίσκους

Μέχρι τώρα, παίξαμε με το mirror χρησιμοποιώντας «image disks». Τι θα λέγατε τώρα να φτιάξουμε δικές μας συσκευές;

Θυμηθείτε το moto του UNIX «Τα πάντα είναι αρχείο» οπότε γιατί όχι και οι συσκευές. Αυτή την φορά θα φτιάξουμε συσκευές αποθήκευσης και θα είναι διαθέσιμες εκεί που είναι όλες οι κανονικές /dev/.

Αυτή την φορά πάλι μέσα στον φάκελο zfsnoob, επειδή έχουμε λεφτά ας παραγγείλουμε 4 nvme δίσκους των 200ΜΒ

1234forpsemataola innvme1.img nvme2.img nvme3.img nvme4.imgdo      ddif=/dev/zeroof=`pwd`/$psemataola bs=1M count=200done

Κάναμε και το unboxing, τα βγάζουμε από την ζελατίνα τους και τα βιδώνουμε στο PC μας (με την εφαρμογή losetup):

1234fori innvme1.img nvme2.img nvme3.img nvme4.imgdo     sudolosetup -fP $idone

Το παραπάνω τώρα, πήγε και κούμπωσε τα αρχεία δίσκου ως loop device στο λειτουργικό μας. Πάμε να τα βρούμε γιατί θέλουμε να ξέρουμε που είναι συνδεδεμένα:

12345losetup -a | grepnvme/dev/loop33: []: (/home/salih/zfsnoob/nvme3.img)/dev/loop31: []: (/home/salih/zfsnoob/nvme1.img)/dev/loop34: []: (/home/salih/zfsnoob/nvme4.img)/dev/loop32: []: (/home/salih/zfsnoob/nvme2.img)

Τέλεια ! Οι σουπερ-ντουπερ «NVME» δίσκοι μας είναι έτοιμοι προς χρήση και είναι συνδεδεμένοι στο /dev. Πάμε λοιπόν να φτιάξουμε μια διαρρύθμιση 3 δίσκων σε RAID-Z και με 1 εφεδρικό.

1sudozpool create axamparos raidz /dev/loop31/dev/loop32/dev/loop33spare /dev/loop34
raidz with one spare

Τι άλλαξε σε σχέση με το mirror που είχαμε κάνει :

  • φτιάξαμε ένα pool με όνομα axamparos
  • raidz: μια διαρρύθμιση με 3 δίσκους που μας δίνει ανοχή έως έναν προβληματικό δίσκο (δηλαδή αν χαλάσει και ο δεύτερος…. καήκαμε)
  • spare: δηλώνουμε ποια συσκευή θα είναι εφεδρική
zpool status with spare disk

Κουκλί το σύστημά μας ! Τώρα με τον εφεδρικό δίσκο να είναι τμήμα του pool μας, ας ενημερώσουμε το ZFS ότι θέλουμε αυτόματα να χρησιμοποιήσει αυτή την ρεζέρβα σε περίπτωση που έχουμε… φούιτ !:

1sudozpool setautoreplace=on axamparos
zpool enable autoreplace

Πάμε τώρα να γεμίσουμε λίγο την συστοιχία μας με αρχεία των 40 MB αφού πρώτα όμως μεταφέρουμε τα δικαιώματα σε εμάς όπως μάθαμε και στο mirror ZFS:

1sudochown$USER /axamparos
123fori in{1..6}; do    ddif=/dev/urandomof=/axamparos/arxeio_$i.txt bs=1M count=40done
create random files

Ωραία όπως βλέπουμε και στο output του zfs list έχουμε γεμίσει τον αποθηκευτικό χώρο που φτιάξαμε !. Για να προσομοιώσετε μια απόκριση του ZFS σε κάτι απότομο και απροσδόκητο, θα μπορούσατε να χρησιμοποιήσετε μια built-in λειτουργία που χρησιμεύει για να θέτουμε offline την συσκευή. Όμως, επειδή αυτά είναι για soyboys/girls…. θα προκαλέσουμε μια πιο ρεαλιστική αποτυχία δίσκου στο ZFS, όπως π.χ.:

  1. Να αποσυνδέσετε τη συσκευή loop: Αυτό μοιάζει με έναν δίσκο που γίνεται φυσικά μη διαθέσιμος λες και έχει φάει κλοτσιά ο πύργος του PC.
  2. Καταστροφή του δίσκου: Γράψτε τυχαία δεδομένα στη συσκευή με το dd για προσομοίωση καταστροφής.
  3. Αφαίρεση του αρχείου εικόνας δίσκου: Προσομοίωση αποτυχίας αναγνώρισης του δίσκου διαγράφοντας ή μετονομάζοντας το αρχείο που σχετίζεται με τη συσκευή loop.

Αυτές οι μέθοδοι παρέχουν ένα πιο ρεαλιστικό σενάριο αποτυχίας δίσκου σε σύγκριση με την απλή χρήση του zpool offline pool_name

Εγώ λέω να επιλέξουμε το πρώτο με το κλοτσίδι…. Πριν το κάνουμε όμως, κάντε μου μια χάρη και ανοίξτε ένα δεύτερο τερματικό, ή δεύτερη καρτέλα και αφήστε να τρέχει η παρακάτω εντολή για να βλέπετε live το τι θα συμβεί:

watch zpool status

Προσωπικά, προτιμώ για αυτές τις δουλειές το tmux για να έχω χωρισμένο το τερματικό σε δύο ή περισσότερα μέρη και να διατηρώ αυτή την διάταξή ακόμα και αν κλείσω το τερματικό. (βλέπε: Tmux | Μην χρησιμοποιείς τερματικό σε server χωρίς tmux). Αφού έχετε ανοιχτό το watch να τρέχει, τώρα στο άλλο τερματικό/καρτέλα πάμε να κάνουμε τις αταξίες μας. Τρέχουμε το παρακάτω:

1sudolosetup -d /dev/loop31

ώστε να προκαλέσουμε αποσύνδεση του δίσκου loop31. Το pool μας τώρα έχει χάσει τον έναν δίσκο αλλά συνεχίζει να λειτουργεί σαν να μην έγινε τίποτα (RAID-1 ντε..). Το ZFS θα μάθει για αυτή την απώλεια όταν «κάτι» προσπαθήσει να διαβάσει τα δεδομένα ή να ζητήσει πρόσβαση στον δίσκο. Φυσικά σε αντίθεση με πραγματικούς δίσκους, σε loop disks που έχουμε αυτό μπορεί να μην γίνει. Οπότε για να μην περιμένουμε ας του ζητήσουμε να εξετάσει τον εαυτό του με την παράμετρο scrub :

1sudozpool scrub axamparos

Θα δούμε το ZFS να μας αναφέρει το πρόβλημα αλλά και τις ενέργειες που πρέπει να κάνουμε. Παρόλα αυτά όμως, αν παρατηρήσετε ο εφεδρικός έχει αυτόματα σηκωθεί από τον πάγκο και ήδη παίζει μπαλίτσα… Οπότε μένει μόνο να αφαιρέσουμε τον προβληματικό δίσκο από το pool μας:

sudo zpool detach axamparos /dev/loop31

Αυτή η εντολή αφαιρεί τον «χαλασμένο» δίσκο από το pool, αφήνοντας τον εφεδρικό ως μέρος του ενεργού pool. Το εφεδρικό δεν θα θεωρείται πλέον ανταλλακτικό, αλλά θα αποτελεί μέρος του RAIDZ

detach the faild disk

Εννοείται ότι οι επόμενες ενέργειες μας με πραγματικούς δίσκους θα ήταν η φυσική αφαίρεση του δίσκου από το PC ή Server και η προσθήκη νέου spare ως εφεδρικού. Εδώ θα το κάνουμε εικονικά:

1234ddif=/dev/zeroof=`pwd`/nvme5.img bs=1M count=200sudolosetup -fP nvme5.imglosetup -a | grepnvme5.img /dev/loop31: []: (/home/salih/zfsnoob/nvme5.img)

και τέλος τον προσθέτουμε στον πάγκο ως εφεδρική παιχτούρα

1sudozpool add axamparos spare /dev/loop31
replace the disk and add a new spare

Επίλογος και ανακύκλωση

Φτιάξαμε σενάριο το οποίο ήθελα να σας εξοικειώσει με την χρήση της zpool κυρίως για να δείτε στην πράξη έστω και μια από τις περιπτώσεις που μπορεί να συμβούν με τους δίσκους μας. Χάλασε ο ένας, τον αντικαταστήσαμε με καινούριο και το ZFS ανέλαβε να δημιουργήσει ξανά αντίγραφα των αρχείων μας.

Ένα από τα ωραία χαρακτηριστικά του zfs είναι ότι διατηρεί ένα ιστορικό από όλες τις ενέργειες μας. Αυτό μπορεί να φανεί χρήσιμο στο μέλλον αν θέλουμε να δούμε πως χτίστηκε, άλλαξε και διαμορφώθηκε με την πάροδο του χρόνου:

1sudozpool history

Αν φτάσατε εδώ προσπαθώντας να καταλάβετε πώς να αντιμετωπίσετε και να αντικαταστήσετε έναν προβληματικό δίσκο σε ZFS, ελπίζω να βρήκατε αυτό που ψάχνατε. Αλλά, παρακαλώ, θυμηθείτε ότι τα βήματα δοκιμών που κάναμε, είναι για το περιβάλλον δοκιμών τα οποία είναι το θέμα αυτής της ανάρτησης. Το να μάθετε πώς να ρυθμίζετε το δικό σας εικονικό περιβάλλον δοκιμής θα σας κάνει έναν πολύ, πολύ καλύτερο διαχειριστή συστημάτων και θα σας προετοιμάσει για εκείνη την ημέρα, όταν ένας πραγματικός δίσκος θα τα φτύσει και τα δεδομένα σας είναι στην φάση «μπρος γκρεμός και πίσω ρέμα». Τίποτα δεν θα σας δίνει μεγαλύτερη αυτοπεποίθηση και θα αφαιρεί το άγχος, όπως η μπόλικη εμπειρία που αποκτήσατε κάνοντας επανάληψη ξανά και ξανά την προσομοίωση που κάναμε. Δοκιμάστε και τις άλλες περιπτώσεις σκόπιμης δημιουργίας προβλημάτων και προσπαθήστε να το επιλύσετε.

Update 19/09/2024: Το άρθρο αυτό συνοδεύεται πλέον και από ένα απλό script που μπορείτε να κατεβάσετε από το GitHub. Ήταν μικρό στην αρχή και το χρησιμοποίησα για να τρέξω τα test και να ετοιμάσω το παρόν άρθρο. Αποφάσισα ότι μπορεί να φανεί χρήσιμο και σε άλλους οπότε δημοσίευσα τον κώδικά του:ZFS Mini Lab

Πριν φύγουμε, ας καθαρίσουμε λίγο διαγράφοντας τα πειράματά μας

1sudozpool destroy axamparos

Στη συνέχεια μπορούμε να αφαιρέσουμε τους ψεύτικους «δίσκους» που δημιουργήσαμε:

1234cd~/zfsnoobrmssddiskos*cdrm-r ~/zfsnoob

Τέρμα όμως το μάθημα με ψεύτικους δίσκους, στο επόμενο θα γίνει σε πραγματικούς δίσκους…

Πηγή άρθρου: https://planet.ellak.gr/ , https://cerebrux.net/

Leave a Comment

Social Media Auto Publish Powered By : XYZScripts.com