Jump to content
pyth0n3

[Unix/Solaris] Database Replicas , Volume management Raid0 Raid1

Recommended Posts

In acest articol voi discuta despre volume management in sistemele solaris.

In articolul Structura fizica/logica disk-uri (system level) am explicat ce inseamna o partitie slice iar acum

voi explica cum poate fi creat un volum raid 0 , si cum poate fi creat un volum raid 1 pentru mirroring.

Pentru stocarea datelor este foarte important crerea unui ambient de mirroring.

Voi da si o definitie simpla de baza pentrua intelege termenul hot spare pool.Structurele pot

fi diverse ,deci asta depinde de procedurile pe care un corporate le impune pentru structura unui

logical volume.Spre exemplu ar putea exista o simpla metoda de rsync intre

2 box-uri de storage la un anumit interval programat sau chiar crearea unui

volum de mirroring care va face rsync in timp real , in mod paralel sau in

mod serial.Am spus ca un simplu hard disk poate fi impartit in 10 slice de

la 0 la 9 si ca 3 din ele nu pot fi modificate.Ei bine pentru crearea unui

volum raid se pot folosi aceste partitii chemate slice.

Structura unui slice poate fi reprezentata in felul urmator:


--------- ---------
- - - -
- - - -
- - - -
-slice1 - -slice4 -
- - - -
- - - -
- - - -
--------- ---------
c1d0s1 c1d1s4

##########################

c1 -> controller

d0 -> primul disk (deoarece numaratoarea pleaca de la 0)

s1 -> primul slice

#########################

#########################

c1 -> controller

d1 -> al doilea disk (deoarece numaratoarea pleaca de la 0)

s4 -> al patrulea slice

########################

Note:

Folosind format se poate aloca spatiu fiecarui slice

"format - disk partitioning and maintenance utility"

Preuspun ca userii sunt deja obijnuiti cu sigla RTFM asadar man format

ar putea fi de ajutor.

Oricum acest utility este interactiv , se alege discul, se alege partitia

se va aloca spatiul pentru slice si se salveaza asadar fiecare slice poate

fi folosita prin path-ul absolut care este:

/dev/dsk/c1d0s1 si /dev/dsk/c1d1s4.

Fiecarui slice va fi alocat spatiu , deci presupunem ca :

/dev/dsk/c1d0s1 = 5 GB

/dev/dsk/c1d1s4 = 5 GB

Note:

Este important ca spatiul sa fie acelasi atunci cand se va face mirroring

In exemplu am folosit spatii mici soar pentru a intelege structura.

Vom presupune ca primul disk vine folosit pentru stocarea datelor DB si il

vom chema master iar al doilea il vom numi slave, acesta va tine o copie de backup a datelor din primul disk.

In acelasi timp in cazul in care unul din disk-uri se va strica va exista intotdeauna o copie a datelor iar in

momentul in care disck-ul va fi schimbat cu alt disck acesta va face o copie a disk-ului care detine datele .

Se pot crea mai multe disk-uri pt mirroring deci nu e neaparat nevoie sa fie limitat la 2.In acest articol ma

limit sa explic care ar fi idea unui mirroring deacea folosesc 2 disck-uri dar intruncorporate se vor folosi cum

am mai spus diverse box-uri de storage cu spatiufoarte mare, (spre exemplu unitati de masura de tipul petabyte).

Puteti sa vapierdeti cand faceti un volume discover de aceea presupun ca va lucra un grup de persoane si nu

numai una singura (ar fi imposibil).

Inainte de a crea un volum in solaris trebuie cunoscute cateva chestii.

Avand in vedere faptul ca pot fi create mii de volume sistemul va trebui sa tina cont de fiecare volum in parte.

Ei bine acest lucru se poate face prin crearea unui database.Nu este un database normal precum credeti dar

are aceeasi structura pentru stocarea datelor.Este esential crearea unui database inainte de a crea un volum,

deoarece sistemul nu va permite crearea volumului in cazul in care nu va gasi acest tip de database prezent

in sistem. Acest database vine definit in urmatorul fel : "State Database Replicas".

