RAID & LVM σε Home Server

Γειά χαρά σε όλους,

Θα ήθελα την βοήθειά σας στο παρακάτω θέμα.
Λοιπών, θέλω να στήσω ένα Home cloud server με owncloud. Ο server θα στηθεί σε ένα Raspberry Pi 4, στην έκδοση των 4 GB RAM και θα έχει OS, Ubuntu Server for Pi 4. (Ναι ξέρω τους κινδύνους του cloud στο οικιακό δίκτυο καθώς γνωρίζω επίσεις ότι υπάρχουν και καλύτερα λειτουργικά και καλύτερα ίσως board γι’ αυτήν την δουλεία, οπότε ας μην μπουμε σε τέτοιου είδους συζητήσεις. Board και λειτουργικό θεωρούνται standard οπότε πάμε με αυτά που έχουμε.)
Συνεχίζοντας, δύο εξωτερικοί σκληροί δίσκοι των 4ΤΒ θα είναι συνδεδεμένοι στο Pi για storage των δεδομένων ενώ το OS θα τρέχει στην SD του Pi.
Εδώ στερεύουν οι γνώσεις μου και θα ήθελα την βοήθειά σας. Θέλω να “συνδέσω” τους δύο σκληρούς με RAID 1 και να εκμεταλλευτώ τα καλούδια του LVM για μελλοντική αναβάθμιση (ίσως) και δεν ξέρω πως να το κάνω αυτό.
Πρέπει να “ενώσω” τους σκληρούς πρώτα με RAID και μετά να χρησιμοποιήσω LVM η να φτιάξω πρώτα τα physical volumes και μετά να τα “ενώσω” με RAID;
Ό,τι βρίσκω στο web είναι αρκετά μπερδεμένο και το ένα άρθρο ανερεί το άλλο.

Ευχαριστώ εκ των προτέρων.

1 Like

TLDR: Τίποτα απολύτως.

Κατ’ αρχήν συνιστώ την χρήση του Nextcloudpi, μια ειδική διανομή που περιέχει το Nextcloud (που θα συνιστούσα έτσι και αλλιώς απέναντι στο owncloud). Το πλεονέκτημα του είναι πως τα πάντα είναι στημένα, και έχει επιπλέον ένα σύστημα ρυθμίσεων σε γραφικό περιβάλλον η σε τερματικό. Είναι η λύση που χρησιμοποιώ.

Για τους δίσκους θα τους χρησιμοποιούσα σαν απλούς ξεχωριστούς δίσκους. Το Nextcloudpi θα σε βοηθήσει να μεταφέρεις τα δεδομένα σε ένα εξωτερικό δίσκο. Ο δεύτερος δίσκος θα συνδεθεί με την βοήθεια του App “External Storage Support”, το οποίο είναι απενεργοποιημένο.

Αν δεν σου αρέσει αυτή η λύση: Κατ’ αρχάς ξεχνάμε οποιοδήποτε σκέψη για RAID, αν συμβεί κάτι στον ένα δίσκο τότε χάνεις τα δεδομένα και στους δυο. Και το πλεονέκτημα της ταχύτητας θα το χάσεις έτσι και αλλιώς. Οπότε οι πιθανές λύσεις είναι LVM με ext4 ή ZFS. Αυτό που κάνουν είναι να φτιάχνουν κατατμήσεις πάνω σε ένα μεγάλο δίσκο που αποτελείτε από πολλές κατατμήσεις σε μικρότερους δίσκους. Η κύρια χρήση του είναι όταν θέλεις να πειράζεις τα μεγέθη τους, πχ να μεγαλώσεις τον ‘/home’. Προσωπικά είμαι υπέρ των απλών λύσεων, μετακίνησε κάποιους χρήστες σε άλλο δίσκο, ή φτιάξε συμβολικούς δεσμούς.

Αν τώρα θέλεις να κάνεις RAID1, για ασφάλεια - χάνοντας όμως την χωρητικότητα των δίσκων στο μισό - έχει κάποιο μικρό νόημα. Αλλά προσωπικά θα πήγαινα σε μια απλή λύση backup με ένα rsync. Αν είχα περισσότερους δίσκους διαθέσιμους θα έκανα RAID 5ή6 με software.

Μερικές συμβουλές: Τροφοδοσία και SMART στους δίσκους. Η σωστή τροφοδοσία είναι το κλειδί. Πάντα αυθεντικό τροφοδοτικό για το Raspberry. Επαρκής τροφοδοσία για τους δίσκους.

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

