Θεωρούμε ότι έχουμε ήδη 2 δίσκους. Θα δημιουργήσουμε με το gparted ίδια μεγέθη και ίδια συστήματα αρχείων στις κατατμήσεις που θέλουμε ως raid και στους 2 δίσκους
Μπορούμε να ρυθμίσουμε εύκολα raid-1 κατά την εγκατάσταση του debian (δες http://ads.wars-nicht.de/blog/archives/54-Install-Debian-Etch-on-a-Software-Raid-1-with-S-ATA-disks.html)
(Δείτε επίσης 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: <none>
Το 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 μπορούμε να την αποπροσαρτήσουμε εάν
Αν μια συστοιχία είναι να καθυστερήσει πολύ να δημιουργηθεί, και έχει μπει στην ουρά ως delayed μπορούμε να διακόψουμε την δημιουργία της με
mdadm --stop /dev/md1
Για να σταματήσουμε όλες τις συστοιχίες
mdadm --stop --scan
Δεν μπορούμε να δημιουργήσουμε raid σε κατατμήσεις που είναι ήδη προσαρτημένες και που δεν μπορούν να αποπροσαρτηθούν την ώρα που δουλεύουμε όπως η / κατάτμηση, ή /var κτλ. Για το λόγο αυτό εκκινούμε το σύστημά μας από ένα bootable cd όπως το knoppel
Ανοίγουμε μια κονσόλα και ως root
Φορτώνουμε το module raid1
modprobe
Ελέγχουμε την ορθή λειτουργία του με
cat /proc/mdstat
Θα μας απαντήσει κάτι παρόμοιο με
Personalities : [raid1] unused devices: <none>
Στην συνέχεια εκτελούμε το εργαλείο 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 πατάμε 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 σε κατατμήσεις software raid θα πρέπει να εκκινήσουμε από ένα live cd που έχει την δυνατότητα να φορτώσει το software raid.
Μια πολύ καλή επιλογή είναι το 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
όπου φαίνεται ότι έχει ήδη αρχίσει η διαδικασία επαναπροσθήκης