Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:laboratoare:laborator-09:storage [2021/01/11 19:12]
sergiu.weisz [Stocare partajată folosind SSHFS]
— (current)
Line 1: Line 1:
-====== Gestionarea spațiului de stocare partajat ====== 
  
-<note warning> 
- 
- 
-Pentru a parcurge această secțiune este recomandat să descărcați ultima versiune a respository-ului laboratorului. Pentru a descărca ultima versiune a repository-ului,​ rulați comanda ''​%%git pull%%''​ în directorul ''​%%~/​uso-lab/​labs/​09-task-admin/​lab-container/​%%''​. 
- 
-Infrastructura laboratorului este bazată pe containere Docker ale căror imagini vor fi generate pe propriul calculator. Dacă nu aveți deja instalat Docker Engine pe sistem, scriptul ''​%%~/​uso-lab/​labs/​09-task-admin/​lab-container/​lab_prepare.sh%%''​ vă va instala aplicația. 
- 
-După ce ați terminat de lucrat, vă recomandăm să opriți containerele rulând comanda ''​%%./​lab_prepare.sh delete%%''​ în directorul ''​%%~/​uso-lab/​labs/​09-task-admin/​lab-container/​%%''​. 
-</​note>​ 
- 
-O componentă importantă a mediului de lucru este spațiul de stocare. Cu toate că vom rula aplicații pe serverul de la distanță, avem nevoie de acces la spațiul de stocare al acestuia, deoarece vrem ca, într-un final, să urmărim rezultatul procesării și, eventual, să îl analizăm folosind utilitare grafice dedicate. O altă nevoie pe care o avem este editarea codului la distanță, deoarece majoritatea programatorilor folosesc IDE-uri în mediu grafic, care nu pot rula mereu eficient de la distanță. Soluția la această nevoie este să partajăm spațiul de stocare între serverul ''​%%remote%%''​ și stația ''​%%local%%''​ de pe care lucrăm. 
- 
-===== Stocare partajată folosind SSHFS ===== 
- 
-<note warning> 
- 
- 
-Pentru rularea acestui demo, rulați în directorul ''​%%~/​uso-lab/​labs/​09-task-admin/​lab-container/​%%''​ comanda ''​%%./​lab_prepare.sh install remote%%''​ și comanda ''​%%./​lab_prepare.sh install ssh-server%%''​. Pentru a ne conecta la infrastructura pentru această secțiune, vom folosi comanda ''​%%./​lab_prepare.sh connect local%%''​. 
-</​note>​ 
- 
-SSHFS este o soluție de stocare partajată care permite montarea unui sistem de fișiere care nu este legat fizic la stația ''​%%local%%'',​ ci se folosește de protocolul SSH pentru a transmite operațiile asupra fișierelor prin rețea către un sistem de fișiere conectat prin rețea. 
- 
-Avantajul folosirii SSHFS este că nu necesită descărcarea sistemului de fișiere de la distanță, deci nu duce la duplicarea fișierelor. Dezavantajul acestei abordări este că dacă pierdem conexiunea la sistemul de fișiere de la distanță, nu mai avem acces la fișiere. 
- 
-==== Montarea temporară a unui sistem de fișiere ==== 
- 
-Pentru a monta sistemul de fișiere de pe un alt sistem, vom folosi comanda ''​%%sshfs%%''​ 
- 
-<code > 
-root@local:​~#​ ls /mnt/ 
- 
-root@local:​~#​ sshfs root@10.11.11.2:/​ /mnt/ 
-The authenticity of host '​10.11.11.2 (10.11.11.2)'​ can't be established. 
-ECDSA key fingerprint is SHA256:​xV1orHYj4fhkc5HE91sfh8QhaVqke/​AEMa8mYI423HY. 
-Are you sure you want to continue connecting (yes/no)? yes 
-root@10.11.11.2'​s password: 
- 
-root@local:​~#​ df -h 
-Filesystem ​        ​Size ​ Used Avail Use% Mounted on 
-overlay ​            ​16G ​  ​14G ​ 539M  97% / 
-tmpfs               ​64M ​    ​0 ​  ​64M ​  0% /dev 
-tmpfs              2.0G     ​0 ​ 2.0G   0% /​sys/​fs/​cgroup 
-/​dev/​sda5 ​          ​16G ​  ​14G ​ 539M  97% /etc/hosts 
-shm                 ​64M ​    ​0 ​  ​64M ​  0% /dev/shm 
-root@10.11.11.2:/ ​  ​16G ​  ​14G ​ 539M  97% /mnt 
- 
-root@local:​~#​ ls /mnt/ 
-bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 
-</​code>​ 
-Comanda de mai sus a montat ierarhia de fișiere cu rădăcina în directorul ''​%%/​%%''​ de pe sistemul de la adresa IP ''​%%10.11.11.2%%''​ în directorul ''​%%/​mnt%%''​ de pe stația locală, cu numele ''​%%local%%'',​ autentificându-se ca utilizatorul ''​%%root%%''​. 
- 
-Am folosit comanda ''​%%df%%''​ pentru a afișa informații despre toate sistemele de fișiere montate pe stația locală. Observăm că pe ultima linie apare conexiunea către stația de la adresa ''​%%10.11.11.2%%''​. 
- 
-<note warning> 
- 
-Sintaxa comenzii ''​%%sshfs%%''​ se aseamănă cu sintaxa comenzii ''​%%scp%%''​. 
-</​note>​ 
- 
-Acest mod de montare a sistemului de fișiere este temporară. Atunci când vom opri stația, sistemul de fișiere va fi demontat. 
- 
-==== Exercițiu: Montarea temporară a unui sistem de fișiere ==== 
- 
-  - Montați temporar sistemul de fișiere cu rădăcina în directorul ''​%%/​%%''​ de pe stația ''​%%10.11.11.2%%''​ în directorul ''​%%/​mnt/​vol1%%''​. 
-  - Montați temporar sistemul de fișiere cu rădăcina în directorul ''​%%/​home/​student%%''​ de pe stația ''​%%10.11.11.2%%''​ în directorul ''​%%/​mnt/​vol2%%''​. 
- 
-==== Montarea persistentă a unui sistem de fișiere ==== 
- 
-Deoarece nu ne dorim să rulăm comanda ''​%%sshfs%%''​ atunci când vrem să folosim un sistem de fișiere la distanță, vrem să montăm persistent sistemul de fișiere de la distanță, astfel încât această montare să persiste după oprirea stației locale. 
- 
-Ca să montăm persistent sistemul de fișiere avem nevoie să copiem cheia SSH pe stația de la distanță, deoarece montarea se va face în mod neinteractiv,​ deci nu vom avea posibilitatea de a introduce parola, așa cum am descoperit în laboratorul Configurarea avansată a sistemului. 
- 
-Pentru a monta persistent sistemul de fișiere, vom scrie o intrare în fișierul ''​%%/​etc/​fstab%%'',​ care va conține detalii despre sistemul de fișiere pe care vrem să îl montăm. Pentru a monta sistemul de fișiere ''​%%/​%%''​ de pe sistemul de la adresa IP 10.11.11.2 în directorul /mnt de pe stația locală, autentificându-ne ca utilizatorul root`, vom folosi următoarele comenzi: 
- 
-<code > 
-root@local:​~#​ ssh-keygen 
-[...] 
-root@local:​~#​ ssh-copy-id root@10.11.11.2 
-[...] 
-root@local:​~#​ echo "​root@10.11.11.2:/ ​ /mnt  fuse.sshfs ​ defaults ​ 0  0" >> /etc/fstab 
- 
-root@local:​~#​ mount -a 
- 
-root@local:​~#​ df -h 
-Filesystem ​        ​Size ​ Used Avail Use% Mounted on 
-overlay ​            ​16G ​  ​14G ​ 539M  97% / 
-tmpfs               ​64M ​    ​0 ​  ​64M ​  0% /dev 
-tmpfs              2.0G     ​0 ​ 2.0G   0% /​sys/​fs/​cgroup 
-/​dev/​sda5 ​          ​16G ​  ​14G ​ 539M  97% /etc/hosts 
-shm                 ​64M ​    ​0 ​  ​64M ​  0% /dev/shm 
-root@10.11.11.2:/ ​  ​16G ​  ​14G ​ 539M  97% /mnt 
-</​code>​ 
-Am scris în fișierul ''​%%/​etc/​fstab%%''​ folosind comanda ''​%%echo%%'',​ iar pentru a monta sistemul de fișiere am folosit comanda ''​%%mount%%''​ cu opțiunea ''​%%-a%%''​ pentru montarea sistemelor de fișiere descrise în fișierul ''​%%/​etc/​fstab%%''​. 
- 
-Atenție!: 
- 
-În mod normal am scrie în fișierul ''​%%/​etc/​fstab%%''​ folosind un editor de text. Vă recomandăm să nu scrieți în fișiere critice sistemului folosind redirectări,​ deoarece orice greșeală poate șterge conținutul fișierului. 
- 
- 
-==== Exercițiu: Montarea persistentă a unui sistem de fișiere ==== 
- 
-  - Montați persistent sistemul de fișiere cu rădăcina în directorul ''​%%/​%%''​ de pe stația ''​%%10.11.11.2%%''​ în directorul ''​%%/​mnt/​vol1%%''​. 
-  - Montați persistent sistemul de fișiere cu rădăcina în directorul ''​%%/​home/​student%%''​ de pe stația ''​%%10.11.11.2%%''​ în directorul ''​%%/​mnt/​vol2%%''​. 
- 
-===== Stocare partajată folosind aplicații online ===== 
- 
-SSHFS nu este o soluție bună pentru a face backup fișierelor deoarece, existând o singură replică, ștergerea locală a unui fișier duce la ștergerea sa și de pe stația remote și, astfel, la pierderea sa. Pe lângă aceasta, dacă stația locală are conexiune slabă la Internet, accesul la fișiere este greoi și neresponsiv. Suplimentar,​ trebuie configurată o conexiune SSH, care poate necesita la rândul ei existența unui tunel etc. 
- 
-O alternativă la folosirea SSHFS sunt soluții cum ar fi GoogleDrive,​ Dropbox, ownCloud sau One Drive. Aceste soluții stochează o replică a fișierului pe toate calculatoarele autentificate de pe un anumit cont. Un alt avantaj al acestora este că oferă suport pentru controlul versiunilor pentru a șterge modificarea anterioară. Cu dezavantajul că trebuie configurate și cu riscul apariției conflictelor la modificări simultane pe noduri diferite. Și cu dezavantajul că acum informația este duplicată: dublu spațiu ocupat și pot apărea conflicte la modificări. 
- 
-==== Stocarea partajată folosind Dropbox ==== 
- 
-<note warning> 
- 
- 
-Pentru rularea acestui demo vom folosi direct mașina virtuală ''​%%uso%%''​. 
-</​note>​ 
- 
-Dropbox este o soluție care se folosește de un server în Internet care stochează fișierele, ca apoi acestea să fie replicate pe fiecare calculator client. 
- 
-Este necesară crearea și activarea un cont pentru a folosi serviciul Dropbox. 
- 
-Dropbox oferă o aplicație care rulează în linie de comandă pe care o vom descărca pentru a sincroniza sistemul de fișiere de pe serverele Dropbox într-un director local. 
- 
-Vom descărca aplicația Dropbox folosind comanda ''​%%wget%%''​ și o vom instala folosind comanda ''​%%dpkg%%''​ împreună cu parametrul ''​%%-i%%''​. 
- 
-<code > 
-student@uso:​~$ wget https://​www.dropbox.com/​download?​dl=packages/​ubuntu/​dropbox_2020.03.04_amd64.deb -O dropbox.deb 
-[...] 
-student@uso:​~$ sudo dpkg -i dropbox.deb ​ 
-Starting Dropbox... 
-Dropbox is the easiest way to share and store your files online. Want to learn more? Head to https://​www.dropbox.com/​ 
- 
-In order to use Dropbox, you must download the proprietary daemon. [y/n] y 
-[...] 
-student@uso:​~$ dropbox start 
-To link this computer to a Dropbox account, visit the following url: 
-https://​www.dropbox.com/​cli_link_nonce?​nonce=ffd7d648a2ca2302d1177c0c389e87bd 
-</​code>​ 
-Observație 
- 
-Am folosit opțiunea ''​%%-O%%''​ a comenzii ''​%%wget%%''​ pentru a salva fișierul descărcat cu numele ''​%%dropbox.deb%%''​. 
- 
- 
-Pentru a instala ultimele componente ale clientului Dropbox este necesar să rulăm comanda ''​%%dropbox start -i%%''​. După ce am ponit aplicația, este necesar să înregistrăm stația online la contul nostru. Vom face acest lucru accesând linkul afișat de aplicație. 
- 
-==== Exercițiu: Stocarea partajată folosind Dropbox ==== 
- 
-<note warning> 
- 
- 
-Pentru rezolvarea acestui exercițiu, rulați în directorul ''​%%~/​uso-lab/​labs/​09-task-admin/​lab-container/​%%''​ comanda ''​%%./​lab_prepare.sh install dropbox%%''​. Pentru a ne conecta la infrastructura pentru această secțiune, vom folosi comanda ''​%%./​lab_prepare.sh connect dropbox%%''​. 
-</​note>​ 
- 
-  - Conectați-vă la stația ''​%%dropbox%%''​ și porniți aplicația Dropbox pe aceasta. 
-  - Creați un fișier numit ''​%%hello.txt%%''​ în directorul ''​%%~/​Dropbox%%'',​ partajat de cele două mașini. Scrieți în fișier mesajul ''​%%Hello from remote%%''​ pe stația ''​%%dropbox%%''​. Verificați că există fișierul ''​%%hello.txt%%''​ în directorul ''​%%~/​Dropbox%%''​ pe stația ''​%%uso%%''​. 
uso/laboratoare/laborator-09/storage.1610385134.txt.gz · Last modified: 2021/01/11 19:12 by sergiu.weisz
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0