Satura rādītājs:

OrangeBOX: uz OrangePI balstīta drošas dublēšanas krātuves ierīce: 5 soļi
OrangeBOX: uz OrangePI balstīta drošas dublēšanas krātuves ierīce: 5 soļi

Video: OrangeBOX: uz OrangePI balstīta drošas dublēšanas krātuves ierīce: 5 soļi

Video: OrangeBOX: uz OrangePI balstīta drošas dublēšanas krātuves ierīce: 5 soļi
Video: Elyor Sodiqov - Aybi yo'q | Элёр Содиков - Айби йук 2024, Novembris
Anonim
OrangeBOX: uz OrangePI balstīta droša dublēšanas krātuves ierīce
OrangeBOX: uz OrangePI balstīta droša dublēšanas krātuves ierīce
OrangeBOX: uz OrangePI balstīta droša dublēšanas krātuves ierīce
OrangeBOX: uz OrangePI balstīta droša dublēšanas krātuves ierīce

OrangeBOX ir all-in-one attālās krātuves rezerves kaste visiem serveriem.

Jūsu serveris var būt inficēts, sabojāts, noslaucīts, un visi jūsu dati joprojām ir droši OrangeBOX, un kam nepatiktu neiespējama misija, piemēram, rezerves ierīce, ko jūs vienkārši pievienojat un redzētu progresa indikatoru, nedarot neko vairāk (tikai ceru, ka burvība dūmi beigās neiznāks:)).

OrangeBOX ir mans pirmais projekts, kas galvenokārt ir programmatūra, nevis aparatūras uzlaušana. Būtībā tas ir pēc pasūtījuma būvēts NAS ar pievienotu LCD.

1. darbība. Aparatūras daļas

Aparatūras daļas
Aparatūras daļas
Aparatūras daļas
Aparatūras daļas
Aparatūras daļas
Aparatūras daļas