Avand in vedere faptul ca acest database vine creat intro partitie a unui

disk este necesar sa fie create cat mai multe copii posibil tinand cont

ca un disk poate fi corup iar daca vine corupt si acest database sistemul

de logical volume vine corupt, acest lucru comporta pierderea datelor.

Sistemul este in grad sa controleze si sa modifice un database in momentul

in care vine corupt folosind un (majority consensus algorithm)

Sistemul va rula daca cel putin jumatate din replici sunt disponibile (nu sunt corupte)

Sistemul va intra in panica daca mai mult de jumatate din replici disponibile sunt corupte.

Pentru a avea un echilibru este important ca sa fie create db-uri (replici)

in toate disck-urile sau in majoritatea.O replica ocupa 4 Mbytes (8192 sectoare.)

In urmatorul exemplu eu am creat cate doua db-uri pe fiecare disk.

E important saexiste pe disk-uri diverse si nu toate in acelasi loc.

Pentru a crea 2 db-uri pe fiecare partitie pe care le-am ales se poate

face urmatoarea sintaxa:

metadb -a -f -c 2 c1d0s1

metadb -a -f -c 2 c1d1s3

Urmatoarea sintaxa va arata daca totul a avut success

a m pc luo 16 8192 /dev/dsk/c1d0s1

a pc luo 8208 8192 /dev/dsk/c1d0s1

a pc luo 16 8192 /dev/dsk/c1d1s4

a pc luo 8208 8192 /dev/dsk/c1d1s4

Note: Nu ezitati sa faceti si man metadb

O data create aceste replici se poat crea volumele ,

In primul rand vom crea cate un volum raid 0 pe fiecare partitie in parte:

/usr/sbin/metainit d0 1 1 c1d0s1

/usr/sbin/metainit d1 1 1 c1d1s4

Vom avea doua volume raid 0 d0 si d1

ls /dev/md/dsk

d0 d1

Pentru a crea un mirror d2 raid1 cu d0 master si d1 slave

/usr/sbin/metainit d2 -m d0

/usr/sbin/metattach d2 d1

ls /dev/md/dsk

d0 d1 d2

Pentru a crea un filesystem UFS in acest volum se poatefolosi urmatoarea

sintaxa : /usr/sbin/newfs /dev/md/rdsk/d2

Acest volum poate fi montat sub orice director.

mount /dev/md/rdsk/d2 /mountpoint

Note.Veti observa ca filesystem-ul are doar jumatate din dimensiunea

partitiilor care le-ati folosit disponibila, cealalta jumatate vine

folosita pentru mirror.


#################################
# ........... ............ #
# . d0 . . d1 . #
# .---------. . ---------. #
# .- -. . - -. #
# .- -. . - -. #
________________________________________________
# .- -. . - -. #
# .-slice1 -. . -slice4 -. #
# .- -. . - -. #
# .- -. . - -. #
# .- -. . - -. #
# .---------. . ---------. #
# . c1d0s1 . . c1d1s4 . #
# ........... ............ #
# d2 #
# #
#################################

Datele vor fi scrise in mod egal in ambele partitii

In teorie vor fi scrise pe primul disk si sincronizate in timp real pe al

doilea.

Am spus ca voi explica ce inseamna un hot spare pool:

Un hot spare pool poate fi un disk unde vine creat un volum logic.

Acest volum vine atasat la un volum de mirroring si va face in asa fel

incat in momentul in care unul din disk-urile prezente in volum

vine corupt il va inlocui in mod automat si iar datele vor face rsync in

automat cu noul volum atasat.

Bineinteles citind acest articol nu veti ajunge la un stadiu de experti

dar veti intelege structura de baza care va va ajuta sa creati volume

destul de complexe.Pe parcurs voi mai reveni cu articole de acest gen si

chiar diverse pentru a ilustra diverse situatii care pot fi intalnite

chiar si cu filesystem-uri diverse.

wget http://sprunge.us/CJBb -O  lvm_raid_solaris.txt

Edited by pyth0n3
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...