====== Raid - Καθρέφτισμα ασφαλείας κατατμήσεων ====== Θεωρούμε ότι έχουμε ήδη 2 δίσκους. Θα δημιουργήσουμε με το gparted ίδια μεγέθη και ίδια συστήματα αρχείων στις κατατμήσεις που θέλουμε ως raid και στους 2 δίσκους ===== Ρύθμιση raid πριν την εγκατάσταση ===== Μπορούμε να ρυθμίσουμε εύκολα raid-1 κατά την εγκατάσταση του debian (δες http://ads.wars-nicht.de/blog/archives/54-Install-Debian-Etch-on-a-Software-Raid-1-with-S-ATA-disks.html) ===== Ρύθμιση raid-1 μετά την εγκατάσταση ===== (Δείτε επίσης http://www200.pair.com/mecham/raid/raid1-degraded-etch.html) Η πιο συνήθης περίπτωση είναι να επιλέξουμε να χρησιμοποιήσουμε raid στο σύστημά μας εκ των υστέρων. Δεν θα θέλουμε να χάσουμε το ήδη εγκατεστημένο σύστημά μας. Στην περίπτωση του raid-1 μπορούμε να το κάνουμε αυτό. Αφού δημιουργήσουμε τις κατατμήσεις όπως θέλουμε στον 1ο δίσκο (hda) αντιγράφουμε τις κατατμήσεις στο (hdc) με κάποιο εργαλείο όπως το gparted Υπάρχει και η παρακάτω εντολή sfdisk αλλά μπορεί να δημιουργήσει σοβαρά προβλήματα και να αποτύχει το fsck -C -R -A -a που γίνεται στο boot sfdisk -d /dev/hda | sfdisk /dev/hdc εάν υπάρχει κάποιο σφάλμα που και δεν ολοκληρωθεί η διαδικασία, αν δεν είναι σημαντικό, προσθέτουμε την παράμετρο --force για να εξαναγκάσουμε την εκτέλεση sfdisk -d /dev/hda | sfdisk --force /dev/hdc Εγκαθιστούμε το πακέτο mdadm aptitude install mdadm Επιλέγουμε all εάν η κατάτμηση root είναι και αυτή σε raid (κάτι πολύ πιθανό) Στην συνέχεια με το εργαλείο modconf επιλέγουμε να φορτώνεται κατά την εκκίνηση το module raid1. Βρίσκεται στο kernel/drivers/md Ελέγχουμε εάν υπάρχει τώρα υποστήριξη raid cat /proc/mdstat Δοκιμάζουμε αρχικά με μια κατάτμηση που δεν είναι σημαντική την ώρα που εργαζόμαστε. Π.χ. /opt/ Την αποπροσαρτούμε με umount /opt Έστω ότι είναι η 1η πρωτεύουσα κατάτμηση του 1ου δίσκου (dev/sda1) και θέλουμε να την καθρεφτίσουμε στην 1η κατάτμηση του 2ου δίσκου (/dev/sdb1). Εκτελούμε την εντολή mdadm --create /dev/md0 --auto=yes --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1 Ελέγχουμε εάν δημιουργήθηκε η συστοιχία raid εκτελώντας cat /proc/mdstat Θα μας απαντήσει κάτι σαν Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 30716160 blocks [2/2] [UU] [=====>...............] resync = 26.1% (8019584/30716160) finish=5.8min speed=64179K/sec unused devices: Το resync = 26.1% σημαίνει ότι τώρα η συστοιχία συγχρονίζεται, τα δεδομένα μεταφέρονται από τον sda1 στον sdb1 και είναι στο 26.1% Πηγαίνουμε τέλος στο αρχείο /etc/fstab και αντικαθιστούμε την συσκευή /dev/sda1 με την συσκευή της συστοιχίας raid /dev/md0. Π.χ. την γραμμή /dev/sda1 /opt reiserfs defaults 0 2 σε /dev/md0 /opt reiserfs defaults 0 2 Τέλος επαναπροσαρτούμε την κατάτμηση /opt με mount /opt Θα συνεχίσουμε με τις υπόλοιπες κατατμήσεις. Την κατάτμηση /home μπορούμε να την αποπροσαρτήσουμε εάν * αποσυνδεθούμε από το γραφικό περιβάλλον * Με CTRL-ALT-F2 θα δούμε γραμμή εντολών. (CTRL-ALT-F7 στο τέλος για να ξαναδούμε γραφικό περιβάλλον) * Μπούμε ως root και εκτελέσουμε * umount /home * Στην συνέχεια αφού γνωρίζουμε πως αναγνωρίζεται η κατάτμηση /home από το σύστημά μας (π.χ. /dev/hda7) θα κάνουμε αντίστοιχες ενέργειες για αυτήν όπως κάναμε για την /opt ===== Παύση λειτουργίας συστοιχίας ===== Αν μια συστοιχία είναι να καθυστερήσει πολύ να δημιουργηθεί, και έχει μπει στην ουρά ως delayed μπορούμε να διακόψουμε την δημιουργία της με mdadm --stop /dev/md1 Για να σταματήσουμε όλες τις συστοιχίες mdadm --stop --scan ===== Raid σε βασικές κατατμήσεις ===== Δεν μπορούμε να δημιουργήσουμε raid σε κατατμήσεις που είναι ήδη προσαρτημένες και που δεν μπορούν να αποπροσαρτηθούν την ώρα που δουλεύουμε όπως η / κατάτμηση, ή /var κτλ. Για το λόγο αυτό εκκινούμε το σύστημά μας από ένα bootable cd όπως το knoppel Ανοίγουμε μια κονσόλα και ως root Φορτώνουμε το module raid1 modprobe Ελέγχουμε την ορθή λειτουργία του με cat /proc/mdstat Θα μας απαντήσει κάτι παρόμοιο με Personalities : [raid1] unused devices: Στην συνέχεια εκτελούμε το εργαλείο kdf ώστε να μας βοηθήσει να βρούμε την κατάτμηση / kdf& Την προσαρτούμε κάνωντας δεξί κλικ πάνω της και επιλέγωντας προσάρτηση και εκτελούμε Αλλάζουμε επίσης το αρχείο /etc/default/mdadm kwrite /media/sda6/etc/default/mdadm Η γραμμή INITRDSTART='all' γίνεται INITRDSTART='/dev/md0 /dev/md1 /dev/md2 /dev/md3' Aποπροσαρτούμε τέλος την συσκευή umount /media/sda6 και εκτελούμε mdadm --create /dev/md3 --auto=yes --level=raid1 --raid-devices=2 /dev/sda6 /dev/sdb6 Με αυτή την εντολή θα πετύχουμε μόνο να αντιγράψουμε τα περιεχόμενα του /dev/sda6 στο /dev/sdb6 αλλά δυστυχώς δεν έχουμε τελειώσει. Επανεκκινούμε, με CTRL-ALT-F2 μπαίνουμε σε μια κονσόλα και τροποποιούμε το αρχείο /boot/grub/menu.lst ώστε η γραμμή # kopt=root=/dev/sda6 ro να αλλάξει σε # kopt=root=/dev/md3 ro Εκτελούμε πριν επανεκκινήσουμε update-grub Αλλάζουμε επίσης το αρχείο /etc/fstab. Εάν είναι η ριζική κατάτμηση είναι για παράδειγμα /dev/sda6 αλλάζουμε το sda6 με md0 ή md1,md2 .. ανάλογα ποια θα είναι η επόμενη διαθέσιμη συστοιχία εάν έχουμε ήδη κάποιες. Π.χ. εάν έχουμε τις md0,md1,md2 θα είναι η md3. Έτσι η γραμμή /dev/sda6 / reiserfs notail 0 1 γίνεται /dev/md3 / reiserfs notail 0 1 Τέλος εκτελούμε mdadm --create /dev/md3 --auto=yes --level=raid1 --raid-devices=2 missing /dev/sdb6 mkfs.reiserfs /dev/md3 mdadm --examine --scan >> /etc/mdadm/mdadm.conf mkdir /mnt/md3 mount /dev/md3 /mnt/md3 cp -dpRx / /mnt/md3 Επανεκκινούμε και με CTRL-ALT-F2 μπαίνουμε σε μια κονσόλα και εκτελούμε mdadm --add /dev/md3 /dev/sda6 /usr/share/mdadm/mkconf force-generate update-initramfs -u Περιμένουμε τώρα να προστεθεί στην συστοιχία και η κατάτμηση από τον 1ο δίσκο. ==== Εγκατάσταση grub και στους 2 δίσκους==== === grub1 === Επανεκκινούμε και στο μενού του grub πατάμε c για να μπούμε στην γραμμή εντολών. Έστω ότι η κατάτμηση /boot είναι στο /dev/hda6. Εκτελούμε διαδοχικά τις εξής εντολές. root (hd0,5) setup (hd0) root (hd1,5) setup (hd1) Για grub2 (και grub1) Στην κονσόλα εκτελούμε grub-install /dev/sda grub-install /dev/sdb Με τις παραπάνω εντολές εγκαταστήσαμε το grub στον 1ο (αν και ήταν ήδη) αλλά και στον 2ο δίσκο. Αν όλα έχουν πάει καλά, τότε έχουμε τελειώσει. Μπορούμε να δοκιμάσουμε να εκκινήσουμε χωρίς κάποιον από τους 2 δίσκους (απλά βγάζουμε το ρεύμα από τον ένα δίσκο). Θα πρέπει να εκκινήσει το σύστημά μας. Εκτελούμε την εντολή cat /proc/mdstat για να δούμε ότι όντως αναγνωρίζεται ο ένας από τους δύο δίσκους της συστοιχίας Υπόψιν ότι πολλές φορές, όταν ο δίσκος είναι μόνος του, αναγνωρίζεται από το σύστημα πάντα ως ο 1ος π.χ. /dev/sda Επίσης μετά την αφαίρεση ενός δίσκου, δεν γίνεται αυτόματη η προσθήκη του στην συστοιχία. Για να προστεθεί θα πρέπει να εκτελέσουμε mdadm --add /dev/md3 /dev/sdb6 ===== Backup ===== Για να κάνουμε αποτελεσματικό backup σε κατατμήσεις software raid θα πρέπει να εκκινήσουμε από ένα live cd που έχει την δυνατότητα να φορτώσει το software raid. Μια πολύ καλή επιλογή είναι το [[http://partedmagic.com|parted magic]] Πριν εκκινήσουμε με το live cd αντιγράφουμε το αρχείο /etc/mdadm/mdadm.conf σε προσβάσιμο σημείο π.χ. στην συσκευή που θα κάνουμε το κανονικό backup Στην συνέχεια εκκινούμε το parted magic επιλέγοντας από τα μενού του να φορτώσει software raid Τερματίζουμε το mdadm mdadm --stop --scan Αντικαθιστούμε το αρχείο /etc/mdadm.conf του parted magic με το αρχείο mdadm.conf που κάναμε προηγουμένως backup Εκκινούμε πάλι το mdadm mdadm --assemble --scan Επιβεβαιώνουμε ότι οι raid συστοιχίες έχουν φορτωθεί με cat /proc/mdstat Πλέον μπορούμε να χρησιμοποιήσουμε το partclone για το backup Έστω π.χ. ότι αποθηκεύουμε σε έναν εξωτερικό δίσκο που φορτώθηκε στο /media/BACKUP χωρίς συμπίεση backup partclone.ext4 -c -s /dev/md0 -o /media/BACKUP/image_md0.pcl restore partclone.restore -d -s /media/BACKUP/image_md0.pcl -o /dev/md0 με συμπίεση partclone.ext4 -c -s /dev/md0 | gzip -c > /media/BACKUP/image_md0.pcl.gz ===== Αντιμετώπιση σφαλμάτων ===== ==== Επαναπροσθήκη κατάτμησης σε συστοιχία ==== Σε περίπτωση που κάποια κατάτμηση αφαιρεθεί από μια συστοιχία για οποιοδήποτε λόγο, εκτελούμε αρχικά για να το δούμε την εντολή cat /proc/mdstat md2 : active raid1 sda8[2] sdb8[1] 30716160 blocks [2/1] [_U] Μας δείχνει λοιπόν ότι στην συστοιχία md2 υπάρχει μόνο η κατάτμηση sdb8. Λείπει η sda8, εκτελούμε την ακόλουθη εντολή για να την επαναπροσθέσουμε (ίσως χρειαστεί να κάνουμε επανεκκίνηση του υπολογιστή πρώτα) mdadm --add /dev/md2 /dev/sda8 mdadm: re-added /dev/sda8 Για να το επιβεβαιώσουμε εκτελούμε πάλι cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda8[0] sdb8[1] 30716160 blocks [2/1] [_U] [>....................] recovery = 0.6% (203648/30716160) finish=7.4min speed=67882K/sec όπου φαίνεται ότι έχει ήδη αρχίσει η διαδικασία επαναπροσθήκης ===== Πηγές ===== * wiki : http://linux-raid.osdl.org/index.php/Main_Page * http://linux-raid.osdl.org/index.php/Tweaking%2C_tuning_and_troubleshooting * http://linux-raid.osdl.org/index.php/Introduction#The_RAID_levels * raid levels : http://www.chicago-data-recovery.com/raid-levels.php * man page : http://man-wiki.net/index.php/8:mdadm * blog : http://neil.brown.name/blog/mdadm * fakeraid : * http://wiki.debian.org/DebianInstaller/SataRaid