Δες και το παρακάτω που εξηγεί τι είναι το RAID

2 Likes

Hello , και ευχαριστώ για τον χρόνο σου.

Ερώτηση πρώτη το NextcloudPi είναι λειτουργικό και όχι απλά εφαρμογή; Δηλαδή δεν χρειάζεται το Ubuntu; Ρωτάω γιατί νομίζω έχω ξαναδεί κάτι ανάλογο αλλα δεν το έχω πιάσει το concept.

Ερώτηση δεύτερη, γιατί όχι RAID 1 ; Αν χάσω τον ένα δίσκο, έχω τον άλλο.

Μήν παρεξηγηθώ, δεν ξέρω και ρωτάω να δω τι μου τεριάζει περισότερο.

1 Like

Αν δεν ρωτάς δεν μαθαίνεις :stuck_out_tongue:

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

Η λύση που προτείνω τα έχει όλα στημένα και προ ρυθμισμένα χωρίς docker. Απλά το περνάς στην κάρτα και είσαι έτοιμος. Το τι λειτουργικό έχει αποκάτω σου είναι αδιάφορο. Ένα πράγμα θέλεις να κάνει. Στην πραγματικότητα είναι ένα Ubuntu, και έχεις πλήρη πρόσβαση, αλλά δεν σε αφορά.

Τέλος το βίντεο τα λέει καλύτερα, αλλά φτιάχνεις RAID για 3 πράγματα ταχύτητα (που το ξεχνάμε), αυξημένη χωρητικότητα και αξιοπιστία. Στις λύσεις αυτές λείπει μια λέξη το Backup. Το RAID δεν είναι λύση για backup. Δεν βλέπω κανένα σενάριο που να έχεις όφελος από RAID1. Στην λύση που προτείνω οι δίσκοι είναι τουλάχιστον ανεξάρτητοι. Όποτε θέλεις απλά αποσυνδέεις τον ένα δίσκο και έχεις τα δεδομένα μαζί σου.

@Talos
Απλά προσθέτω στη συζήτηση (δεν γνωρίζω από Pi και λειτουργικά πάνω σε αυτό) ότι το RAID 1 εξασφαλίζει ένα redundancy στα δεδομένα, χωρίς βέβαια να αντικαθιστά το backup. Είναι σε κάθε περίπτωση ένα επιπρόσθετο layer ασφάλειας των δεδομένων και εγώ προσωπικά το θεωρώ εξαιρετικά χρήσιμο. Νομίζω επίσης ότι στο soft RAID1 αν αποσυνδέσεις τον έναν δίσκο και να τον καρφώσεις σε άλλο σύστημα, θα μπορείς να δεις και να διαβάσεις τα πάντα. (φυσικά δεν αναφέρομαι σε ZFS mirror ή BTRFS mirror, αλλά απλό mdadm)

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

Το serverfault λέει επί αυτού

Most raid implementations will add a block of data (mdadm calls this a “raid superblock”) describing and identifying the array to each disk that makes up the array. It’s better to have this information on the disks than on the controller because it allows the array to be moved between controllers and reduces the risk that a disk will accidently be used as part of the wrong array.
This block can be in various locations. For example linux’s mdadm offers three choices, beginning end or 4k from beginnning.
If the raid description is at the end of the device and the array is raid1 then you can access the individual drive’s seperately since normal partition tables are at the start of the device and garbage at the end doesn’t generally matter. This can be both good and bad, it can be useful for booting or data recovery purposes but it can also cause corruption of the array if a partition on one of the component devices is accidently mounted read/write.

Αντίθετα μια λύση με ένα cron job που θα κάνει rsync κάθε λίγα λεπτά είναι η ποιο ενδεδειγμένη λύση για ένα αντίγραφο άμεσης επαναφοράς, με το επιπλέον πλεονέκτημα ότι οι δίσκοι είναι ανεξάρτητοι.

Τέλος θα επαναλάβω αυτά που λέει το βίντεο: Το Raid δεν είναι για σένα

