LinuxFanClub Wiki

Υπηρεσίες, Προγραμματισμός, Εκπαίδευση ..

User Tools

Site Tools


el:linux:debian:server:raid

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: <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 μπορούμε να την αποπροσαρτήσουμε εάν

  • αποσυνδεθούμε από το γραφικό περιβάλλον
  • Με 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: <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 και στους 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.

Μια πολύ καλή επιλογή είναι το 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

όπου φαίνεται ότι έχει ήδη αρχίσει η διαδικασία επαναπροσθήκης

Πηγές

el/linux/debian/server/raid.txt · Last modified: Y/m/d H:i by vagk