Orange PI zero ir atvērtā koda vienas plates dators. Tas var darbināt Android 4.4, Ubuntu, Debian. Tas izmanto AllWinner H2 SoC, un tam ir 256 MB/512 MB DDR3 SDRAM (256 MB versija ir standarta versija. Orange Pi Zero ir paredzēts ikvienam, kurš vēlas sākt radīt ar tehnoloģijām - ne tikai to patērēt. Tas ir vienkāršs, jautrs, noderīgs rīks var izmantot, lai sāktu kontrolēt apkārtējo pasauli (https://www.orangepi.org/orangepizero/). Tātad tas ir tieši mums, ļauj tam tikt galā:)

  • Metāla/plastmasas/koka kaste (esmu izmantojis vecu Yamaha ārējo cd-rw kārbu)
  • Oranžais PI nulle vai labāks (GPIO pinout var mainīties, ja izmantojat citu modeli)
  • 2x20 RGB LCD ekrāni
  • Jebkurš SFF 3.5/ LFF 2.55 USB disks
  • Sata -> usb adapteris. Paturiet prātā, ka, lai gan OrangePI nenosaka augšējo ierobežojumu maksimālajai diskdziņa ietilpībai, tomēr daudzi USB savienojumi ar SATA tiek veikti (maks. 2 TB). Oranžajam lietotājam PI Zero I ir tikai viens USB 2.0 ports ar maksimālo pārsūtīšanas ātrumu 28 MB/s. Esmu izvēlējies USB3.0 (sagatavots turpmākiem jauninājumiem) -> SATA tilts (zīmols netiks minēts), un tas ierobežo ierobežojumu, tāpēc labāk izvēlēties tiltu, kas, kā pierādīts, atbalsta lielākus diskus, piemēram, tiltus uz JMicron JMS567. Pirms pērkat, veiciet savu izpēti. Es varu sadzīvot ar ātruma un cietā diska ierobežojumu, šajā projektā izmantojot 2 TB sata disku (ja ievietojat lielākus diskus, tas tiks atpazīts, bet OS redzēs tikai pirmos 2 TB, tāpēc pārējā ietilpība būs zaudējis).
  • 12V 2,5 A vai lielāks pastiprinātāja adapteris. Aprēķiniet aptuveni 500 mA parasto OPI Zero lietojumu un 1,5 A maksimumu standarta LFF SATA diskdzinim. Pārsniegšana nekad nesāp. Manā iestatījumā Yamaha psu (kas varēja piegādāt vairāk nekā pietiekami daudz strāvas abās 12+5V sliedēs) diemžēl tika uzspridzināts: (sakarā ar to, ka galvenais slēdzis tika sakārtots uz GND uz sekundi, tāpēc man bija jāpielīmē parasts adapteris, plkst. vismaz tas padarīja kasti par pāris gramiem vieglāku.
  • Buck pārveidotājs DC-DC 12V-> 5V. Es izmantoju to pašu regulējamo mini sprādzi kā ar IronForge, darbojas perfekti.

Neobligāti

Ja esat gatavs tērēt + 10 USD, varat iegādāties Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), kas ir līdzīgs formas faktors un nodrošina Gbe un SATA3. Šim nolūkam var izmantot Libra PI elektroinstalācijas bibliotēku: https://github.com/OrangePiLibra/WiringPi, bet, tā kā GPIO pinout ir atšķirīgs, tas neietilpst šī raksta darbības jomā.

To var izdarīt arī ar jauno Orange PI Plus2, kam ir SATA savienotājs, un jūs varat izlaist sata-> usb pārveidotāju izmantošanu kopā ar to ierobežojumiem. Ja plānojat izmantot FreeBSD vai citus BSD, Orange PI sērija var nebūt labākā izvēle, jo to aparatūras atbalsts ir ierobežots (piemēram, lai sāktu, jums jāizmanto USB zibatmiņa). BSD ir labākais padoms izmantot Raspberry PI. Gan LCD kods, gan visi čaulas skripti ir pārnēsājami uz citām UNIX sistēmām.

2. solis: Aparatūras projektēšana

Aparatūras dizains
Aparatūras dizains
Aparatūras dizains
Aparatūras dizains
Aparatūras dizains
Aparatūras dizains

Yamaha kaste bija pietiekama, lai to visu uzglabātu, tai nebūtu pietiekami daudz vietas Orange PI personālajam datoram vai parastajai Raspi formas faktora plāksnei.

Ethernet tika izvests ar paplašinātāju kastes aizmugurē. Atcerieties, ka Orange PI zero ir tikai 100mbit/s Ethernet interfeiss, ja vēlaties ātrāk, jums būs jāizmanto cita tāfele, piemēram, Asus Tinkerboard/RPI3B+/citi Orange PI modeļi.

Nepareizs PIN kods ir vienīgā kļūda, ko varat pieļaut šajā projektā, tāpēc ir vērts piemērot dažus īkšķa principus:

1, Vienmēr mēģiniet izmantot vienas krāsas kabeli no END līdz END. Es pats pieļauju to pašu "kļūdu" dažos projektos, kur to nedaru, vienkārši tāpēc, ka man nav pietiekami ilgi kabeļu vīriešu-vīriešu/vīriešu-sieviešu/sieviešu-sieviešu kabeļu, un es saliku 2 kopā, lai turpinātu ķēde. Ja jūs nepareizi dokumentējat savu darbu, tas var izraisīt galvassāpes gadus vēlāk, kad jums ir jāveic remonts, jaunināšana.

2, uzklājiet savienotājiem dažas karstās līmes. Ja izmantojat šos arduino startera komplekta stila mm/mf/ff kabeļus, kas nav augstākās kvalitātes, ir diezgan bieži (it īpaši, ja pārvietojaties/transportējat ierīci), savienotāji izslīd. Ja jūs zināt, ka tā būs ilgstošas lietošanas ierīce (iespējams, lietojiet, līdz tā salūzīs ?!), tad labāk ir uzklāt nedaudz karstās līmes gan savienotāju OrangePI, gan LCD pusē, lai tie būtu kopā. Ja nepieciešams, to vēlāk var viegli izkausēt/nokasīt.

3, OrangePI nulles elektroinstalācija Sliktā ziņa ir tā, ka Orange PI pinout NAV tas pats, kas Raspberry PI 0/1/2/3, un ir pat atšķirība starp citiem Orange PI modeļiem. Labākais veids, kā iet, ir iegūt elektroinstalācijas bibliotēku (Orange PI Zero versija). Attēls varētu būt nedaudz mulsinošs, bet tie bija labākie, ko varēju atrast. Viens ir 180 grādu spogulis otram. Lai gan CLI ne grafiskais attēls varētu būt grūtāk saprotams, tas ir visvienkāršākais.

Jūs vienmēr varat atšķirt kontaktligzdas divus galus, uzskatot vienu galu par POSITĪVO galu ar (+3.3/+5V) un otru par NEGATĪVO galu (viens GND) -> šis ir savienotāja gals, kas vērsts uz ETHERNET portu.

No Wiring PI Zero tabulas jums būs nepieciešama tikai viena kolonna, un wPI aizmirsīs par pārējiem, piemēram, to nebūtu.

Piemēram, lai savienotu LCD_E 15 (tas ir wPI 15!) Un LCD_RS 16 (tas ir, wPI 16!), Saskaitiet tapas no savienotāja POSITĪVĀ gala (to ir viegli izdarīt ar pildspalvu vai mazu skrūvgriezi). Tas fiziski samazināsies par 4 tapām un 5 tapām.

4, grupēt. Ja pastāv iespēja nolikt lietotās tapas blakus (tās sagrupējot) vienmēr izvēlējāties to, tas ļauj tām turēties viena pie otras pat bez karstās līmes un arī citos projektos, kad jums ir 2x 4x 6x molex savienotāji vienkārši izmantojiet tapas, kas atrodas blakus. Šeit labākais, ko varat darīt, ir 2-3 sekunžu grupa (ideāli, ja tiek izmantoti izglābti pārejas kabeļi no veciem datoriem).

Piespraudes, ko izmanto OrangePI LCD ekrāna savienošanai:

// LIETOT WIRINGPI PIN CIPARUS

#define LCD_E 15 // Enable Pin #define LCD_RS 16 // Register select 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 // Datu tapa 7

Tapas, ko izmanto RGB fona apgaismojuma vadībai

$ G rakstīt 10

$ G rakstīt 4 1 $ G rakstīt 7 1

Oranžā PI nulle wPI tapas 1, 4, 7. Vienīgais burvju veids, ko šis LCD var paveikt, salīdzinot ar standarta fiksēto zilo vai fiksēto zaļo pretgaismas LCD, kur jums ir viens katods, kas jānogriež līdz GND, lai tam būtu 3 krāsas. Sarkana, zaļa un zila. Mainot kombināciju, kuras viena ir ieslēgta, jūs varat sajaukt dažādas krāsas no šīm pamatkrāsām, bet tikai augstākās klases toņus, jo jūs nevarat kontrolēt krāsas spilgtumu (tā ir ieslēgta vai izslēgta).

Piedevu krāsu sajaukšana: pievienojot sarkanu zaļai, iegūst dzeltenu krāsu; sarkana pievienošana zilai dod fuksīna krāsu; zaļās krāsas pievienošana zilai dod ciānu; pievienojot visas trīs pamatkrāsas kopā, iegūst baltu.

3. darbība: operētājsistēma

Operētājsistēma
Operētājsistēma

OrangeBOX sāk darboties un Armbian linux (pamatojoties uz Debian Stretch) 4.14.18-sunxi kodols ar drošu ugunsmūra vidi, izveido savienojumu ar VPN un gaida attālās rezerves komandas no servera.

Dizaina principi:

-Pilnīga luksa diska šifrēšana (pašā ierīcē nav atslēgas rezerves diska atvēršanai. Tā tiks īslaicīgi nokopēta no attālā servera uz ram /dev /shm, disks atvērts un atslēga izdzēsta. Pēc dublēšanas pabeigšanas diskdzinis ir aizvērts un OrangeBox automātiski izslēdzas 1 minūtes laikā.)

-Visas komandas un atslēgas tiek sūtītas no attālā servera (pašā ierīcē ir tikai vpn sertifikāts) tai nav nekādas piekļuves attālajam serverim, pat ssh no šīs ierīces ir ugunsmūrēts

-Vietējās failu sistēmas ir šifrētas, lai tās varētu startēt, bet nesatur neko noderīgu, un, tā kā VPN augšupsaite ir ļoti ierobežota otrā galā, pat ja ierīce ir pilnībā zaudēta, uzbrucējs nevar neko darīt

Lejupielādējiet Armbian Stretch no

Sagatavojiet sistēmu darbībai:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Rediģējiet /etc /inittab, visu konsoli var atspējot, jo lodziņš tiks izmantots kā bezgalvains. Komentējiet šādu sadaļu:

#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

Pārstartējiet lodziņu un noņemiet systemd, lai iegūtu īstu atvērtā pirmkoda bezblotprogrammatūras sistēmu.

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

Instalējiet dažas paketes

apt-get install cryptsetup vim htop rsync ekrāns gcc make git

Instalējiet Wiringpi bibliotēku

cd /usr /src

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

Izveidojiet oranžu lietotāju LCD displejam

groupadd -g 1000 oranža

useradd -m -d /home /orange -s /bin /bash -u 1000 -g oranži oranžs

Sargsuns, kurš tevi nesargā

apt-get install watchdog

Skatot/etc/default/watchdog # Vai sākt sargsuņa sāknēšanu? 0 vai 1 run_watchdog = 1 # Sākt wd_keepalive pēc sargsuņa apturēšanas? 0 vai 1 run_wd_keepalive = 1 # Ielādēt moduli pirms sargsuņa uzsākšanas watchdog_module = "none" # Šeit norādiet papildu sargsuņa opcijas (sk. Darba lapu).

Aplūkojot /etc/watchdog.conf

# Vismaz iespējojiet šos

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

/etc/init.d/watchdog start

Jābūt vismaz 1 kodola pavedienam un 1 procesam:

sakne 42 0,0 0,0 0 0? Es <10:50 0:00 [sargsuns] sakne 14613 0,0 0,2 1432 1080? SL 13:31 0:00/usr/sbin/watchdog

Pārbaude:

Pārtrauciet visu un veiciet sinhronizāciju, sinhronizāciju un sinhronizāciju, lai pārējos datus ierakstītu diskā. Tad kā saknes problēma:

atbalss 1> /dev /sargsuns

Pēc dažām sekundēm mašīnai vajadzētu atsāknēt.

Kā norādīts rokasgrāmatā:

o Vai procesa tabula ir pilna?

o Vai ir pietiekami daudz brīvas atmiņas? o Vai ir pietiekami daudz atvēlētās atmiņas? o Vai daži faili ir pieejami? o Vai daži faili ir mainīti noteiktā intervālā? o Vai vidējā darba slodze ir pārāk liela? o Vai ir notikusi failu tabulas pārpilde? o Vai process joprojām notiek? Procesu nosaka pid fails. o Vai dažas IP adreses atbild uz ping? o Vai tīkla saskarnes saņem trafiku? o Vai temperatūra ir pārāk augsta? (Temperatūras dati ne vienmēr ir pieejami.) O Izpildiet lietotāja definētu komandu, lai veiktu patvaļīgus testus. o Izpildiet vienu vai vairākas pārbaudes/labošanas komandas, kas atrodamas mapē /etc/watchdog.d. Šīs komandas tiek izsauktas ar argumentu pārbaudi vai labošanu. Ja kāda no šīm pārbaudēm neizdodas, sargsuns izraisīs izslēgšanu. Ja kāds no šiem testiem, izņemot lietotāja definēto bināro, ilgst vairāk nekā vienu minūti, arī mašīna tiks restartēta.

Šis sargsuns, iespējams, strādāja ar parasto x86 arhitektūru, bet uz ARM balstītām plāksnēm, piemēram, Raspberry PI, Orange PI, tas neskaitāmas reizes man neizdevās. Sistēma var nonākt karājas stāvokļos, kur karājas pat sargsuns. Jebkurā gadījumā vienkārši konfigurēsim to, iespējams, tas tiks uzlabots ar apt-get jaunināšanu gadu gaitā:(

4. solis: programmatūras projektēšana

Programmatūras dizains
Programmatūras dizains

Dublēšanas process pats par sevi ir balstīts uz rsync (labākais dublēšanas rīks, kāds jebkad ir izgudrots) no SERVER-> OrangeBOX.

Datu ieguve no rsync bija vienīgā izaicinošā projekta daļa, kuras LCD ekrānā tika izdrukāta progresa josla par dublējumu.

Ir trīs iespējamie veidi, kā aprēķināt dublēšanas progresu:

1, izmantojot formulas, piemēram, https://wintelguy.com/transfertimecalc.pl, lai noteiktu aptuveno pārsūtīšanas laiku

Pārsūtīšanas laiks (d: h: m: s): 0: 02: 44: 00

Salīdzinājumam: paredzamais laiks, lai pārsūtītu 123 GB failu, izmantojot dažādas tīkla saites (d: h: m: s): T1/DS1 līnija (1,544 Mb/s) - 7: 09: 01: 46 Ethernet (10 Mb/s) - 1:03: 20:00 Ātrs Ethernet (100 Mb / s) - 0: 02: 44: 00 Gigabitu Ethernet (1000 Mb / s) - 0: 00: 16: 24 10 Gigabitu Ethernet (10 Gb / s) - 0: 00: 01: 38

Ja rsync ir pabeigts, tas norāda, ka skripts pārtrauc aprēķinu. Šī metode ir tikai aptuvena un nav uzticama, arī saites ātrums nav fiksēts, tas var palēnināties, atkal paātrināties. Tas ir tikai teorētisks aprēķins.

2, veicot direktorija izmēru pārbaudes, lai noteiktu, cik daudz datu jau esam sinhronizējuši. Var kļūt ļoti lēns, izmantojot simtiem GB mazus failus (lai gan du -s operētājsistēmā Linux veic kešatmiņu, ja to atkārtoti palaižat)

Saimnieks A -> Dublējami servera dati Datu direktorijs: 235 GB

Saimnieks B -> Oranžās kastes klienta dati, kas mums šobrīd ir pieejami. Datu vadība: 112 GB

Delta apjoms ir 123 GB.

3, Ja failu sistēma ir paredzēta, piemēram, mūsu gadījumā/dev/mapper/backup, mēs varam izmantot vispārējo failu sistēmas lietojuma indikatoru, lai noteiktu, kā notiek mūsu dublēšana, un tas ir patiešām sasodīti ātri. Šādā gadījumā mums pat nav nepieciešams rsync stdout cauruli ievadīt nekur, vienkārši palaidiet sausu rsync, pagaidiet, līdz tas tiks pabeigts, aprēķiniet deltu baitos un pārbaudiet to ar brīvo vietu, kas mums ir rezerves diskā, un, voila, mēs varam tagad izveidojiet jauku joslu diagrammu. Šo metodi es izvēlējos, un šeit ir mans skripts:

#!/bin/bash

# Dublēšanas progresa kalkulators OrangeBOX, izmantojot NLD # Versija: 0.2 (2018/03/05) # # Palaidiet to kā priviliģēts lietotājs no cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Šis skripts ir atbildīgs tikai par datu parādīšanu LCD ekrānā, tas netieši sazinās ar galveno programmu, izmantojot atrašanās vietas un bloķēšanas failus. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # diska lietojums dublējuma sākumā TFILE = "$ HOME/trans.size" # kopējais iepriekš aprēķinātais pārsūtīšanas lielums BFILE = "$ HOME/ backup.lck " # nosaka sākto stāvokli FFILE =" $ HOME/backup.fin " # nosaka pabeigto stāvokli LFILE1 =" $ HOME/lcd1.bar " # LCD progresa indikatora dati LFILE2 =" $ HOME/lcd2.bar " # LCD progress indikatora dati SHUTDOWN = "1" # Ja 1, tas sāks citu skriptu, kas dublēšanas beigās izslēdz lodziņu BACKUP_CURRENT = "0" # Jāinicializē, bet tiks aprēķināts DRIVE_SIZE = "" # Diska izmērs baitos (sekundārais pārbaudīt) LCD = "sudo /bin /lcd" funkcija is_mount () {grep -q "$ 1" /proc /mounts status = $? } funkcija sarkana () {sudo /bin /lcdcolor red} funkcija zaļa () {sudo /bin /lcdcolor green} funkcija zila () {sudo /bin /lcdcolor blue} # Skaidrs stāvoklis (iestatīts sāknēšanas laikā, izmantojot bootup_display.sh). Dublēšana netiek veikta, NEDRĪKST # statusa LCD. Parādiet progresu tikai tad, ja notiek dublēšana => Nav sākuma faila UN nav fin faila = iziet, ja [! -f $ BFILE] && [! -f $ FFILE]; tad izejiet no 1 fi # Ja dublēšana ir pabeigta, šis skripts to parādīs un noņems slēdzenes #, lai tās nevarētu palaist vēlreiz līdz nākamajai uzsākšanai. ja [-f $ FFILE]; pēc tam zaļā krāsā $ LCD "Dublēšana" "** Pabeigta **" echo "Dublēšana pabeigta" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Dublēšana pabeigta, sakopšana, ja [$ SHUTDOWN == "1"]; tad atbalso "Izslēgšanas skripta izpilde …" /home/orange/shutdown.sh & fi exit 0 fi # No šī brīža skripts TIKAI tiek izpildīts, ja ir TURPINĀMA dublējumkopija # tāpēc visas kļūdas tiks izdrukātas LCD un izraisīs skriptu # lai pārtrauktu, tomēr tas neizdzēsīs failu backup.lck, tāpēc tas šeit tiks ievadīts # atkal un atkal un iztvaicēs apstākļus. is_mount $ BACKUP_DRIVE, ja [$ status -ne 0]; tad sarkans $ LCD "ERR: Backup drive" "nav uzstādīts!" echo "Dublējuma piedziņa nav uzstādīta" izeja 1 fi, ja [! -s $ TFILE]; tad sarkans $ LCD "ERR: transfile" "ir tukšs" echo "Transporta lieluma aprēķina fails ir tukšs." izeja 1 fi BACKUP_OVERALL = $ (galva -1 $ TFILE | tr -d '\ n'), ja [-z $ BACKUP_OVERALL]; tad sarkans $ LCD "ERR: Size readback" "from server invalid" echo "Dublējuma kopējā izmēra nolasīšana nav derīga 1" izeja 1 fi, ja!

Lai gan kods ir vienkāršs, šeit ir aprakstīts, ko tas dara:

1, ja BFILE vai FFILE nepastāv (tas ir stāvoklis pēc skaidras palaišanas), kas norāda, ka nav rezerves procesa, tāpēc NEDRĪKST neko darīt, vienkārši aizveriet. Tādā veidā jūs varat grafiski attēlot jebkuru jauku informāciju, kuru vēlaties par sāknēšanu, piemēram, resursdatora nosaukumu, ip, darbības laiku utt., Un tā netiks sajaukta.

2, Pāriesim uz sadaļu is_mount $ BACKUP_DRIVE. Tikai atgādinājums, ka vienīgais veids, kā mēs šeit nokļuvām, ir tas, ka tika sākta dublēšana, lai BFILE pastāv. Tagad kods vienkārši pārbauda dažādas kļūdas, piemēram, vai ir uzstādīts rezerves disks ?, vai kopējais dublējuma lielums pārsniedz disku? vai citas kļūdas. Atcerieties, ka šī ir tikai DISPLAY programma, pat ja tās lielums pārsniegs dublējumkopijas, tā neko neizbeigs.

3, Labi, visas kļūdu pārbaudes ir notīrītas, lai aprēķinātu procentuālo grafiku. Vispirms skripts uzņem "momentuzņēmumu" no vietas, kas pašlaik tiek izmantota baitos rezerves failu sistēmā, un saglabā to VFILE. Kāds ir šī mērķa mērķis: bash skripts ir bezvalstnieks, tas zaudē datus starp izpildēm, tādēļ, ja vēlaties "atcerēties" dažus datus no iepriekšējās izpildes, tie ir jāglabā kaut kur. Mūsu gadījumā tas ir tikai vienkāršs teksta fails. Vienkāršojot, pieņemsim, ka mūsu START_POS ir 1 GB (mūsu rīcībā esošie dati), mēs vēlamies dublēt +2 GB un kopējā diska ietilpība ir 10 GB.

4, nākamreiz, kad skripts darbojas, VFILE pastāv, un tas tiks nolasīts atpakaļ (lai mēs zinātu, kāda bija sākuma pozīcija, ja disks nebija tukšs), lai aprēķinātu BACKUP_CURRENT, kas būtībā ir delta no pašlaik izmantotās vietas uz rezerves diska mīnus sākuma pozīcija, ko esam saglabājuši VFILE pēdējā kārtā (atkal šie dati mums bija diskā, kad sākās dublēšana). Skripts iekšēji darbojas ar baitiem, bet, lai pēc pusstundas tas būtu vienkārši, mēs dublējām 500 MB datus, tad formula būtu BACKUP_CURRENT = 1,5 GB - 1 GB (sākotnējais stāvoklis) =>, kas mums atgriež tieši 500 MB, tas ir, ko mēs līdz šim esam dublējuši. Jūs varat redzēt, ka, nesekojot līdzi sākotnējiem datiem dublējuma sākumā, šis lieluma aprēķins neizdosies, jo redzētu, ka šobrīd izmantotā vieta ir 1,5 GB, nezinot, ka diskā visu laiku atradās 1 giga dati nāk no iepriekšējās dublējumkopijas, tāpēc tiek pieņemts, ka serveris ir nosūtījis mums 1,5 GB datus 500 MB vietā.

5, BACKUP_OVERALL tiks nolasīts, šos datus serveris aprēķināja, veicot sākotnējo sauso rsync (tātad šis ir ārējs datu avots, kas satur baitu daudzumu, kas tiks dublēts no servera-> OrangeBOX). Šī vērtība tiks pārbaudīta, salīdzinot ar kopējo brīvo vietu diskā, un, ja tā pārsniedz to, LCD ekrānā tiks parādīts kļūdas ziņojums, un skripts pārtrauks izpildi. Atcerieties vēlreiz, ka viss šis skripts tiek parādīts TIKAI, tas netraucē dublēšanas procesam. Ja iztīrāt failus diskā vai failu skaits mainās attālināti, un tāpēc BACKUP_OVERALL vienā brīdī mainās, tas turpinās.

6, Visbeidzot, mēs esam pabeiguši otrā līmeņa pārbaudes, ir pienācis laiks kaut ko parādīt. Skripts gan parāda datus konsolē, gan LCD, izmantojot vienkāršu C lietotni. Fons tiek pārslēgts uz ZILU, norādot, ka beidzot ir sākta dublēšana un progress tiek aprēķināts pēc šādas formulas PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Šis ir pamata procentu aprēķins, mēs ņemam pašreizējo summu, mūsu piemērā 0,5 GB*100/2 GB = 25%.

7, skaitļi tiek pārvērsti arī no baitiem uz mega/giga baitiem, un ekrāns tiek automātiski parādīts MB, ja tas ir mazāks par 1 GB.

8, Viena lieta, kas mūsu kartē ir kartēta, ir 25% 20 kolonnu LCD. Mūsu piemērā tas būtu 25 * 20/100 = 5. Pašlaik atsvaidzināšana ar LCD programmu ir ieviesta, un katru reizi, kad izsaucat programmu, tā pārzīmēs visu ekrānu. Tātad šajā gadījumā 5 reizes tiktu palaista cilpa, lai uz ekrāna uzzīmētu 5 hashmarks #, tas katrā kārtā parādītos kā neglīts mirgošana, tāpēc tā vietā es uzrakstīšu aprēķinātos progresa joslas datus uz LFILE1 un 2, kas šajā gadījumā pēc 5 kārtās būtu #####, un tas tiek nolasīts un parādīts LCD. Jūs varat arī ievietot LFILE1 un 2 ramdisk, lai saglabātu sdcard no papildu rakstīšanas operācijām, tas man neradīja nekādas problēmas, skripts tiek palaists reizi minūtē no cron.

9, Kad dublēšana ir pabeigta, otrs skripts no servera, kurā darbojas rsync, pieskarsies FFILE (Finish File). Nākamajā ciklā backup_progress.sh parādīs, ka dublēšana ir pabeigta, un pēc izvēles izsauc citu skriptu, lai izslēgtu OrangeBOX. Šajā brīdī tas izdzēš savus bloķēšanas failus, padarot turpmāku izpildi neiespējamu, tāpēc pat tad, ja neieslēgsit izslēgšanu nākamajā minūtē, kad šis skripts tiks palaists, tas nekavējoties tiks aizvērts, jo BFILE nav un FFILE nav. Tāpēc ziņojums par dublēšanu tiks parādīts bezgalīgi, ja vien dublēšana netiks restartēta vēlreiz.

Attālais rezerves skripts (orange-remote.sh):

Jums būs jāģenerē ssh atslēga rezerves kopijai un atslēga luksa šifrēšanai diskam. Pirmo reizi palaižot attālo dublējumu manuāli, oranžās kastes saimniekdatora pirkstu nospiedumi tiks saglabāti saimniekdatora failā (no šī brīža cron to var palaist automātiski).

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

Lai uzzinātu cietā diska identifikatoru, palaidiet uuid, blkid vai vienkārši meklējiet atbilstošos/dev/disk/direktorijus.

Katalogā iekļaut izslēgšanu var iestatīt, ja nevēlaties visu dublēt. Tas ir diezgan kaitinošs process, jo rsync gadījumā, ja vēlaties izslēgt vienu apakšdirektoriju dziļi struktūrā, jums jāveic šādas darbības:

+ /a

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

Tā kā šis skripts attāli izpilda komandas OrangeBOX, tas no šīs puses nepārrauga atgriešanās mainīgos, tāpēc es izmantoju dažus gudrus trikus, piemēram, tas izvadīs ziņojumu par attālā diska atvēršanu uz /tmp/contmsg.txt, pēc tam parsēt to, lai redzētu, vai tas bija veiksmīgs, ja nē, tad tas maina binārā rsync uz neizpildāmu, tāpēc rsync nemēģinās augšupielādēt datus OrangePI rootfs, aizpildot SD karti. Arī laba prakse iestatīt nemainīgo bitu uz chattr +i /mnt /backup, lai tas būtu neiespējami.

Izmēru priekšaprēķins notiek lokāli serverī, tāpēc nākamajā failā šis fails ir jānosūta uz OrangeBOX.

Galvenā dublēšana tiek uzsākta kā cilpa ((i = 0; i <100; i ++)); dariet to tāpēc, ka zemas kvalitātes DSL/kabeļa interneta savienojuma gadījumā rsync bieži var pārtraukt, taimauts. Ja tas tiek veiksmīgi pabeigts, cilpa pārtrauksies, nemēģinot vairāk atkārtojumu. Tas darbojas nevainojami ar labām operētājsistēmām, tomēr, ja kāda iemesla dēļ attālā kaste būtu logi un piekļuve tiktu liegta kā regulāri NTUSER. DAT, tad rsync atgriezīs kļūdas kodu, un šī cilpa tiks izpildīta 100 reizes un pēc tam joprojām neizdosies.

5. darbība: slēgšanas un uzdevumu saraksts

Slēgšanas un uzdevumu saraksts
Slēgšanas un uzdevumu saraksts
Slēgšanas un uzdevumu saraksts
Slēgšanas un uzdevumu saraksts

Mana pamācība vēlreiz parāda, kā jūs varat patstāvīgi izveidot kaut ko labāku, pielāgojamāku ierīci no 10 ASV dolāru datora, kas pārspēj elpu no Bufalo ar savām patentētajām bloķētajām NAS ierīcēm, dīvaino iekšējo nodalīšanu, autobusa sabojāto Linux ar segmenta iestatīšanas rīkiem, pārvaldītu pēc viņu Windows programmatūras, slēgtās programmaparatūras, sliktas dokumentācijas un atbalsta, un neatkarīgi no tā, cik daudz naudas jūs tērēsit, jūs nekad nesaņemsiet progresa indikatoru, kas parādīs jūsu dublējumu, nemaz nerunājot par to, cik foršs izskatās OrangeBox (es pat izmantoju oranžu CAT5 kabeli ar to: D).

Tā kā mini datori kļūst arvien jaudīgāki, saglabājot to pašu cenu <100 $, mēs varam tos izmantot arvien vairāk uzdevumu veikšanai. Tā kā mūsdienās 1-2 gadu laikā Gbe Ethernet porti ir diezgan izplatīti, atmiņa šajās platēs ievērojami palielināsies, un tos var izmantot arī rezerves sistēmām, kuru pamatā ir ZFS.

-Smalko graudu progresa indikators pēc C programmas (skat. WasserStation vienu no maniem citiem projektiem). Šobrīd tikai # hashmark # rakstzīmes tiek izmantotas rakstzīmju režīmā ar lcdPuts (lcd, 1. rindiņa), to varētu uzlabot pat tad, ja rakstzīmju LCD izmanto, lai sadalītu 1 kolonnu uz 5 daļām, un galvenā C programma varētu vienkārši uzņemt veselu skaitli, piemēram, 25 un izvilkt progresa joslu pareizi vai vēl vairāk uzlabot, izmantojot grafisko LCD

-Iespēja izveidot noņemamu HDD, lai izveidotu jaunas un jaunas dublējumkopijas un pārvietotu tās uz dažādām vietām (ja kaste konstatē tukšu disku, tai vajadzētu automātiski formatēt to ar šifrēšanas atslēgu, tiklīdz tā ir saņemta).

-Ja vēlaties izdrukāt savu korpusu ar makerbot, OrangeNAS jums varētu būt interesants:

Ieteicams: