duminică, 1 aprilie 2012
sâmbătă, 31 martie 2012
Nivelele de RAID 0, 1, 5 şi 10 (Explicate cu diagrame)
Traducerea articolului:
RAID 0, RAID 1, RAID 5, RAID 10 Explained with Diagrams by Ramesh Natarajan
RAID este acronimul pentru Redundant Array of Inexpensive (Independent) Disks.
Cele mai utilizate tipuri de RAID sunt următoarele:
- RAID 0
- RAID 1
- RAID 5
- RAID 10 (cunoscut şi sub numele de RAID 1+0)
În toate diagramele de mai jos:
- A, B, C, D, E şi F – reprezintă blocurile de date
- p1, p2 şi p3 – reprezintă informaţiile de paritate
RAID NIVEL 0
Principalele caracteristici ale RAID-ului de nivel 0:
- Minimum 2 discuri.
- Performanţă excelentă (deoarece blocurile de date sunt distribuite pe discuri diferite).
- Fără redundanţă ( fără replicare, fără informaţii de paritate ).
- Recomandare: A nu se folosi pentru sisteme critice.
RAID NIVEL 1
Principalele caracteristici ale RAID-ului de nivel 1:
- Minimum 2 discuri.
- Performanţă bună ( informaţiile nu sunt distribuite; nu există informaţii de paritate).
- Redundanţă excelentă ( blocurile de date sunt replicate ).
RAID NIVEL 5
Principalele caracteristici ale RAID-ului de nivel 5:
- Minimum 3 discuri.
- Performanţă bună (blocurile de date sunt distribuite).
- Redundanţă bună ( informaţii de paritate distribuite ).
- Eficienţă maximă din punct de vedere al costului deoarece asigură o bună performanţă şi o bună redundanţă. De utilizat în cazul bazelor de date pe care se execută intensiv operaţiuni de citire. În cazul nivelului de RAID 5, operaţiile de scris vor fi încete.
RAID NIVEL 10
Principalele caracteristici ale RAID-ului de nivel 10:
- Minimum 4 discuri.
- Redundanţă excelentă (blocurile de date sunt replicate)
- Performanţă excelentă (blocurile de date sunt distribuite)
- Este cea mai bună opţiune pentru orice aplicaţie de tip “mission critical“ (în special pentru baze de date).
Problemă de geometrie plană
Date iniţiale:
1. ABCD – pătrat cu latura de lungime L
2. Se
construieşte segmentul (DE) astfel încât unghiul EDC=15o
3. Se
construieşte segmental (DF) astfel încât unghiul ADF=30o
De aflat:
măsura unghiului FED.
Rezolvare:
- Construcţia ajutătoare : triunghiul DCH astfel încât unghiul CDH=15o =>
=> unghiul EDC ≡ unghiul CDH => [EC] = [CH]
- unghiul GDH = unghiul GHD = 75o => triunghiul GDH – isoscel =>[GD] = [GH]
- în triunghiul GDC :
Dacă construim segmentul de dreaptă (JC) a.î. unghiul JCD = 60o =>
triunghiul DJC – echilateral
triunghiul JCG – isoscel =>
=> 2*[DC] = [GD] = 2*L
2. + 3. => [GB] + [BE] + [EC] + [CH] = 2*L
[BE] + [EC] = L =>
[EC]
= [CH] (1.)
=>
[GB] + [EC] = L
[BE]
+ [EC] = L =>
=> [GB] = [BE] => triunghiul GFE – isoscel =>
=> unghiul FGE = unghiul GEF = 30o =>
=> măsura unghiului FED este 75o
vineri, 30 martie 2012
Cele 6 etape ale procesului de boot-are Linux (Secvenţa de start)
Traducerea articolului:
6 Stages of Linux Boot Process (Startup Sequence)
Din momentul în care apeşi butonul de pornire al calculatorului vor trece câteva secunde sau minute până când vei vedea pe ecran promptul de login în Linux.
Te-ai întrebat vreodată ce se întâmplă în spatele scenei din momentul în care apeşi butonul de pornire al sistemului până în momentul în care apare promptul de logare?
Iată cei sase (6) paşi importanţi al unui proces tipic de butare (boot-are) Linux.
1. BIOS
- BIOS este acronimul pentru Basic Input/Output System.
- Efectuează unele verificări de integritate a sistemului.
- Caută, încarcă şi execută programul boot loader
- Caută boot loader-ul pe floppy, cd-rom sau pe hard. Se poate apăsa o tastă în timpul procesului de pornire BIOS (de obicei F12 of F2) pentru a schimba ordinea de butare.
- După ce programul boot loader este detectat şi încărcat în memorie, BIOS-ul predă controlul către boot loader.
- Simplificând, putem spune că BIOS-ul încarcă şi execută boot loader-ul din MBR.
2. MBR
- MBR este acronimul pentru Master Boot Record.
- Este localizat în primul sector al discului butabil (boot-abil). De obicei: /dev/hda sau /dev/sda
- MBR-ul are o dimensiune mai mică de 512 bytes şi este compus din trei secţiuni: 1) primary boot loader info - 1st 446 bytes 2) partition table info - următorii 64 bytes 3) mbr validation check – ultimii 2 bytes.
- Conţine informaţii despre GRUB (sau LILO pe sistemele vechi).
- Simplificând, putem spune că MBR ul încarcă şi execută boot loader-ul GRUB.
3. GRUB
- GRUB este acronimul pentru Grand Unified Bootloader.
- Dacă pe sistem sunt instalate mai multe imagini de kernel, din GRUB se poate selecta care dintre acestea va fi executată.
- GRUB afişează un meniu şi aşteaptă pentru câteva secunde. Daca nu este selectat nicio imagine de kernel, va încarcă imaginea kernelului implicit după cum este ea specificata în fişierul de configurare GRUB.
- GRUB poate adresa sistemul de fişiere.
- Fişierul de configurare GRUB este /boot/grub/grub.conf (/etc/grub.conf este o trimitere (link) către acest fişier). Exemplu de fişier de configurare GRUB (grub.conf pentru distribuţia CentOS):
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.el5PAE.img
- După cum se poate observa, în fişierul de configurare se specifica locul în care se găsesc imaginile kernelului şi ale initrd.
- Simplificând, putem spune că GRUB-ul încarcă şi execută imaginile kernelului şi initrd.
4. Kernel
- Montează sistemul de fişiere root după cum este el specificat în fişierul de configuraţie: “root=”.
- Kernelul execută programul /sbin/init.
- Deoarece init este primul program executat de kernelul de Linux are identificatorul de proces (process id) (PID) 1. Se poate observa acest lucru executând comanda: ‘ps -ef | grep init’.
- Initrd este acronimul pentru Initial RAM Disk.
- Initrd este folosit de către kernel ca sistem temporar de fişiere până în momentul în care kernelul a butat (boot-at) şi sistemul de fişiere root real este montat. El conţine de asemenea driverele necesare compilate înăuntru, ceea ce ajuta la accesarea partiţiilor şi a altor dispozitive hardware.
5. Init
- Procesul init decide nivelul de rulare (run level) după ce citeşte fişierul /etc/inittab.
- Nivelele de rulare disponibile sunt:
- 0 – halt
- 1 – Single user mode
- 2 – Multiuser, without NFS
- 3 – Full multiuser mode
- 4 – unused
- 5 – X11
- 6 – reboot
- Procesul init identifica initlevel-ul implicit (/etc/inittab) şi porneşte toate programele asociate.
- Pentru a identifica nivelul de rulare implicit se poate folosi următoarea comandă: ‘grep initdefault /etc/inittab’.
- De obicei nivelul de rulare implicit este 3 sau 5.
6. Programele din nivelele de rulare (Runlevel programs)
- În timpul butării (boot-arii) SO Linux, diverse programe sunt pornite. (De exemplu, pe ecran ar putea să apară la un anumit moment următorul mesaj “starting sendmail …. OK” ce indică faptul că serviciul sendmail a fost pornit). Aceste programe sunt programele executate din directorul definit de către nivelul de rulare asociat.
- În funcţie de initlevel, sistemul va executa programele ce se află în unul dintre următoarele directoare:
- Run level 0 – /etc/rc.d/rc0.d/
- Run level 1 – /etc/rc.d/rc1.d/
- Run level 2 – /etc/rc.d/rc2.d/
- Run level 3 – /etc/rc.d/rc3.d/
- Run level 4 – /etc/rc.d/rc4.d/
- Run level 5 – /etc/rc.d/rc5.d/
- Run level 6 – /etc/rc.d/rc6.d/
- De notat că există şi legături simbolice (symbolic links) către aceste directoare în directorul /etc. De exemplu /etc/rc0.d este legat (linked) de /etc/rc.d/rc0.d.
- În directoarele /etc/rc.d/rc*.d/, se găsesc programe al căror nume începe cu S sau K.
- Programele care încep cu S sunt rulate în cursul procesului de pornire al sistemului. S - startup.
- Programele care pornesc cu K sunt rulate în cursul procesului de oprire al sistemului. K - kill.
- În numele programelor este specificat şi numărul de secvenţa imediat după litera S sau K. Numărul de secvenţa determină ordinea în care programele trebuie pornite sau oprite.
- De exemplu, S12syslog va porni daemon-ul syslog în poziţia a 12-a. S80sendmail va porni daemon-ul sendmail în poziţia a 80-a. Deci, programul syslog va porni înaintea sendmail-ului.
marți, 21 februarie 2012
5 exemple practice de utilizare a comenzii ‘fuser’ în Linux
Traducerea articolului:
5 Practical Linux fuser Command Examples
Utilitarul ‘fuser’ din Linux este un instrument foarte puternic. După cum sugerează şi numele, el oferă informaţii despre utilizatorul sau despre procesul care foloseşte un anumit fişier sau director.
Funcţionalitatea utilitarului 'fuser' nu se rezumă însă doar la oferirea informaţiilor despre procese. Acest articol explică cum poate fi folosit utilitarul 'fuser' cu ajutorul a 5 exemple practice.
Observăm că output-ul comenzii consistă într-o enumerare de identificatoare de procese (PID-uri), dar toate PID-urile sunt urmate de caracterul ‘c’. Acesta indică tipul de acces. Tipul de acces poate fi:
Folosiţi opţiunea '–v' pentru a obţine informaţii detaliate:
Putem folosi comanda 'fuser' având drept parametru portul tcp.
În afară de cazurile prezentate, putem folosi parametrul ‘-m’ pentru a afişa toate procesele ce folosesc sisteme de fişiere montate (de exemplu: drive USB)
Am aflat că un server TCP rulează pe sistem si accesează fişierul binar socket_serv. Putem încerca acum să oprim procesul ce utilizează acest fişier folosind 'fuser'.
Exemplu:
Să presupunem acum că dorim să ştergem un fişier utilizat de mai multe procese. În acest caz se poate folosi comanda ‘fuser’ pentru a opri toate procesele (sau anumite procese) ce utilizează acest fişier.
5 Practical Linux fuser Command Examples
Utilitarul ‘fuser’ din Linux este un instrument foarte puternic. După cum sugerează şi numele, el oferă informaţii despre utilizatorul sau despre procesul care foloseşte un anumit fişier sau director.
Funcţionalitatea utilitarului 'fuser' nu se rezumă însă doar la oferirea informaţiilor despre procese. Acest articol explică cum poate fi folosit utilitarul 'fuser' cu ajutorul a 5 exemple practice.
1. Cine foloseşte un fişier sau un director?
Aceasta este utilitatea de bază a comenzii 'fuser': identifică ce procese folosesc un anumit fişier sau director.$ fuser .
./: 3965c 4175c 4281c 4334c 4337c
În exemplul de mai sus utilitarul
'fuser' a fost rulat pentru a găsi toate procesele ce folosesc directorul curent
‘./'’Observăm că output-ul comenzii consistă într-o enumerare de identificatoare de procese (PID-uri), dar toate PID-urile sunt urmate de caracterul ‘c’. Acesta indică tipul de acces. Tipul de acces poate fi:
- c directorul curent
- e executabilul rulat
- f fişier deschis. f este omis în modul de afişare implicit
- F fişier deschis pentru scriere. F este omis în modul de afişare implicit
- r directorul rădăcină
- m fişier mmap sau librărie partajată
Folosiţi opţiunea '–v' pentru a obţine informaţii detaliate:
$ fuser -v ./
USER PID ACCESS COMMAND
./: himanshu 3965 ..c.. bash
himanshu 4175 ..c.. gedit
himanshu 4281 ..c.. bash
himanshu 4334 ..c.. socket_serv
himanshu 4337 ..c.. bash
Putem observa că rularea comenzii
'fuser' având drept parametru directorul curent permite aflarea unor informaţii
suplimentare cu privire la procesele ce folosesc acest director.2. comanda 'fuser' având drept parametru un executabil
Socket_serv este un executabil (un program scris în C care ascultă pe un port TCP)$ ./socket_serv
În cazul în care apelam comanda 'fuser'
având ca parametru acest executabil vom obţine următorul output:$ fuser -v socket_serv
USER PID ACCESS COMMAND
socket_serv: himanshu 4334 ...e. socket_serv
În acest caz ‘e’ indică faptul că
fişierul este executabil. 3. Verificarea proceselor ce utilizează socket-uri TCP/UDP
Folosind comanda 'fuser' putem verifica de asemenea ce procese utilizează socket-uri TCP/UDP. Programul de mai sus, socket_serv, deschide portul TCP 5000.Putem folosi comanda 'fuser' având drept parametru portul tcp.
$ fuser -v -n tcp 5000
USER PID ACCESS COMMAND
5000/tcp: himanshu 4334 F.... socket_serv
Vom obţine informaţii detaliate
despre procesul ce rulează pe portul 5000.În afară de cazurile prezentate, putem folosi parametrul ‘-m’ pentru a afişa toate procesele ce folosesc sisteme de fişiere montate (de exemplu: drive USB)
4. Oprirea proceselor care utilizează un anumit program
Până acum am aflat că utilitarul 'fusar' oferă informaţii despre procese care utilizează fişiere, directoare, socket-uri, etc.… Puterea comenzii însă nu se limitează doar la afişarea informaţiilor despre procese. Folosind aceasta comanda se pot, de asemenea, opri acele procese.Am aflat că un server TCP rulează pe sistem si accesează fişierul binar socket_serv. Putem încerca acum să oprim procesul ce utilizează acest fişier folosind 'fuser'.
$ fuser -v -k socket_serv
USER PID ACCESS COMMAND
socket_serv: himanshu 4334 ...e. socket_serv
De remarcat că s-a utilizat
paramentrul ‘-k’ pentru a opri procesul ce utilizează fişierul
‘socket_serv’. În terminalul în care
serverul rulează va apare:$ ./socket_serv
Killed
5. Oprirea interactivă a unui proces utilizând 'fuser'
În exemplul de mai sus am văzut că opţiunea ‘-k’ este folosită în cazul în care dorim să oprim procesele ce utilizează un anume fişier. Dacă însă dorim să evitam oprirea accidentală a unui proces util, acesta opţiune se poate folosi împreună cu opţiunea ‘-i’. Dacă folosim această opţiune, comanda ‘fuser’ va rula în mod interactiv şi va solicita aprobare înainte de oprirea vreunui proces.Exemplu:
$ fuser -v -k -i socket_serv
USER PID ACCESS COMMAND
socket_serv: himanshu 5643 ...e. socket_serv
Kill process 5643 ? (y/N) y
Se poate observa că folosind
optiunea ‘-k’ se pot opri selectiv procesele ce utilizează un anumit fişier.Să presupunem acum că dorim să ştergem un fişier utilizat de mai multe procese. În acest caz se poate folosi comanda ‘fuser’ pentru a opri toate procesele (sau anumite procese) ce utilizează acest fişier.
$ fuser -v -k -i ./
USER PID ACCESS COMMAND
./: himanshu 3965 ..c.. bash
himanshu 4175 ..c.. gedit
himanshu 4281 ..c.. bash
himanshu 4334 ..c.. socket_serv
himanshu 4337 ..c.. bash
Kill process 3965 ? (y/N) y
Kill process 4175 ? (y/N) y
Kill process 4281 ? (y/N) y
Kill process 4334 ? (y/N) y
Kill process 4337 ? (y/N) y
De remarcat că utilizarea parametrului
‘-k’ transmite un semnal SIGKILL către procesul ce utilizează un anumit fişier.
Se poate folosi opţiunea ‘-<SEMNAL>’ pentru a transmite
oricare alt semnal. Lista semnalelor pe care comanda fuser le poate transmite
este următoarea:$ fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
De exemplu, următoarea comandă transmite semnalul SIGHUP în locul semnalului SIGKILL implicit, când se foloseşte opţiunea ‘-k’.
$ fuser -v -k -HUP -i ./
sâmbătă, 28 ianuarie 2012
Abonați-vă la:
Postări (Atom)






