Εγχειρίδιο του FreeBSD
Προηγ | Κεφάλαιο 20 GEOM: Διαχείριση Συστοιχιών Δίσκων | Επόμενο

# 20.4 RAID1 - Mirroring

Το mirroring (καθρεφτισμός) είναι μια τεχνολογία που χρησιμοποιείται από πολλές εταιρίες και οικιακούς χρήστες για να ασφαλίσουν τα δεδομένα τους χωρίς διακοπές. Σε μια διάταξη mirror, ο δίσκος Β είναι απλώς ένα πλήρες αντίγραφο του δίσκου Α. Ή μπορεί οι δίσκοι Γ+Δ να είναι αντίγραφα των δίσκων A+B. Άσχετα με την ακριβή διάταξη των δίσκων, το σημαντικό είναι ότι οι πληροφορίες ενός δίσκου ή μιας κατάτμησης αντιγράφονται σε άλλους. Οι πληροφορίες αυτές μπορεί αργότερα να αποκατασταθούν με εύκολο τρόπο, ή να αντιγραφούν χωρίς να προκληθεί διακοπή στις υπηρεσίες του μηχανήματος ή στην πρόσβαση των δεδομένων. Μπορούν ακόμα και να μεταφερθούν και να φυλαχθούν σε άλλο, ασφαλές μέρος.

Για να ξεκινήσετε, βεβαιωθείτε ότι το σύστημα σας έχει δύο σκληρούς δίσκους ίδιου μεγέθους. Στα παραδείγματα μας θεωρούμε ότι οι δίσκοι είναι τύπου SCSI (απευθείας πρόσβασης, da(4)).

## 20.4.1 Mirroring στους Βασικούς Δίσκους

Υποθέτοντας ότι το FreeBSD έχει εγκατασταθεί στον πρώτο δίσκο `da0`, θα πρέπει να ρυθμίσετε το gmirror(8) να αποθηκεύσει εκεί τα βασικά δεδομένα του.

Πριν δημιουργήσετε το mirror, ενεργοποιήστε την δυνατότητα εμφάνισης περισσότερων λεπτομερειών (που μπορεί να σας βοηθήσουν σε περίπτωση προβλήματος) και επιτρέψτε την απευθείας πρόσβαση στη συσκευή δίσκου. Για το σκοπό αυτό θέστε τη μεταβλητή `kern.geom.debugflags` του sysctl(8) στην παρακάτω τιμή:

    # sysctl kern.geom.debugflags=17

Μπορείτε τώρα να δημιουργήσετε το mirror. Ξεκινήστε τη διαδικασία αποθηκεύοντας τα μετα-δεδομένα (meta-data) στον βασικό δίσκο, δημιουργώντας ουσιαστικά τη συσκευή `/dev/mirror/gm`. Χρησιμοποιήστε την παρακάτω εντολή:

> Προειδοποίηση: Η δημιουργία mirror στο δίσκο εκκίνησης μπορεί να έχει ως αποτέλεσμα την απώλεια δεδομένων, αν ο τελευταίος τομέας του δίσκου έχει ήδη χρησιμοποιηθεί. Η πιθανότητα αυτή είναι πολύ μικρότερη αν το mirror δημιουργηθεί αμέσως μετά από μια νέα εγκατάσταση του FreeBSD. Η παρακάτω διαδικασία είναι επίσης ασύμβατη με τις προεπιλεγμένες ρυθμίσεις εγκατάστασης του FreeBSD 9.`X` στις οποίες χρησιμοποιείται το σύστημα κατατμήσεων GPT. To GEOM καταστρέφει τα μεταδεδομένα του GPT, και θα προκαλέσει απώλεια δεδομένων και πιθανή αδυναμία εκκίνησης του συστήματος.

    # gmirror label -vb round-robin gm0 /dev/da0

Το σύστημα θα ανταποκριθεί με το παρακάτω μήνυμα:

    Metadata value stored on /dev/da0.
    Done.

Αρχικοποιήστε το GEOM. Η παρακάτω εντολή θα φορτώσει το άρθρωμα `/boot/kernel/geom_mirror.ko` στον πυρήνα:

    # gmirror load

> Σημείωση: Με την επιτυχή εκτέλεση αυτής της εντολής, δημιουργείται η συσκευή `gm0` μέσα στον κατάλογο `/dev/mirror`.

Ενεργοποιήστε το φόρτωμα του αρθρώματος `geom_mirror.ko` κατά την εκκίνηση του συστήματος:

    # echo 'geom_mirror_load="YES"' >> /boot/loader.conf

Επεξεργαστείτε το αρχείο `/etc/fstab`, αντικαθιστώντας τις αναφορές στις παλιές συσκευές `da0` με τις αντίστοιχες καινούριες `gm0` που αντιπροσωπεύουν το mirror.

> Σημείωση: Αν χρησιμοποιείτε το vi(1), μπορείτε να ακολουθήσετε τα παρακάτω βήματα για να ολοκληρώσετε εύκολα αυτή τη διαδικασία:

>     # vi /etc/fstab