Έχεις δίκιο. Μόλις το δοκίμασα με δυο εξωτερικούς που έχω spare (έφτιαξα mdadm RAID1 και αποσύνδεσα τον ένα) και δεν μπορούν να διαβαστούν (τουλάχιστον plug n play) από άλλο σύστημα. Κακώς έγραψα ότι μπορούν, έχοντας μια προηγούμενη εμπειρία από δοκιμές με win 10 soft raid-1 που είναι ΓΤΠ αποσυνδέεις τον δίσκο και τον διαβάζεις όπου θες. Αυτό το έχω δοκιμάσει και είμαι σίγουρος.

Αν αναφέρεσαι σε μένα, δεν νομίζω ότι θα ακολουθήσω τη συμβουλή σου. Έχοντας συγκεκριμένο backup policy 3 σημείων, το οποίο δεν σκοπεύω να αλλάξω, νομίζω ότι το RAID μπορεί να προσφέρει ένα επιπρόσθετο εξαιρετικό ενδιάμεσο layer redundancy. Προσωπικά είμαι αποφασισμένος για RAIDZ1 μόλις βρω τα χρήματα για να αγοράσω τους δίσκους.

Έχω κάποιες μερικές έως και πλήρεις διαφωνίες σε αρκετά πράματα… :yum:

Κατ αρχήν, σε ένα mdadm raid1 array χωρίς lvm μπορείς να βγάλεις τον έναν δίσκο, να τον βάλεις σε ένα άλλο λινουξόκουτο και να δεις κανονικά το περιεχόμενο του δίσκου. Στα περισσότερα μάλιστα live linux distros γίνεται ντιπ αυτόματα (κάνουν αυτόματα build το raid1 array σε “degraded state” με έναν δίσκο). Το έχω κάνει άπειρες φορές και αν δεν γίνονταν τότε η όλη λογική και το implementation του raid1 θα ήταν ντιπ παράλογη και σπασμένη. Όντως, υπό συνθήκες (αν δεν γίνει αυτόματα σε live distro), πρέπει να κάνεις build το raid1 array με λειψό δίσκο σε "degraded state"με το χέρι, αλλά δεν είναι τραγικά δύσκολο (google is our best friend σε αυτά τα πράματα).

Εννοείται βέβαια ότι αν έχεις δύο raid1 arrays και το καθένα είναι physical volume στο ίδιο volume group και στο ίδιο logical volume (quick cheatsheet) και προσδοκάς να βγάλεις έναν δίσκο από τους 4, να τον βάλεις σε άλλο υπολογιστή και να δεις κάτι, τότε σαφέστατα έπαιξες κι έχασες, μιας και θα λείπει όλο το κομμάτι του lvm. Κοντά στο νου κι η γνώση.

Στο ερώτημα τώρα που θέτει ο @cptcharis: Εγώ προσωπικά θα έκανα LVM χρησιμοποιώντας το raid1 array ως physical volume του LVM. Με απώτερο σκοπό αν κάποια στιγμή ξεμείνω από χώρο να βάλω άλλους δύο δίσκους και πάλι σε raid1 array και να προσθέσω το καινούριο raid1 array ως physical volume στο υπάρχον volume group και logical volume (σε συνδυασμό βέβαια με το φοβερό και τρομερό pi hat που βρήκε ο @Talos ή σε άλλο hardware ή στο pi5/6/7 που θα υποστηρίζει πολλαπλούς sata δίσκους).

Συμφωνώ απολύτως ότι το raid1 χωρίς backup είναι disaster waiting to happen. Από την άλλη μεριά όμως προτιμώ χίλιες φορές ο δεύτερος δίσκος μου να είναι σε raid1 και όχι απλά να χρησιμοποιείται με rsync. Η λύση του rsync κάθε λίγα λεπτά μου φαίνεται από λίγο έως πολύ inefficient (και για ποιον λόγο να χάσεις το performance gain του δεύτερου δίσκου στο radi1?) και άσκοπα περίπλοκη (γιατί να ασχοληθώ εγώ με το “ντουμπλάρισμα” και να μην ασχοληθεί αυτόματα το mdadm?). Πέραν τούτου, το raid1 προφανώς προσθέτει redundancy 1 δίσκου και σου δίνει χρόνο να “διορθώσεις” τη ζημιά με το σύστημά σου online.

Αβντά…

Όταν λες LVM συμπεριλαμβάνεται και η δημιουργία EXT4 στο mdadm RAID1?

Εγώ έστησα το mdamd RAID1
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdX /dev/sdY
μετά έδωσα
sudo mkfs.ext4 -F /dev/md0

