OrangeBOX: Ασφαλής συσκευή αποθήκευσης με βάση το OrangePI: 5 βήματα
OrangeBOX: Ασφαλής συσκευή αποθήκευσης με βάση το OrangePI: 5 βήματα
Anonim
OrangeBOX: Ασφαλής συσκευή αποθήκευσης που βασίζεται σε OrangePI
OrangeBOX: Ασφαλής συσκευή αποθήκευσης που βασίζεται σε OrangePI
OrangeBOX: Ασφαλής συσκευή αποθήκευσης που βασίζεται σε OrangePI
OrangeBOX: Ασφαλής συσκευή αποθήκευσης που βασίζεται σε OrangePI

Το OrangeBOX είναι ένα εφεδρικό κιβώτιο αποθήκευσης all-in-one για οποιονδήποτε διακομιστή.

Ο διακομιστής σας μπορεί να μολυνθεί, να καταστραφεί, να σκουπιστεί και όλα τα δεδομένα σας είναι ακόμα ασφαλή στο OrangeBOX και ποιος δεν θα ήθελε μια αποστολή αδύνατη όπως η εφεδρική συσκευή αυτό που μόλις συνδέσετε και δείτε έναν δείκτη προόδου χωρίς να κάνετε τίποτα περισσότερο (απλώς ελπίζουμε τη μαγεία δεν θα βγει καπνός στο τέλος:)).

Το OrangeBOX είναι το πρώτο μου έργο που είναι ως επί το πλείστον λογισμικό και όχι hacking υλικού. Είναι βασικά ένα προσαρμοσμένο NAS με προσαρτημένη LCD οθόνη.

Βήμα 1: Μέρη υλικού

Ανταλλακτικά υλικού
Ανταλλακτικά υλικού
Ανταλλακτικά υλικού
Ανταλλακτικά υλικού
Ανταλλακτικά υλικού
Ανταλλακτικά υλικού