> Στο vi(1), κρατήστε αντίγραφο ασφαλείας του τρέχοντος αρχείου `fstab` πληκτρολογώντας `:w /etc/fstab.bak`. Έπειτα αντικαταστήστε όλες τις αναφορές στις παλιές συσκευές `da0` με τις νέες `gm0` γράφοντας `:%s/da/mirror\/gm/g`.

Το `fstab` που θα προκύψει, θα μοιάζει με το παρακάτω. Δεν έχει σημασία αν οι δίσκοι ήταν αρχικά SCSI ή ATA, η συσκευή RAID θα έχει πάντα το όνομα `gm`.

    # Device                  Mountpoint  FStype      Options   Dump     Pass#
    /dev/mirror/gm0s1b        none        swap        sw        0        0
    /dev/mirror/gm0s1a        /           ufs         rw        1        1
    /dev/mirror/gm0s1d        /usr        ufs         rw        0        0
    /dev/mirror/gm0s1f        /home       ufs         rw        2        2
    #/dev/mirror/gm0s2d       /store      ufs         rw        2        2
    /dev/mirror/gm0s1e        /var        ufs         rw        2        2
    /dev/acd0                 /cdrom      cd9660      ro,noauto 0        0

Επανεκκινήστε το σύστημα:

    # shutdown -r now

Κατά την εκκίνηση του συστήματος, θα πρέπει πλέον να χρησιμοποιείται η συσκευή `gm0` αντί για την `da0`. Μετά το τέλος της εκκίνησης, μπορείτε να ελέγξετε ότι όλα λειτουργούν σωστά, εξετάζοντας την έξοδο της εντολής `mount`:

    # mount
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/mirror/gm0s1a   1012974  224604   707334    24%    /
    devfs                      1       1        0   100%    /dev
    /dev/mirror/gm0s1f  45970182   28596 42263972     0%    /home
    /dev/mirror/gm0s1d   6090094 1348356  4254532    24%    /usr
    /dev/mirror/gm0s1e   3045006 2241420   559986    80%    /var
    devfs                      1       1        0   100%    /var/named/dev

Η έξοδος φαίνεται σωστή, όπως αναμενόταν. Τελικά, για να ξεκινήσει ο συγχρονισμός, εισάγετε και την συσκευή `da1` στο mirror, χρησιμοποιώντας την ακόλουθη εντολή:

    # gmirror insert gm0 /dev/da1

Κατά τη διάρκεια του συγχρονισμού του mirror, μπορείτε να δείτε την πρόοδο της διαδικασίας με την παρακάτω εντολή:

    # gmirror status

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

          Name    Status  Components
    mirror/gm0  COMPLETE  da0
                          da1

Αν υπάρχουν προβλήματα, ή αν το mirror βρίσκεται ακόμα στη διαδικασία συγχρονισμού, το παράδειγμα θα δείχνει `DEGRADED` αντί για `COMPLETE`.

## 20.4.2 Αντιμετώπιση Προβλημάτων

### 20.4.2.1 Το σύστημα αρνείται να ξεκινήσει

Αν το σύστημα σας σταματάει σε μια προτροπή που μοιάζει με την παρακάτω:

    ffs_mountroot: can't find rootvp
    Root mount failed: 6
    mountroot>

Επανεκκινήστε το σύστημα σας μέσω του διακόπτη τροφοδοσίας ή του πλήκτρου reset. Στο μενού εκκίνησης, επιλέξτε το (6). Με τον τρόπο αυτό θα βρεθείτε στην προτροπή του loader(8). Φορτώστε χειροκίνητα το άρθρωμα στον πυρήνα:

    OK? load geom_mirror
    OK? boot

Αν το παραπάνω λειτουργήσει, τότε για κάποιο λόγο το άρθρωμα δεν φορτώθηκε σωστά. Ελέγξτε αν είναι σωστή η σχετική καταχώριση στο αρχείο `/boot/loader.conf`. Αν το πρόβλημα παραμένει, προσθέστε τη γραμμή:

    options	GEOM_MIRROR

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

## 20.4.3 Επαναφορά Μετά από Αποτυχία Δίσκου

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

Υποθέτοντας ότι χρησιμοποιούμε τις ρυθμίσεις RAID1 που δείξαμε προηγουμένως, ας θεωρήσουμε ότι χάλασε ο δίσκος `da1` και πρέπει να αντικατασταθεί. Για να τον αντικαταστήσετε, βρείτε ποιος δίσκος είναι και απενεργοποιήστε το σύστημα. Στο σημείο αυτό, μπορείτε πλέον να ανταλλάξετε το δίσκο με ένα νέο και να ενεργοποιήσετε ξανά το σύστημα. Μετά την επανενεργοποίηση του συστήματος, μπορείτε να χρησιμοποιήσετε τις παρακάτω εντολές για να θέσετε σε λειτουργία το νέο δίσκο:

    # gmirror forget gm0

    # gmirror insert gm0 /dev/da1

Χρησιμοποιήστε την εντολή `gmirror` `status` για να παρακολουθείτε τη διαδικασία του συγχρονισμού. Είναι στα αλήθεια τόσο απλό.

Προηγ | Αρχή | Επόμενο
RAID0 - Striping | Πάνω | RAID3 - Striping σε Επίπεδο Byte με Αφοσιωμένο Parity

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.