Μετά έγραψα κάποια δεδομένα (δεν περίμενα να τελειώσει το sync), αποσύνδεσα τον ένα δίσκο και μπήκα από ένα live περιβάλλον να τον διαβάσω. Δεν τον έβλεπε ο file manager. Μέσα από gnome-disk μπορούσα να τον δω ως “raid member” ή κάτι τέτοιο αλλά δεν μπορούσα να τον κάνω mount. Δεν το έψαξα περαιτέρω, πάντως plug n play δεν μου έπαιζε.

ΥΓ επίσης ερώτηση, μια που φαίνεται ότι το κατέχεις. Αν στήσω mdadm raid1, θα με προειδοποιήσει το σύστημα αν υπάρχει κάποια αστοχία σε έναν από τους δύο δίσκους; Πρέπει να το ρυθμίσω κάπως; Γιατί όταν αποσύνδεσα τον έναν δίσκο δεν έλαβα κάποια προειδοποίηση. Είναι θέμα διανομής μήπως; (δοκίμασα σε deepin VM).

To LVM είναι Logical Volume Manager. Χρησιμοποιεί το raid1 array (/dev/mdx) ως physical volume, πάνω στο οποίο θα γίνει το volume group πάνω στο οποίο θα γίνει ένα ή περισσότερα logical volumes, τα οποία θα φορμαριστούν με πχ ext4 και πάνω στα οποία γράφουμε δεδομένα.

Στη δική σου την περίπτωση (μόνο ένα raid1 array με δύο δίσκους), είτε έχεις είτε δεν έχεις LVM, με έναν δίσκο λειτουργικό οφείλεις να μπορείς να δεις τα δεδομένα σου. Μπορεί να μην το έκανε αυτόματα το distro σου - με το χέρι όμως σίγουρα μπορείς να το κάνεις.

Σε desktop environment πραγματικά δεν ξέρω (αν και πώς βγαίνει κάποιο dialog που σε ειδοποιεί).

Πάντως, στο mdadm.conf (όπως επίσης και το αντίστοιχο conf για τα smartmontools) μπορείς να ορίσεις email address, στην οποία στέλνονται τα κακά μαντάτα (για raid και μεμονωμένους δίσκους αντίστοιχα). Αυτό βέβαια προϋποθέτει ότι έχεις στημένο κάποιας μορφής MTA (mail transfer agent).

Πολύ μου αρέσει η εξέλιξη του νήματος, συνέχειστε παίδες !

1 Like

Ωραία εγώ λοιπόν δεν είχα LVM και είχα διαμορφώσει το RAID σε ΕΧΤ4. Όπως έγραψα και πιο πριν, live linux mint δεν μπόρεσε να δει τον ένα δίσκο αυτόματα. Τώρα αν εγκαθιστούσα mdadm στο live και δοκίμαζα πιθανότατα θα τα κατάφερνα.

Ποια είναι αυτά τα live distros που κάνουν build αυτόματα; Λογικά πρέπει να έχουν προεγκατεστημένο mdadm.

Όπου και αν έψαξα στο google, παντού αναπαράγεται αυτή η μορφή προειδοποίησης με το email. Το γνώριζα. Κάποιος τρόπος θα υπάρχει και στο απλό desktop να σκάσει ένα warning, αλλά φαίνεται ότι σε όλον τον πλανήτη δεν έχει ασχοληθεί κανείς να δούμε ποιος είναι αυτός ο τρόπος (ή όσοι τον έχουν ανακαλύψει τον κρατάνε κρυφό). Μάλλον θα πρέπει να λιώσω να διαβάσω το documentation για να τον βρω μόνος μου…

μηπως θα βοηθουσε το incron σε συνδυασμο με το notify-send ;
απλως μια σκεψη εκανα… δεν ξερω καν αν μπορει να γινει…

Πάνε χρόνια που το έκανα - πραγματικά δεν θυμάμαι. Προφανώς έχουν “φορτωμένο” το mdadm (σίγουρα όσα στο installation τους προσφέρουν τη δυνατότητα για raid).

Ρίξε μια ματιά εδώ

1 Like

Ωραιότατο νήμα φτιάξατε παιδιά ! Εύγε.

Προσωπικά περιμένω το Ubuntu 20.04 το οποίο ελπίζω να σταθεροποιήσει την χρήση του ZFS από τον εγκαταστατη του και να εκμεταλλευτώ όλα τα καλούδια του ZFS

3 Likes