Το Orange PI zero είναι ένας υπολογιστής ανοικτού κώδικα με μια πλακέτα. Μπορεί να τρέξει Android 4.4, Ubuntu, Debian. Χρησιμοποιεί το AllWinner H2 SoC και διαθέτει 256MB/512MB DDR3 SDRAM (η έκδοση 256MB είναι η τυπική έκδοση. Το Orange Pi Zero είναι για όποιον θέλει να ξεκινήσει να δημιουργεί με τεχνολογία - όχι μόνο να την καταναλώνει. Είναι ένα απλό, διασκεδαστικό, χρήσιμο εργαλείο που μπορείτε να χρησιμοποιήσετε για να αρχίσετε να ελέγχετε τον κόσμο γύρω σας (https://www.orangepi.org/orangepizero/). Έτσι, είναι ακριβώς για εμάς, ας το συνεχίσουμε:)

  • Μεταλλικό/πλαστικό/ξύλινο κουτί (έχω χρησιμοποιήσει ένα παλιό εξωτερικό κουτί Yamaha cd-rw)
  • Πορτοκαλί PI Zero ή καλύτερα (το pinout GPIO μπορεί να αλλάξει εάν χρησιμοποιείτε άλλο μοντέλο)
  • Οθόνες LCD 2x20 RGB
  • Οποιαδήποτε μονάδα USB SFF 3.5/ LFF 2.55
  • Sata -> προσαρμογέας usb. Λάβετε υπόψη ότι ενώ το OrangePI δεν επιβάλλει ανώτατο όριο στη μέγιστη χωρητικότητα μονάδας δίσκου, ωστόσο το κάνουν πολλές γέφυρες USB-to-SATA (2TB max). Το πορτοκαλί PI Zero που χρησιμοποιώ έχει μόνο μία θύρα USB 2.0 με πραγματικό ρυθμό μεταφοράς 28 MB/s max. Έχω επιλέξει ένα USB3.0 (προετοιμασμένο για μελλοντικές αναβαθμίσεις) -> γέφυρα SATA (η μάρκα δεν θα αναφέρεται) και ξεπερνά το όριο, οπότε είναι προτιμότερο να επιλέξω μια γέφυρα που αποδεδειγμένα υποστηρίζει μεγαλύτερους δίσκους όπως γέφυρες βασισμένες σε τσιπ JMicron JMS567 Το Κάντε τη δική σας έρευνα πριν αγοράσετε ένα. Μπορώ να ζήσω με το όριο ταχύτητας και σκληρού δίσκου χρησιμοποιώντας μια μονάδα sata 2TB σε αυτό το έργο (αν βάλετε μεγαλύτερους δίσκους, θα αναγνωριστεί, αλλά το λειτουργικό σύστημα θα δει μόνο τα πρώτα 2TB από αυτό, οπότε η υπόλοιπη χωρητικότητα θα είναι χαμένος).
  • Προσαρμογέας ενισχυτή 12V 2,5 A ή υψηλότερος. Υπολογίστε περίπου 500mA κανονική χρήση για το OPI Zero και κορυφή 1,5A για μια τυπική μονάδα δίσκου LFF SATA. Η υπερμεγέθη δεν βλάπτει ποτέ. Στη ρύθμισή μου, το Yamaha psu (τι θα μπορούσε να τροφοδοτήσει περισσότερο από αρκετό ρεύμα και στις δύο ράγες 12+5V) δυστυχώς ανατινάχθηκε: (λόγω της ταξινόμησης του κύριου διακόπτη στο GND για ένα δευτερόλεπτο, έτσι έπρεπε να κολλήσω σε έναν κανονικό προσαρμογέα, στο τουλάχιστον έκανε το κουτί μερικά γραμμάρια ελαφρύτερο.
  • Μετατροπέας Buck DC-DC 12V-> 5V. Χρησιμοποίησα το ίδιο ρυθμιζόμενο mini buck με το IronForge, λειτουργεί τέλεια.

Προαιρετικός

Εάν είστε πρόθυμοι να ξοδέψετε + 10 $, τότε μπορείτε να πάρετε το Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) που είναι παρόμοιος παράγοντας μορφής και σας δίνει Gbe και SATA3. Για αυτό, η βιβλιοθήκη καλωδίωσης Libra PI μπορεί να χρησιμοποιηθεί: https://github.com/OrangePiLibra/WiringPi, αλλά επειδή το pinout GPIO είναι διαφορετικό, είναι εκτός του πεδίου αυτής της γραφής.

Μπορείτε επίσης να το κάνετε αυτό με το νέο Orange PI Plus2 που διαθέτει υποδοχή SATA και μπορείτε να παραλείψετε τη χρήση μετατροπέων sata-> usb όλα μαζί με τους περιορισμούς τους. Εάν σκοπεύετε να χρησιμοποιήσετε το FreeBSD ή άλλα BSD, η σειρά Orange PI μπορεί να μην είναι η καλύτερη επιλογή, επειδή η υποστήριξη υλικού τους είναι περιορισμένη (για παράδειγμα, πρέπει να χρησιμοποιήσετε USB stick για εκκίνηση). Για τα BSD είναι η καλύτερη συμβουλή να χρησιμοποιήσετε Raspberry PI. Τόσο ο κωδικός C για την οθόνη LCD όσο και όλα τα σενάρια κελύφους είναι φορητά σε οποιοδήποτε άλλο σύστημα UNIX.

Βήμα 2: Σχεδιασμός υλικού

Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού

Το κουτί της Yamaha ήταν αρκετό για να τα αποθηκεύσει όλα αυτά, δεν θα είχε αρκετό χώρο για έναν Orange PI PC ή κανονικό πίνακα συντελεστή Raspi.

Το Ethernet κυκλοφόρησε με μια επέκταση στο πίσω μέρος του κουτιού. Θυμηθείτε ότι το Orange PI zero έχει μόνο 100mbit/s διασύνδεση Ethernet, αν θέλετε πιο γρήγορα, θα χρειαστεί να χρησιμοποιήσετε έναν άλλο πίνακα, όπως Asus Tinkerboard/RPI3B+/Άλλα μοντέλα Orange PI.

Το λανθασμένο PIN Out είναι το ένα και μοναδικό λάθος που μπορείτε να κάνετε σε αυτό το έργο, επομένως αξίζει να εφαρμόσετε έναν κανόνα των βασικών αρχών:

1, Προσπαθείτε πάντα να χρησιμοποιείτε το ίδιο χρωματιστό καλώδιο από ΤΕΛΟΣ έως ΤΕΛΟΣ. Εγώ ο ίδιος διαπράττω το ίδιο "λάθος" σε ορισμένα έργα όπου δεν το κάνω, απλά επειδή δεν έχω αρκετά καλώδια αρσενικό-αρσενικό/αρσενικό-θηλυκό-θηλυκό και έχω μπαλώσει 2 μαζί για να συνεχίσω το κύκλωμα. Εάν δεν τεκμηριώσετε σωστά την εργασία σας, αυτό μπορεί να οδηγήσει σε πονοκεφάλους χρόνια αργότερα, όπου πρέπει να κάνετε επισκευή, αναβάθμιση.

2, Εφαρμόστε λίγο hotglue στους συνδέσμους. Σε περίπτωση χρήσης αυτών των καλωδίων arduino-starter style mm/mf/ff που δεν είναι κορυφαίας ποιότητας, είναι πολύ συνηθισμένο (ειδικά αν μετακινείτε/μεταφέρετε τη συσκευή) οι σύνδεσμοι γλιστρούν προς τα έξω. Εάν γνωρίζετε ότι θα είναι μια συσκευή μακροχρόνιας χρήσης (πιθανόν να χρησιμοποιηθεί μέχρι να σπάσει;!), τότε είναι καλύτερο να εφαρμόσετε λίγο hotglue τόσο στην πλευρά OrangePI όσο και στην οθόνη των συνδέσμων για να τα κρατήσετε ενωμένα. Αυτό μπορεί εύκολα να λιώσει/γρατζουνιστεί αργότερα αν χρειαστεί.

3, Η μηδενική καλωδίωση OrangePI Τα άσχημα νέα είναι ότι το pinout του Orange PI ΔΕΝ είναι το ίδιο με το Raspberry PI 0/1/2/3 και υπάρχει ακόμη διαφορά μεταξύ άλλων μοντέλων Orange PI. Ο καλύτερος τρόπος είναι να αποκτήσετε τη βιβλιοθήκη καλωδίωσης (έκδοση Orange PI Zero). Η εικόνα μπορεί να είναι λίγο μπερδεμένη, αλλά αυτές ήταν οι καλύτερες που μπορούσα να βρω. Το ένα είναι καθρέφτης 180 μοιρών του άλλου. Παρόλο που η εικόνα γραφικού CLI μπορεί να είναι πιο δύσκολο να κατανοηθεί, είναι η πιο απλή προς τα εμπρός.

Μπορείτε πάντα να διαφοροποιήσετε το 2 άκρο των πριζών θεωρώντας το ένα άκρο ως ΘΕΤΙΚΟ άκρο με το (+3,3/+5V) και άλλο ως ΑΡΝΗΤΙΚΟ άκρο (ένα GND) -> αυτό είναι το τέλος του συνδέσμου που βλέπει τη θύρα ETHERNET Το

Από τον πίνακα Wiring PI Zero θα χρειαστείτε μόνο μία στήλη που το wPI θα ξεχάσει τις άλλες σαν να μην ήταν εκεί.

Έτσι, για παράδειγμα, για να συνδέσετε τα LCD_E 15 (δηλαδή wPI 15!) Και LCD_RS 16 (δηλαδή wPI 16!) Μετρήστε τις ακίδες από το ΘΕΤΙΚΟ άκρο του συνδετήρα (εύκολο να το κάνετε με στυλό ή μικρό κατσαβίδι). Αυτό θα μειωθεί φυσικά 4 ακίδες και 5 ακίδες.

4, Ομαδοποίηση Εάν υπάρχει η δυνατότητα να τοποθετήσετε μεταχειρισμένες καρφίτσες η μία δίπλα στην άλλη (ομαδοποιώντας τα) επιλέγετε πάντα αυτό, τους κάνει να κρατιούνται ο ένας από τον άλλον ακόμη και χωρίς hotglue και επίσης σε άλλα έργα όταν έχετε συνδετήρες 2x 4x 6x molex μπορείτε απλά εκμεταλλευτείτε τις καρφίτσες που βρίσκονται η μία δίπλα στην άλλη. Εδώ το καλύτερο που μπορείτε να κάνετε είναι η ομάδα των 2-3 (ιδανικό όταν χρησιμοποιείτε καλώδια άλματος από παλιά PC).

Καρφίτσες που χρησιμοποιούνται για σύνδεση οθόνης OrangePI LCD:

// ΧΡΗΣΗ ΑΡΙΘΜΩΝ PIN WIRINGPI

#define LCD_E 15 // Enable Pin #define LCD_RS 16 // Εγγραφή επιλεγμένου pin #define LCD_D4 5 // Data pin 4 #define LCD_D5 6 // Data pin 5 #define LCD_D6 10 // Data pin 6 #define LCD_D7 11 // Καρφίτσα δεδομένων 7

Καρφίτσες που χρησιμοποιούνται για έλεγχο οπίσθιου φωτισμού RGB

$ G γράψτε 1 0

$ G εγγραφή 4 1 $ G εγγραφή 7 1

Πορτοκαλί PI μηδέν wPI καρφίτσες 1, 4, 7. Η μόνη μαγεία που μπορεί να κάνει αυτή η οθόνη LCD σε σύγκριση με την τυπική οθόνη LCD με μπλε ή πράσινο οπίσθιο φωτισμό, όπου έχετε μια μονή κάθοδο η οποία πρέπει να τραβηχτεί στο GND που έχει 3 για τα 3 χρωματιστά. Κόκκινο, πράσινο και μπλε. Αλλάζοντας το συνδυασμό του οποίου το ένα είναι ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ, μπορείτε να αναμίξετε διαφορετικά χρώματα από αυτά τα βασικά χρώματα, αλλά μόνο τα ψηλά άκρα δεν έχουν αποχρώσεις επειδή δεν μπορείτε να ελέγξετε τη φωτεινότητα ενός χρώματος (είναι είτε ενεργοποιημένο είτε απενεργοποιημένο).

Πρόσθετη ανάμειξη χρώματος: η προσθήκη κόκκινου στο πράσινο αποδίδει κίτρινο. Η προσθήκη κόκκινου σε μπλε αποδίδει ματζέντα. προσθήκη πράσινου σε μπλε αποδίδει κυανό. προσθέτοντας και τα τρία βασικά χρώματα μαζί δίνει λευκό.

Βήμα 3: Λειτουργικό σύστημα

Λειτουργικό σύστημα
Λειτουργικό σύστημα

Ο OrangeBOX εκκινεί και το Armbian linux (βασισμένο στο Debian Stretch) 4.14.18-sunxi πυρήνα με ασφαλές περιβάλλον προστασίας από τείχη, συνδέεται σε VPN και περιμένει απομακρυσμένες εντολές δημιουργίας αντιγράφων ασφαλείας από τον διακομιστή.

Αρχές σχεδιασμού:

-Πλήρης κρυπτογράφηση δίσκου (η ίδια η συσκευή δεν περιέχει το κλειδί για το άνοιγμα της εφεδρικής μονάδας δίσκου. Θα αντιγραφεί προσωρινά από τον απομακρυσμένο διακομιστή στο ram /dev /shm, η μονάδα δίσκου θα ανοίξει και το κλειδί θα διαγραφεί. Αφού ολοκληρωθεί η δημιουργία αντιγράφων ασφαλείας η μονάδα έκλεισε και το OrangeBox κλείνει αυτόματα σε 1 λεπτό.)

-Όλες οι εντολές και τα κλειδιά αποστέλλονται από τον απομακρυσμένο διακομιστή (η ίδια η συσκευή περιέχει μόνο ένα πιστοποιητικό vpn) δεν έχει ΚΑΜΙΑ πρόσβαση στον απομακρυσμένο διακομιστή, ακόμη και το ssh από αυτήν τη συσκευή είναι τείχος προστασίας

-Τα τοπικά συστήματα αρχείων είναι μη κρυπτογραφημένα για να μπορούν να ξεκινήσουν αλλά δεν περιέχουν τίποτα χρήσιμο και δεδομένου ότι η σύνδεση VPN είναι πολύ περιορισμένη στο άλλο άκρο, ακόμη και με την πλήρη απώλεια της συσκευής, ένας εισβολέας δεν μπορεί να κάνει τίποτα

Κατεβάστε το Armbian Stretch από τη διεύθυνση

Λειτουργήστε το σύστημα:

apt-get ενημέρωση && apt-get αναβάθμιση

apt-get install sysvinit-core sysvinit-utils

Επεξεργαστείτε το /etc /inittab, όλη η κονσόλα μπορεί να απενεργοποιηθεί καθώς το πλαίσιο θα χρησιμοποιηθεί ως ακέφαλο. Σχολιάστε την ακόλουθη ενότητα:

#1: 2345: respawn:/sbin/getty 38400 tty1

#2: 23: respawn:/sbin/getty 38400 tty2 #3: 23: respawn:/sbin/getty 38400 tty3 #4:23: respawn:/sbin/getty 38400 tty4 #5:23: respawn:/sbin/getty 38400 tty5 #6: 23: respawn:/sbin/getty 38400 tty6

Επανεκκινήστε το κουτί σας και αφαιρέστε το systemd για να έχετε ένα πραγματικό σύστημα ανοιχτού κώδικα χωρίς bloatware.

apt-get remove --purge-auto-remove systemd

Εγκαταστήστε ορισμένα πακέτα

apt-get install cryptsetup vim htop rsync οθόνη gcc make git

Εγκαταστήστε τη βιβλιοθήκη wiringpi

cd /usr /src

git clone https://github.com/xpertsavenue/WiringOP-Zero.git cd Wiring WOP-Zero chmod +x./build./build

Δημιουργήστε πορτοκαλί χρήστη για την οθόνη LCD

groupadd -g 1000 πορτοκαλί

useradd -m -d /home /orange -s /bin /bash -u 1000 -g πορτοκαλί πορτοκαλί

Ο φύλακας που δεν σε προσέχει

apt-get install watchdog

Κοιτάζοντας/etc/default/watchdog # Έναρξη watchdog κατά την εκκίνηση; 0 ή 1 run_watchdog = 1 # Έναρξη wd_keepalive μετά τη διακοπή του φύλακα; 0 ή 1 run_wd_keepalive = 1 # Φόρτωση λειτουργικής μονάδας πριν από την εκκίνηση watchdog watchdog_module = "none" # Καθορίστε πρόσθετες επιλογές φύλακα εδώ (δείτε τη διαχείριση).

Κοιτάζοντας /etc/watchdog.conf

# Τουλάχιστον ενεργοποιήστε αυτά

max-load-1 = 24 max-load-5 = 18 max-load-15 = 12

/etc/init.d/watchdog start

Θα πρέπει να υπάρχει τουλάχιστον 1 νήμα πυρήνα και 1 διαδικασία:

ρίζα 42 0,0 0,0 0 0? I <10:50 0:00 [watchdogd] root 14613 0,0 0,2 1432 1080; SLs 13:31 0:00/usr/sbin/watchdog

Δοκιμή:

Βεβαιωθείτε ότι σταματάτε τα πάντα και κάνετε συγχρονισμό && συγχρονισμό && συγχρονισμού για να γράψετε τα υπόλοιπα δεδομένα στο δίσκο. Στη συνέχεια, ως βασικό ζήτημα:

echo 1> /dev /watchdog

Μετά από μερικά δευτερόλεπτα το μηχάνημα πρέπει να επανεκκινήσει.

Όπως αναφέρει το εγχειρίδιο:

o Ο πίνακας διαδικασίας είναι πλήρης;

o Υπάρχει αρκετή ελεύθερη μνήμη; o Υπάρχει αρκετή διαθέσιμη μνήμη; o Είναι κάποια αρχεία προσβάσιμα; o Έχουν αλλάξει κάποια αρχεία μέσα σε ένα συγκεκριμένο διάστημα; o Είναι το μέσο φορτίο εργασίας πολύ υψηλό; o Έχει συμβεί υπερχείλιση πίνακα αρχείων; o Εξακολουθεί να τρέχει μια διαδικασία; Η διαδικασία καθορίζεται από ένα αρχείο pid. o Μερικές διευθύνσεις IP απαντούν στο ping; o Οι διεπαφές δικτύου λαμβάνουν κίνηση; o Η θερμοκρασία είναι πολύ υψηλή; (Τα δεδομένα θερμοκρασίας δεν είναι πάντα διαθέσιμα.) O Εκτελέστε μια εντολή καθορισμένη από το χρήστη για να κάνετε αυθαίρετες δοκιμές. o Εκτελέστε μία ή περισσότερες εντολές δοκιμής/επισκευής που βρίσκονται στο /etc/watchdog.d. Αυτές οι εντολές καλούνται με τη δοκιμή ορίσματος ή την επιδιόρθωση. Εάν κάποιος από αυτούς τους ελέγχους αποτύχει, το φύλακα θα προκαλέσει τερματισμό λειτουργίας. Εάν κάποια από αυτές τις δοκιμές εκτός από το δυαδικό που ορίζεται από το χρήστη διαρκεί περισσότερο από ένα λεπτό, το μηχάνημα θα επανεκκινηθεί επίσης.

Αυτός ο φύλακας μπορεί να λειτουργούσε εντάξει στις κανονικές αρχιτεκτονικές x86, αλλά σε πίνακες που βασίζονταν σε ARM, όπως τα Raspberry PIs, Orange PIs με απέτυχαν άπειρες φορές. Το σύστημα μπορεί να μεταβεί σε καταστάσεις ανάρτησης όπου κρέμεται ακόμη και ο φύλακας. Ας το διαμορφώσουμε ούτως ή άλλως, ίσως βελτιωθεί με μια αναβάθμιση apt-get με τα χρόνια:(

Βήμα 4: Σχεδιασμός λογισμικού

Σχεδιασμός λογισμικού
Σχεδιασμός λογισμικού

Η ίδια η διαδικασία δημιουργίας αντιγράφων ασφαλείας βασίζεται σε rsync (το καλύτερο εφεδρικό εργαλείο που εφευρέθηκε ποτέ) τα δεδομένα προωθούνται από το SERVER-> OrangeBOX.

Η εξαγωγή δεδομένων από το rsync ήταν το μόνο δύσκολο μέρος του έργου να υπάρχει μια γραμμή προόδου σχετικά με το αντίγραφο ασφαλείας που εκτυπώνεται στην οθόνη LCD.

Υπήρχαν 3 πιθανοί τρόποι υπολογισμού της προόδου δημιουργίας αντιγράφων ασφαλείας:

1, Χρησιμοποιώντας τύπους όπως https://wintelguy.com/transfertimecalc.pl για να προσδιορίσετε τον χρόνο περίπου που μπορεί να διαρκέσει η μεταφορά

Χρόνος μεταφοράς (d: h: m: s): 0: 02: 44: 00

Για σύγκριση: Εκτιμώμενος χρόνος για τη μεταφορά αρχείου 123 GB μέσω διαφορετικών συνδέσμων δικτύου (d: h: m: s): γραμμή T1/DS1 (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Fast Ethernet (100 Mbps) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbps) - 0: 00: 01: 38

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

2, Κάνοντας ελέγχους μεγέθους στον κατάλογο για να καθορίσουμε πόσα δεδομένα έχουμε ήδη συγχρονίσει. Μπορεί να γίνει πολύ αργό με εκατοντάδες GB μικρών αρχείων (αν και το du -s στο Linux κάνει κάποια προσωρινή αποθήκευση εάν το επαναλάβετε)

Κεντρικός υπολογιστής Α -> Δημιουργία αντιγράφων ασφαλείας δεδομένων διακομιστή Διεύθυνση δεδομένων: 235 GB

Κεντρικός υπολογιστής Β -> Δεδομένα πελάτη πορτοκαλί κουτί που έχουμε αυτήν τη στιγμή Διεύθυνση δεδομένων: 112 GB

Το δέλτα είναι 123 GB.

3, Εάν το σύστημα αρχείων είναι αφιερωμένο όπως στην περίπτωσή μας/dev/mapper/backup, μπορούμε να εκμεταλλευτούμε τον συνολικό δείκτη χρήσης του συστήματος αρχείων για να καθορίσουμε πώς προχωρά το αντίγραφο ασφαλείας μας και αυτό είναι πολύ γρήγορο. Σε αυτήν την περίπτωση δεν χρειάζεται καν να τοποθετήσουμε το rsync stdout οπουδήποτε, απλώς εκτελέστε ένα στεγνό rsync, περιμένετε μέχρι να ολοκληρωθεί, υπολογίστε το δέλτα σε byte και διασταυρώστε αυτό με τον ελεύθερο χώρο ό, τι έχουμε στην εφεδρική μονάδα δίσκου και voila που μπορούμε τώρα κάντε ένα ωραίο γράφημα ράβδων. Αυτή ήταν η μέθοδος που επέλεξα και εδώ είναι το σενάριο μου για αυτήν:

#!/bin/bash

# Backup Progress Calculator for OrangeBOX by NLD # Έκδοση: 0.2 (2018/03/05) # # Εκτελέστε το ως μη προνομιούχος χρήστης από το cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Αυτό το σενάριο είναι υπεύθυνο μόνο για την εμφάνιση δεδομένων στην οθόνη LCD, επικοινωνεί # με το κύριο πρόγραμμα έμμεσα μέσω αρχείων θέσης και κλειδώματος. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # χρήση δίσκου στην αρχή του αντιγράφου ασφαλείας TFILE = "$ HOME/trans.size" # συνολικό προκαθορισμένο μέγεθος μεταφοράς BFILE = "$ HOME/ backup.lck " # καθορίζει την αρχική κατάσταση FFILE =" $ HOME/backup.fin " # καθορίζει την τελική κατάσταση LFILE1 =" $ HOME/lcd1.bar " # Δεδομένα δεικτών προόδου LCD LFILE2 =" $ HOME/lcd2.bar " # Πρόοδος LCD data indicators SHUTDOWN = "1" # Εάν 1 θα ξεκινήσει ένα άλλο σενάριο το οποίο κλείνει το πλαίσιο στο τέλος της δημιουργίας αντιγράφων ασφαλείας BACKUP_CURRENT = "0" # Πρέπει να αρχικοποιηθεί αλλά θα υπολογιστεί DRIVE_SIZE = "" # Μέγεθος μονάδας δίσκου σε byte (δευτερεύον έλεγχος) LCD = "sudo /bin /lcd" function is_mount () {grep -q "$ 1" /proc /mounts status = $? } function red () {sudo /bin /lcdcolor red} function green () {sudo /bin /lcdcolor green} function blue () {sudo /bin /lcdcolor blue} # Clear state (set in boot by bootup_display.sh). Κανένα αντίγραφο ασφαλείας δεν βρίσκεται σε εξέλιξη, ΜΗΝ μπερδεύετε την οθόνη # κατάστασης. Εμφάνιση προόδου μόνο σε περίπτωση που υπάρχει τρέχον αντίγραφο ασφαλείας => Δεν υπάρχει αρχείο έναρξης ΚΑΙ Δεν υπάρχει αρχείο fin = κλείστε εάν [! -f $ BFILE] && [! -f $ FFILE]; στη συνέχεια, βγείτε από το 1 fi # Εάν το αντίγραφο ασφαλείας τελειώσει, αυτό το σενάριο θα το εμφανίσει και θα αφαιρέσει τις κλειδαριές # για να μην είναι δυνατή η εκτέλεση ξανά μέχρι την επόμενη εκκίνηση. εάν [-f $ FFILE]; τότε πράσινο $ LCD "Δημιουργία αντιγράφων ασφαλείας" "** Ολοκληρώθηκε **" ηχώ "Δημιουργία αντιγράφων ασφαλείας ολοκληρώθηκε" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Η δημιουργία αντιγράφων ασφαλείας ολοκληρώθηκε αν [$ SHUTDOWN == "1"]; στη συνέχεια ηχεί "Εκτέλεση σεναρίου τερματισμού λειτουργίας …" /home/orange/shutdown.sh & fi έξοδος 0 fi # Από αυτό το σημείο το σενάριο εκτελείται ΜΟΝΟ εάν υπάρχει ΕΝΕΡΓΟΠΟΙΗΤΙΚΟ αντίγραφο ασφαλείας # συνεπώς όλα τα σφάλματα θα εκτυπωθούν στην οθόνη LCD και θα προκαλέσουν το σενάριο # για να ακυρώσετε ωστόσο δεν θα αφαιρέσει το αρχείο backup.lck, οπότε θα μπαίνει εδώ # ξανά και ξανά και θα αναδεικνύει τις συνθήκες. is_mount $ BACKUP_DRIVE εάν [$ status -ne 0]; τότε το κόκκινο $ LCD "ERR: Backup drive" "δεν είναι τοποθετημένο!" ηχώ "Η εφεδρική μονάδα δίσκου δεν είναι τοποθετημένη" έξοδος 1 fi αν [! -s $ TFILE]; τότε το κόκκινο $ LCD "ERR: transfile" "είναι κενό" echo "Το αρχείο υπολογισμού μεγέθους μεταφοράς είναι κενό." έξοδος 1 από BACKUP_OVERALL = $ (κεφαλή -1 $ TFILE | tr -d '\ n') εάν [-z $ BACKUP_OVERALL]; τότε κόκκινο $ LCD "ERR: Μέγεθος ανάγνωσης" "από διακομιστή μη έγκυρο" echo "Δημιουργία αντιγράφων ασφαλείας συνολικού μεγέθους ανάγνωση είναι άκυρη 1" έξοδος 1 fi αν!

Παρόλο που ο κώδικας είναι απλός, εδώ είναι κάποια περιγραφή του τι κάνει:

1, Εάν το BFILE ή το FFILE δεν υπάρχει (που είναι η κατάσταση μετά από μια ξεκάθαρη εκκίνηση) που δείχνει ότι δεν υπάρχει διαδικασία δημιουργίας αντιγράφων ασφαλείας, οπότε ΜΗΝ κάνετε τίποτα απλά κλείστε. Με αυτόν τον τρόπο μπορείτε να γράψετε ό, τι ωραίες πληροφορίες θέλετε σχετικά με την εκκίνηση, όπως το όνομα κεντρικού υπολογιστή, ip, uptime κλπ και δεν θα μπερδευτεί.

2, Ας μεταβούμε στην ενότητα is_mount $ BACKUP_DRIVE. Απλώς υπενθυμίζουμε ότι ο μόνος τρόπος που φτάσαμε εδώ είναι ότι ξεκίνησε ένα αντίγραφο ασφαλείας για να υπάρχει το BFILE. Τώρα ο κώδικας απλώς κάνει διάφορους ελέγχους σφαλμάτων, όπως είναι η εφεδρική μονάδα δίσκου τοποθετημένη;, το συνολικό μέγεθος αυτού που πρόκειται να δημιουργήσουμε αντίγραφα ασφαλείας υπερβαίνει τη μονάδα δίσκου; ή άλλα λάθη. Να θυμάστε ότι αυτό είναι ένα πρόγραμμα μόνο για ΟΘΟΝΗ, ακόμη και αν το μέγεθος υπερβαίνει τα αντίγραφα ασφαλείας, δεν θα ακυρώσει τίποτα.

3, ΟΚ όλοι οι έλεγχοι σφαλμάτων διέγραψαν το χρόνο για τον υπολογισμό του ποσοστού γραφήματος. Πρώτα, το σενάριο λαμβάνει ένα "στιγμιότυπο" του χώρου που χρησιμοποιείται σε byte στο εφεδρικό σύστημα αρχείων αυτήν τη στιγμή και το αποθηκεύει στο VFILE. Ποιος είναι ο σκοπός αυτού: ένα σενάριο bash είναι απάτριδος, χάνει δεδομένα μεταξύ των εκτελέσεων, οπότε αν θέλετε να "θυμηθείτε" κάποια δεδομένα από την προηγούμενη εκτέλεση, πρέπει να τα αποθηκεύσετε κάπου. Στην περίπτωσή μας αυτό είναι ένα απλό αρχείο κειμένου. Για να το κάνουμε απλό, ας πούμε ότι το START_POS είναι 1 GB (δεδομένα που διαθέτουμε), αυτό που θέλουμε να δημιουργήσουμε αντίγραφα ασφαλείας είναι +2 GB και η συνολική χωρητικότητα μονάδας δίσκου είναι 10 GB.

4, Την επόμενη φορά που εκτελείται το σενάριο το VFILE υπάρχει και αυτό θα διαβαστεί ξανά (οπότε γνωρίζουμε ποια ήταν η θέση εκκίνησης σε περίπτωση που ο δίσκος δεν ήταν άδειος) για να υπολογίσετε το BACKUP_CURRENT που είναι ουσιαστικά ένα δέλτα του χώρου που χρησιμοποιείται αυτήν τη στιγμή στον εφεδρικό δίσκο μείον τη θέση εκκίνησης ό, τι έχουμε αποθηκεύσει στο VFILE τον τελευταίο γύρο (πάλι αυτά είναι τα δεδομένα που είχαμε στη μονάδα δίσκου όταν ξεκίνησε η δημιουργία αντιγράφων ασφαλείας). Το σενάριο λειτουργεί εσωτερικά με byte, αλλά για να το κάνουμε απλό μετά από μισή ώρα δημιουργήσαμε αντίγραφα ασφαλείας δεδομένων 500MB, τότε ο τύπος θα είναι BACKUP_CURRENT = 1.5GB - 1GB (αρχική κατάσταση) => που μας επιστρέφει ακριβώς τα πραγματικά δεδομένα 500 MB, δηλαδή αυτό που υποστηρίξαμε μέχρι τώρα. Μπορείτε να δείτε ότι χωρίς να παρακολουθείτε ποια ήταν τα αρχικά δεδομένα στην αρχή του αντιγράφου ασφαλείας, αυτός ο υπολογισμός μεγέθους θα αποτύγχανε επειδή θα έβλεπε ότι ο χώρος που χρησιμοποιείται αυτή τη στιγμή είναι 1,5 GB χωρίς να γνωρίζετε ότι υπήρχαν δεδομένα 1 gig στο δίσκο όλη την ώρα προέρχεται από προηγούμενο αντίγραφο ασφαλείας, οπότε θα υποθέσει ότι ο διακομιστής μας έχει στείλει δεδομένα 1,5 GB αντί 500 MB.

5, BACKUP_OVERALL θα διαβαστεί, αυτά τα δεδομένα υπολογίστηκαν από τον διακομιστή όταν έκανε τον αρχικό ξηρό rsync (άρα πρόκειται για μια εξωτερική πηγή δεδομένων που περιέχει την ποσότητα των byte που θα δημιουργηθούν αντίγραφα ασφαλείας από το διακομιστή-> OrangeBOX). Αυτή η τιμή θα ελέγχεται με το συνολικό ΔΩΡΕΑΝ χώρο στο δίσκο αυτή τη στιγμή και αν το υπερβεί τότε θα εμφανιστεί ένα μήνυμα σφάλματος στο lcd και το σενάριο σταματά την εκτέλεση. Θυμηθείτε ξανά ότι το μόνο που κάνει αυτό το σενάριο είναι να εμφανίζεται ΜΟΝΟ, δεν επηρεάζει τη διαδικασία δημιουργίας αντιγράφων ασφαλείας. Εάν καθαρίσετε αρχεία στο δίσκο ή ο όγκος των αρχείων αλλάξει εξ αποστάσεως και επομένως το BACKUP_OVERALL αλλάξει σε ένα σημείο θα προχωρήσει.

6, Τέλος τελειώσαμε με τους ελέγχους δεύτερου επιπέδου, ήρθε η ώρα να εμφανίσουμε κάτι. Το σενάριο εμφανίζει τόσο τα δεδομένα στην κονσόλα όσο και στο LCD χρησιμοποιώντας μια απλή εφαρμογή C. Το φόντο αλλάζει σε ΜΠΛΕ υποδεικνύοντας ότι η δημιουργία αντιγράφων ασφαλείας ξεκίνησε τελικά και η πρόοδος υπολογίστηκε με τον ακόλουθο τύπο PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Αυτός είναι ένας βασικός υπολογισμός ποσοστού που λαμβάνουμε το τρέχον ποσό, στο παράδειγμα μας 0,5 GB*100/2 GB = 25%.

7, Οι αριθμοί μετατρέπονται επίσης από byte σε Mega/Giga byte και η οθόνη εμφανίζεται αυτόματα σε MB αν είναι μικρότερη από 1 GB.

8, Ένα πράγμα που απομένει για να το χαρτογραφήσουμε στην περίπτωσή μας είναι το 25% σε LCD 20 στηλών. Αυτό θα ήταν 25 * 20 /100 = 5 στο παράδειγμά μας. Προς το παρόν υλοποιείται η ανανέωση με το πρόγραμμα LCD που κάθε φορά που καλείτε το πρόγραμμα θα επανασχεδιάζει ολόκληρη την οθόνη. Σε αυτήν την περίπτωση, θα εκτελούσε έναν βρόχο for 5 φορές για να σχεδιάσει 5 hashmarks # στην οθόνη, αυτό θα εμφανιζόταν ως άσχημο τρεμόπαιγμα σε κάθε γύρο, οπότε θα έγραφα τα υπολογισμένα δεδομένα της γραμμής προόδου στα LFILE1 και 2, τα οποία σε αυτήν την περίπτωση μετά οι 5 γύροι θα περιείχαν ##### και αυτό διαβάζεται και εμφανίζεται στην οθόνη LCD. Μπορείτε επίσης να βάλετε τα LFILE1 και 2 στο ramdisk για να αποθηκεύσετε την κάρτα sdcard από επιπλέον λειτουργίες εγγραφής, δεν μου προκάλεσε κανένα πρόβλημα, το σενάριο εκτελείται κάθε λεπτό από το cron.

9, Όταν τελειώσει το αντίγραφο ασφαλείας, το άλλο σενάριο από το διακομιστή που εκτελεί rsync θα αγγίξει το FFILE (Τέλος αρχείου). Στον επόμενο βρόχο, το backup_progress.sh θα εμφανίσει ότι το αντίγραφο ασφαλείας έχει ολοκληρωθεί και προαιρετικά καλεί ένα άλλο σενάριο για να κλείσει το OrangeBOX. Διαγράφει τα αρχεία κλειδώματος σε αυτό το σημείο καθιστώντας αδύνατες τις περαιτέρω εκτελέσεις, ακόμη και αν δεν ενεργοποιήσετε τον τερματισμό λειτουργίας το επόμενο λεπτό όταν εκτελεστεί αυτό το σενάριο, θα τερματιστεί αμέσως επειδή το BFILE δεν είναι εκεί και το FFILE δεν είναι εκεί. Επομένως, θα εμφανίσει το μήνυμα δημιουργίας αντιγράφων ασφαλείας απεριόριστα, εκτός εάν το αντίγραφο ασφαλείας επανεκκινηθεί ξανά.

Απομακρυσμένο σενάριο δημιουργίας αντιγράφων ασφαλείας (orange-remote.sh):

Θα χρειαστεί να δημιουργήσετε ένα κλειδί ssh για το αντίγραφο ασφαλείας και ένα κλειδί για την κρυπτογράφηση luks για τη μονάδα δίσκου. Όταν εκτελείτε το απομακρυσμένο αντίγραφο ασφαλείας για πρώτη φορά με μη αυτόματο τρόπο, θα αποθηκεύσετε το δακτυλικό αποτύπωμα του πορτοκαλί κουτιού στο αρχείο κεντρικών υπολογιστών (από αυτό το σημείο μπορεί να εκτελεστεί αυτόματα με cron).

DISK = "/dev/disk/by-id/…"

Για να μάθετε το αναγνωριστικό του σκληρού σας δίσκου εκτελέστε uuid, blkid ή απλά αναζητήστε τους αντίστοιχους καταλόγους/dev/disk/.

Ένας κατάλογος που περιλαμβάνει εξαίρεση μπορεί να ρυθμιστεί εάν δεν θέλετε να δημιουργήσετε αντίγραφα ασφαλείας όλων. Αυτή είναι μια αρκετά ενοχλητική διαδικασία γιατί για το rsync αν θέλετε να εξαιρέσετε έναν μόνο υπο-κατάλογο βαθιά στη δομή, πρέπει να κάνετε:

+ /a

+/a/b +/a/b/c +/a/b/c/d -/a/b/c/d/e +/dir2

Δεδομένου ότι αυτό το σενάριο εκτελεί εντολές στο OrangeBOX από απόσταση, δεν έχει επίβλεψη των μεταβλητών επιστροφής από εκείνη την πλευρά, επομένως χρησιμοποιώ μερικά έξυπνα κόλπα, όπως θα βγάλει το μήνυμα ανοίγματος της απομακρυσμένης μονάδας δίσκου στο /tmp/contmsg.txt και, στη συνέχεια, ανάλυση για να δούμε αν ήταν επιτυχής, αν όχι τότε αλλάζει το δυαδικό rsync σε μη εκτελέσιμο, οπότε το rsync δεν θα προσπαθήσει να ανεβάσει δεδομένα στις ρίζες OrangePIs γεμίζοντας την κάρτα SD. Επίσης, μια καλή πρακτική για να ορίσετε το αμετάβλητο bit στο chattr +i /mnt /backup για να το κάνετε αυτό αδύνατο.

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

Το κύριο αντίγραφο ασφαλείας ξεκινά ως βρόχος για ((i = 0; i <100; i ++)); κάνει γιατί σε περίπτωση χαμηλής ποιότητας συνδέσεων Internet DSL/Cable rsync μπορεί συχνά να σπάσει, timeout. Εάν ολοκληρωθεί με επιτυχία, τότε ο βρόχος θα σπάσει χωρίς να δοκιμάσετε περισσότερες επαναλήψεις. Αυτό λειτουργεί άψογα με καλά λειτουργικά συστήματα, ωστόσο αν για κάποιο λόγο το απομακρυσμένο πλαίσιο θα είναι παράθυρα και θα αποκλείεται η πρόσβαση όπως συνήθως στο NTUSER. DAT τότε το rsync θα επιστρέψει έναν κωδικό σφάλματος και αυτός ο βρόχος θα εκτελεστεί 100 φορές και στη συνέχεια θα εξακολουθήσει να αποτυγχάνει.

Βήμα 5: Κλείσιμο & Λίστα εργασιών

Κλείσιμο & Λίστα ToDo
Κλείσιμο & Λίστα ToDo
Κλείσιμο & Λίστα ToDo
Κλείσιμο & Λίστα ToDo

Το εκπαιδευτικό μου καταδεικνύει για άλλη μια φορά πώς μπορείτε να δημιουργήσετε κάτι καλύτερο, πιο προσαρμόσιμη από έναν υπολογιστή 10 $ μόνοι σας, η οποία νικάει το Buffalo με τις ιδιόκτητες κλειδωμένες συσκευές NAS, περίεργη εσωτερική κατάτμηση, απασχολημένο κιβώτιο Linux με segfaulting εργαλεία, διαχειριζόμενα από το λογισμικό των παραθύρων, το κλειστό υλικολογισμικό, την κακή τεκμηρίωση και την υποστήριξη και ανεξάρτητα από το πόσα χρήματα θα ξοδέψετε δεν θα έχετε ποτέ έναν δείκτη προόδου που θα δείχνει το αντίγραφο ασφαλείας σας για να μην αναφέρουμε πόσο ωραίο φαίνεται το OrangeBox (χρησιμοποιώ ακόμη και πορτοκαλί καλώδιο CAT5 μαζί του: D).

Με τους μίνι υπολογιστές να γίνονται όλο και πιο ισχυροί διατηρώντας την ίδια τιμή <100 $, μπορούμε να τους χρησιμοποιήσουμε για όλο και περισσότερες εργασίες. Καθώς οι θύρες Gbe Ethernet είναι αρκετά συνηθισμένες αυτές τις μέρες σε 1-2 χρόνια η μνήμη σε αυτούς τους πίνακες θα αυξηθεί δραματικά και μπορούν να χρησιμοποιηθούν και για εφεδρικά συστήματα που βασίζονται σε ZFS.

-Δείκτης προόδου λεπτού κόκκου από το πρόγραμμα C (δείτε το WasserStation ένα από τα άλλα έργα μου). Αυτή τη στιγμή μόλις # hashmark # χαρακτήρες χρησιμοποιούνται σε λειτουργία χαρακτήρων με lcdPuts (lcd, line1), αυτό θα μπορούσε να βελτιωθεί ακόμα και όταν χρησιμοποιείτε LCD χαρακτήρων για να διαιρέσετε 1 στήλη σε 5 μέρη και το κύριο πρόγραμμα C θα μπορούσε να πάρει έναν ακέραιο αριθμό 25 και να τραβήξει έξω η γραμμή προόδου σωστά ή βελτιώθηκε περαιτέρω χρησιμοποιώντας μια γραφική οθόνη LCD

-Δυνατότητα να έχετε ένα αφαιρούμενο hdd για τη δημιουργία νέων και νέων αντιγράφων ασφαλείας και τη μεταφορά τους σε διαφορετικές τοποθεσίες (εάν το πλαίσιο εντοπίσει μια κενή μονάδα δίσκου, θα πρέπει να το μορφοποιήσει αυτόματα με το κλειδί κρυπτογράφησης μόλις το λάβετε).

-Αν θέλετε να εκτυπώσετε τη δική σας θήκη με το makerbot, το OrangeNAS μπορεί να σας ενδιαφέρει: