Search the Community
Showing results for tags 'solaris'.
-
Oracle Database 11g Release2 Unix/Solaris In acest tutorial voi descrie pasii care trebuie facuti pentru a instala Oracle Database.Acest database vine in 4 release diverse: -Enterprise Edition -Standard Edition -Standard Edition One -Express Edition (free) Dintre toate acestea Express Edition poate fi instalat doar in Linux sau in Windows. In acest tutorial ma voi concentra asupra Oracle Database 11g Release2 Enterprise Edition .Acest release suporta diverse platforme Unix/Linux/Windows In acest tutorial voi explica pasii care trebuie facuti pentru a instala acest database intrun sistem Unix/Solaris. Aceasta versiune de database 11g Release2 suporta o noua optiune de instalare si anume Oracle RAC One Node ( care permite sa rulezi mai multe instante RAC intrun singur nod de cluster)De obicei initial Oracle RAC a fost creat sa ruleze in multi-node cu instante separate alocate pe servere separate.One Node RAC in schimb reuseste sa ruleze instante multiple intrun singur nod de cluster iar realocarea instanstantelor in cazul in care merg in crash se face folosind Omotion care este defapt un utility care faciliteaza realocarea. Probabil voi reveni cu diverse alte articole in lagatura cu sistemul de clustering Oracle dar in acest tutorial voi continua cu Oracle database.Oricum daca sunteti interesati sa vedeti cum functioneaza puteti accesa paginile de manual online pe site-ul oficial ORACLE. Inainte de a instala database-ul sistemul va trebui configurat Memoria: Sistemul necesita o memorie de minim un gb de RAM , si jumatate de gb de swap In cazul in care exista sistemul are mai mult de 2 ram , memoria swap va trebui sa fie egala cu memoria ram. Pentru a verifica memoria ram [blade]# prtconf | grep "Memory size" Memory size: 3072 Megabytes Dupa cum am spus voi instala database-ul intrun sistem Sparc deci pentru a cunoaste tipul procesorului si a sistemului se poate folosi isainfo . [blade]# isainfo -kv 64-bit sparcv9 kernel modules Alocare spatiu disk Aici ar trebui luate in considerare urmatoarele: Aprox 2Gb installer+preconfig Aprox 6Gb database after install Aprox 500 Mb pentru TMP Necesita si cateva pachete , pentru a vedea daca sunt instalate pkginfo poate fi de ajutor [blade]# pkginfo -i SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibms SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt system SUNWarc Lint Libraries (usr) system SUNWbtool CCS tools bundled with SunOS system SUNWhea SunOS Header Files system SUNWi15cs X11 ISO8859-15 Codeset Support system SUNWi1cs X11 ISO8859-1 Codeset Support system SUNWi1of ISO-8859-1 (Latin-1) Optional Fonts system SUNWlibC Sun Workshop Compilers Bundled libC system SUNWlibms Math & Microtasking Libraries (Usr) system SUNWsprot Solaris Bundled tools system SUNWtoo Programming Tools system SUNWxwfnt X Window System platform required fonts In cazul in care nu gaseste un pachet instalat , va da oroare ERROR: information for "SUNWnumepachet" was not found In Solaris 10 probabil nu va gasi 2 pachete SUNWi1cs si SUNWi15cs, pot fi instalate direct din dvd-ul de installare folosind pkgadd.Atentie folosind pkgadd intrun sistem cu mai multe zone va instala pachetele in toate zonele virtuale.Folosind optiunea -G pachetele vor fi instalate doar pe nodul fizic.Evident eu am instalat pachetele in ambele sisteme global si virtual.Sistemul in care voi instala oracle are deja o zona virtualizata. O data montat dvd-ul pachetele pot fi gasite in /cdrom/sol_10/Product Note : Pentru a monta un device extern de tipul dvd sau usb in solaris 10 va trebui sa faceti stop la volume management /etc/init.d/volmgt stop Pentru a face un discovery folositi rmformat [blade]# rmformat Looking for devices... 1. Logical Node: /dev/rdsk/c0t2d0s2 Physical Node: /pci@1e,600000/ide@d/sd@2,0 Connected Device: JLMS XJ-HD166S D3S4 Device Type: DVD Reader 2. Logical Node: /dev/rdsk/c1t0d0s2 Physical Node: /pci@1e,600000/usb@b/storage@2/disk@0,0 Connected Device: SanDisk U3 Cruzer Micro 8.01 Device Type: Removable [blade]# Daca nu opriti serviciul volmgt nu veti vedea discul. O data ce discul a fost gasit se poate monta oriunde in sistem mount -F hsfs -o ro /dev/dsk/c0t2d0s2 /mountpoint Asadar se pot instala pachetele care lipsesc pkgadd -d /cdrom/sol_10/Product numepachet numepachet etc Pentru alocarea spatiului eu am decis sa ii dau un minim de 20 gb intrun slice Asadar am creat un slice de 20gb pe care am creat un zpool c0tr04d0s4. Pentru a prepara spatiul folosind ZFS : 1.Se creaza un slice folosind format care va fi alocat (poate fi un disk sau doar o partitie) c0t0d0s4 2.Se creaza un zpool zpool create datazone c0t0d0s4 3.Se creaza un spatiu (filesystem pentru user) zfs create datazone/home zfs create datazone/home/oracle Intrun final totul va arata cam asa: [blade]# zfs list NAME USED AVAIL REFER MOUNTPOINT datazone 172K 19.6G 32K /datazone datazone/home 63K 19.6G 32K /datazone/home datazone/home/oracle 31K 19.6G 31K /datazone/home/oracle Crearea grupului, user-ului pentru a instala si folosi database-ul groupadd oinstall && groupadd dba useradd -d /datazone/home/oracle -m -s /bin/ksh oracle Note : Puteti folosi oricare alt shell in solaris 10 , e disponibil si bash dar eu prefer KornShell deoarece e mult mai performant (parerea mea) Adasar vor trebui create directoarele unde se va instala database-ul mkdir -p /datazone/home/oracle/product/11/db && mkdir /datazone/home/oracle/tmp Se vor atribui drepturile de ownership asupra ierarhiei de directoare user-ului oracle chown -R oracle:oinstall /datazone/home/oracle Userului oracle i se va atribui un password passwd oracle Se va crea un fisier .profile pentru userul oracle care va fi populat cu uramtoarele date ###BEGIN ###Database required export ORACLE_BASE=/datazone/home/oracle export ORACLE_HOME=$ORACLE_BASE/product/11/db export PATH=$ORACLE_HOME/bin:$PATH export TMP=/datazone/home/oracle/tmp export TMPDIR=/datazone/home/oracle/tmp export ORACLE_UNQNAME=database_name export ORACLE_SID=database_name ###Korn shell customization EDITOR=vi export EDITOR set -o vi HISTSIZE=10000 HISTFILE=$ORACLE_BASE/.ksh_history export HISTFILE export HISTSIZE PS1="[oracle]> " ###END Note: Fisierul ar trebui sa contina si variabila DISPLAY , dar eu voi face X forwarding in ssh pentru a instala database-ul deoarece procesul de instalare are o interfata grafica , in mod divers se poate face export la display daca va aflati in fata serverului si aveti un monitor "export DISPLAY=:0.0".Desi nu prea cred ca un Netra Sparc sau un Blade Sun parcat intrun Data Center are tastiera si mouse , nu e exclus oricum. Se va crea o partitie de swap Note: In ZFS sintaxa e putin diversa , oricum voi crea 2 GB de swap iar pe parcurs o voi extinde daca va fi necesar Avand in vedere faptul ca serverul are 3GB de ram ar trebui alocat si 3 GB de swap si cred ca installer-ul va face print cu un error dar vom face skip pentru a extinde memoria post install daca este necesar (Aici am luat o decizie personala de a face asa dar in teorie ar trebui alocat 3 gb de swap) Crearea partitiei pt swap zfs create -V 2G datazone/home/oracle/ora_swap Activarea partitiei swap swap -a /dev/zvol/dsk/datazone/home/oracle/ora_swap List swap [blade]# swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 136,9 16 1056704 1054880 /dev/zvol/dsk/datazone/home/oracle/ora_swap 256,1 16 4194288 4194288 Modificari la nivel de system Desi se pot face folosind diverse SMF utility in solaris 10 , voi modifica fisierele precum vine scris in manual. Daca vin modificate manual bineinteles va trebui facut un fel de refresh pentru a fi citite si aici vom face un reboot.In unele servere nu se poate face reboot si vor trebui adoptate metodele care vor face aceste modificari in HOT level fara reboot. projadd -U oracle -K "project.max-shm-memory=(priv,2g,deny)" oracle projmod -sK "project.max-sem-nsems=(priv,256,deny)" oracle projmod -sK "project.max-sem-ids=(priv,100,deny)" oracle projmod -sK "project.max-shm-ids=(priv,100,deny)" oracle echo "set maxuprc=16384" >> /etc/system echo "set max_nprocs=30000" >> /etc/system echo "set shmsys:shminfo_shmmax=3221225472" >> /etc/system projadd administreaza proiectele in system si sintaxa pe care em folosito este sa creeze un nou proiect pentru user-ul oracle unde i-am oferit un maxim shared memory de 2 gb.Folosind projmod nu necesita reboot ci doar un log-out a user-ului.Modificarile asupra fisierului /etc/system necesita reboot desi eu nu as numi reboot in Unix deoarece sistemul nu face shutdown ci doar un INIT restart deci nu e un reboot ca in sistemele Windows. Ar putea fi folosit un modular debugger mdb pentru a modifica valorile dar vred ca e mai complicat si nu toti ar itelege cum functioneaza. maxuprc - Maximum number of processes that can be created on a system by any one user. max_nprocs - Maximum number of processes that can be created on a system. shmsys:shminfo_shmmax - Maximum size of system V shared memory segment that can be created. (e doar o valoare care exprima un maxim nu face memory alocation) Dupa aceste configurari se va face reboot Readuc aminte reboot in unix face doar un kernel restart Citez din man pages Daca totul a fost configurat bine se poate incepe cu instalarea database-ului.Se va face login cu user-ul oracle deoarece installer-ul necesita ca user-ul sa nu fie root Se creaza un director temporar pt installer mkdir /datazone/home/oracle/installetion Se vor copia fisierele descarcate sub acest director [blade]# mv database/ /datazone/home/oracle/installation/ Pentru a instala din remote se va face ssh cu optiunea -X (X forwarding) Asadar vom avea display-ul pe un computer extern. ssh -X oracle@blade Pentru a porni procesul de instalare a database-ului [oracle]> cd installation/database/ && ./runInstaller De aici inainte procesul de instalare este interactiv , asadar am facut un slide cu imagini Oracle Database 11g Release2 installer screenshots O data terminata instalarea se poate configura database-ul dar acest lucru nu mai face parte din acest topic.Daca aveti intrebari , nedumeriri sunteti liberi sa le faceti.E interesanta structura prin care functioneaza un database oracle din punct de vedere client server.Probabil ve-ti gasi greseli de exprimare , faceti un report la adresa mea de mail le voi corecta.Daca va intrebati ce rost ar avea un tutorial de instalare a unui db pe un forum de hacking , ei bine cu cat cunosti mai bine piesele din puzzle cu atat mai repede temini figura si ar fi stupid sa distrugi ceea ce nu reusesti sa creezi.
-
- database
- enterprise
-
(and 3 more)
Tagged with:
-
Download white paper : wget http://sprunge.us/JgZi -O zfs_by_example.txt In acest articol voi discuta despre ZFS (Zettabyte File System). Zettabyte este o unitate de masura si poate fi reprezentata in urmatorul fel: 1 Zettabyte = 1,180,591,620,717,411,303,424 (270) bytes, 1,024 Exabytes, 983,826,350,597,842,752 pages of plaintext (1,200 characters) 4,919,131,752,989,213 books (200 pages or 240,000 characters) 375,299,968,947,541 digital pictures (with 3MB average file size) 281,474,976,710,656 MP3 audio files (with 4MB average file size) 1,732,153,702,834 650MB CD’s 251,030,052,003 4.38GB DVD’s 43,980,465,111 25GB Blu-ray discs ZFS este un filesystem open source care a fost svilupat de catre Sun MicrosystemVine distribuit sub licenta Common Development and Distribution License, si exista un porting pt Linux.Pentru cei interesati (ZFS on Linux).Un feature esential a acestui filesystem ar fi "data integrity".Poate preveni ca datele sa fie corupte, voi face si o minima demonstratie in unul din exemple unde voi incerca sa corup o parte din date.Acepta fisiere de dimensiuni destul de mari (16 exabytes) si o limita de 256 zettabytes pentru dimensiunea total? a sistemului de fi?iere. Inainte de a crea cateva exemple voi ilustra diferenta intre modul in care vin contruite diverse sisteme de fisiere si zfs. Sistemul de fisiere zfs vine construit intrun recipient chemat zpool .Un zpool vine construit din dispozitive virtuale care in acelasi rand sunt construite din dispozitive de block ,acestea pot fi partitii de hard disk sau drive-uri intregi. Un sistem de fisiere de obicei poate fi creat intrun dispozitiv unic (hard disk) si necesita un volume manager pentru a utiliza mai mult de un dispozitiv.Un exemplu poate ilustra acest lucru: -------------------------- -------------------------- - - - - - filesystem1 - - filesystem2 - - - - - -------------------------- -------------------------- - - - - ____________-____________ ____________-____________ _ _ _ _ _ logical volume1 _ _ logical volume2 _ _ _ _ _ _________________________ _________________________ | | ######### | ######### ######### | ######### # # # # # # # # # disk # # disk # # disk # # disk # # # # # # # # # ######### ######### ######### ######### Deobicei in majoritatea cazurilor unde vine folosit un volume manager aceasta este structura pe baza careia vine creat un sistem de fisiere In schimb zfs contruieste sistemul de fisiere intrun singur recipient chemat zpool , in acelasi timp sistemele de fisiere pot fi structurate intro ierarhie.Exemplu zpool: ------------- - - -filesystem - - 6 - ------------- - - ------------- ------------- - - - - -filesystem - -filesystem - - 4 - - 5 - ------------- ------------- - - - - ------------- ------------- ------------- - - - - - - -filesystem - -filesystem - -filesystem - - 1 - - 2 - - 3 - ------------- ------------- ------------- - - - ____________-_______________-_______________-____________ _ _ _ ZPOOL _ _ _ _________________________________________________________ | | | | | | ######### ######### ######### ######### # # # # # # # # # disk1 # # disk2 # # disk3 # # diskX # # # # # # # # # ######### ######### ######### ######### Diferenta dintre voume manager este ca in zfs se poate crea un singur zpool in care pot fi atasate toate partitiile sau drive-uri intregi si sistemele de fisiere pot avea o ierarhie .Un sistem de fisiere poate avea in internul lui alte sisteme de fisiere. Spatiul acestor sisteme de fisiere poate fi delimitat , fiecare poate avea o anumita cota (dimensiune), vom vedea pe parcurs cum pot fi alocate aceste dimensiuni. Exemplele urmatoare sunt facute intrun sistem Unix SunOS 5.10 in exemple voi folosi 2 partitii separate (slice) , aceeasi sintaxa ramane valabila pentru drive-uri separate Voi crea un zpool care va gazdui diverse sisteme de fisiere folosind doua slice, evindent pe parcurs se poat adauga alte partitii sau discuri in mod dinamic Sistemele de fisiere create nu necesita unmount, si nu trebuie creata nici un fel de directiva in /etc/vfstab , o data creat fiecare sistem de fisiere va fi montat in mod automat iar in momentul in care se vor adauga discuri noi , spatiul va fi modificat in mod dinamic. Pentru test voi folosi urmatoarele (slice): c1d1s3 -> 1GB c1d1s4 -> 1GB Voi folosi 2 servere separate Hostname pyth0n3 Debian 6 -> pentru a testa integritatea datelor Hostname eclipse Solaris 10 -> pentru a crea un zfs Sintaxa pentru a crea un zpool este urmatoarea zpool nume_pool disk1 disk2 diskX Se poate crea spre exemplu un zpool mirror cu urmatoarea sintaxa zpool nume_pool mirror disk1 disk2 mirror disk3 disk4 Spre exemplu un zpool mirror creat din doua disck-uri de 2GB va avea 1GB de spatiu deoarece unul din disk-uri va fi folosit pentru mirroring. Se poate crea spre exemplu un zpool folosind un singur disk sau o singura partitie a unui disk.Exemplu: zpool create eclipse_pool c1d1s3 O data ce aceasta sintaxa a fost rulata s-au intamplat urmatoarele: A fost creat un zpool eclipse_zpool, si a fost montat in mod automat ,mount sau df poate demonstra acest lucru [eclipse]# mount ........ ........ /eclipse_pool on eclipse_pool read/write/setuid/devices/nonbmand/exec/xattr/atime/dev=2d5000e on Thu Mar 8 06:58:32 2012 [eclipse]#[eclipse]# df -h eclipse_pool Filesystem size used avail capacity Mounted on eclipse_pool 984M 21K 984M 1% /eclipse_pool [eclipse]# Un zpool vine montat in mod automat dupa ce a fost construit si poate fi direct folosit ca sistem de fisiere ,acest lucru permite in mod automat stocarea oricarui tip de fisier in /eclipse_pool. [eclipse]# zpool status -v eclipse_pool pool: eclipse_pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM eclipse_pool ONLINE 0 0 0 c1d1s3 ONLINE 0 0 0 errors: No known data errors [eclipse]# zpool status arata daca acest sistem de fisiere nu prezinta errori, numarul disk-urilor sau a prtitiilor care fac parte si daca este pregatit pentru a putea fi folosit .Un status online va demonstra ca sistemul de fisiere este deja pus la dispozitie si poate fi folosit.Un alt tip de optiune care poate aduce informatii in legatura cu un pool care a fost creat este zpool list [eclipse]# zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT eclipse_pool 1016M 76.5K 1016M 0% ONLINE - [eclipse]# Pentru a extinde spatiul e destul de simplu, pot fi atasate alte discuri sau partitii iar spatiul va fi extins in mod dinamic. zpool add eclipse_pool c1d1s4 eclipse_pool a fost extins in mod automat iar un zpool list sau df poate demonstra acest lucru [eclipse]# zpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT eclipse_pool 1.98G 134K 1.98G 0% ONLINE - [eclipse]# [eclipse]# df -h eclipse_pool Filesystem size used avail capacity Mounted on eclipse_pool 2.0G 21K 2.0G 1% /eclipse_pool [eclipse]# A fost atasat un alt slice de 1Gb , momentan sistemul de fisiere are 2 GB de spatiu.zpool status va demonstra faptul ca a fost atasat un alt dispozitiv [eclipse]# zpool status -v eclipse_pool pool: eclipse_pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM eclipse_pool ONLINE 0 0 0 c1d1s3 ONLINE 0 0 0 c1d1s4 ONLINE 0 0 0 errors: No known data errors [eclipse]# In acest mod pot fi atasate diverse alte dispozitive marind sistemul de fisiere in mod dinamic. Un pool poate fi distrus intrun mod foarte simplu si rapid de aceea sintaxele comenzilor ar trebui rulate cu multa atentie. Pentru a distruge tot ce a fost contruit pana in prezent se poate folosi urmatoarea sintaxa. zpool destroy eclipse_pool Un zpool list va demonstra faptul ca nu exista [eclipse]# zpool list no pools available [eclipse]# In exemplele urmatoare voi crea un pool mirror , necesita un minim de doua dispozitive. Voi folosi aceleasi slice care au fost folosite in exemplele precedente c1d1s3 -> 1GB c1d1s4 -> 1GB Pentru a crea un mirror din 2 dispozitive se poate folosi urmatoarea sintaxa: zpool create eclipse_mirrorpool mirror c1d1s3 c1d1s4 Ca si in exemplu precedent acesta pool va fi montat in mod automat [eclipse]# zpool status -v eclipse_mirrorpool pool: eclipse_mirrorpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM eclipse_mirrorpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1d1s3 ONLINE 0 0 0 c1d1s4 ONLINE 0 0 0 errors: No known data errors [eclipse]# In schimb acest pool nu va mai avea 2Gb ci jumatate din spatiul alocat deoarece cealalta jumatate va fi folosita pentru mirroring Filesystem size used avail capacity Mounted on eclipse_mirrorpool 984M 21K 984M 1% /eclipse_mirrorpool [eclipse]# Cum am precizat dimensiunea este 984M aproximativ un GB , jumatate din spatiul celor doua slice alocate. Acest sistem de fisiere poate fi populat cu date , iar in urmatoarele exemple voi incerca sa corup unul din dispozitivele atasate pentru a distruge datele. [eclipse]# pwd /eclipse_mirrorpool [eclipse]# mkfile 30M sensitive_data.txt [eclipse]# df -h . Filesystem size used avail capacity Mounted on eclipse_mirrorpool 984M 16M 968M 2% /eclipse_mirrorpool [eclipse]# ls -ltrh total 57875 -rw------T 1 root root 30M Mar 8 08:14 sensitive_data.txt [eclipse]# Voi copia acest file pe un alt sistem extern pentru a crea un test de integritate [pyth0n3@mc]$ uname -a Linux mc 2.6.32-5-686 #1 SMP Wed Jan 11 12:29:30 UTC 2012 i686 GNU/Linux [pyth0n3@mc]$ scp eclipse:/eclipse_mirrorpool/sensitive_data.txt sensitive_da> sensitive_data.txt 100% 30MB 1.8MB/s 00:17 [pyth0n3@mc]$ /usr/bin/shasum -a 256 sensitive_data.txt > sha256.data.sum [pyth0n3@mc]$ cat sha256 75c91b29d5522c8a97c779e50bc33f11e07ed37b2baa31c8c727016e92915c1d sensitive_data.txt [pyth0n3@mc]$ date Thu Mar 8 08:25:05 CET 2012 [pyth0n3@mc]$ [pyth0n3@mc]$ O metoda simpla pentru a distruge dispozitive este dd [eclipse]# date Thu Mar 8 08:25:58 CET 2012 [eclipse]# dd if=/dev/urandom of=/dev/dsk/c1d1s3 bs=512 count=1024 1024+0 records in 1024+0 records out [eclipse]# [eclipse]# zpool status -v eclipse_mirrorpool pool: eclipse_mirrorpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM eclipse_mirrorpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1d1s3 ONLINE 0 0 0 c1d1s4 ONLINE 0 0 0 errors: No known data errors [eclipse]# Chiar daca dispozitivul c1d1s3 a fost distrus , zpool status nu arata nici un fel de problema . [pyth0n3@mc]$ date Thu Mar 8 08:27:25 CET 2012 [pyth0n3@mc]$ scp eclipse:/eclipse_mirrorpool/sensitive_data.txt sensitive_da> sensitive_data.txt 100% 30MB 2.3MB/s 00:13 [pyth0n3@mc]$ /usr/bin/shasum -c sha256.data.sum sensitive_data.txt: OK [pyth0n3@mc]$ O copie a aceluiasi fisier nu prezinta nici un fel de probleme,testul de integritate arata ca fisierul nu a fost corupt La inceputul acestui articol am spus ca in zfs sistemele de fisiere pot fi create intro ierarhie Momentan am creat un pool eclipse_mirrorpool care poate gazdui alte sisteme de fisiere Pentru a crea un alt filesystem in eclipse_mirrorpool spre exemplu un filesystem chemat home se poate folosi urmatoaree sintaxa zfs create eclipse_mirrorpool/home Presupunem ca in /home vrem sa facem un alt sistm de fisiere chemat /testing zfs create eclipse_mirrorpool/home/testing In momentul in care comenizile vin rulate cu success nu prezinta un output, iar pentru a controla ceea ce a fost creat folosind sintaxele precedente se poate folosi zfs list [eclipse]# zfs list NAME USED AVAIL REFER MOUNTPOINT eclipse_mirrorpool 30.2M 954M 30.0M /eclipse_mirrorpool eclipse_mirrorpool/home 42K 954M 21K /eclipse_mirrorpool/home eclipse_mirrorpool/home/testing 21K 954M 21K /eclipse_mirrorpool/home/testing [eclipse]# Note: Un lucru important de observat este faptul ca toate sistemele de fisiere create au acelasi spatiu disponibil si anume 954M.Asta ar insemna ca fiecare poate folosi acest spatiu dar in momentul in care unul din ele va umple acest spatiu celelalte nu il vor putea folosi.Presupunem ca sistemul de fisiere testing ar trebui sa foloseasca doar 50Mb din spatiul tolal iar sistemul de fisiere home va trebui sa foloseasca doar 200Mb.Ei bine aceasta limita poate fi imposa de catre o cota. Un lucru important de observat este faptul ca toate sistemele de fisiere create au acelasi spatiu disponibil si anume 954M.Asta ar insemna ca fiecare poate folosi acest spatiu dar in momentul in care unul din ele va umple acest spatiu celelalte nu il vor putea folosi.Presupunem ca sistemul de fisiere testing ar trebui sa foloseasca doar 50Mb din spatiul tolal iar sistemul de fisiere home va trebui sa foloseasca doar 200Mb.Ei bine aceasta limita poate fi imposa de catre o cota. Un lucru important de observat este faptul ca toate sistemele de fisiere create au acelasi spatiu disponibil si anume 954M.Asta ar insemna ca fiecare poate folosi acest spatiu dar in momentul in care unul din ele va umple acest spatiu celelalte nu il vor putea folosi.Presupunem ca sistemul de fisiere testing ar trebui sa foloseasca doar 50Mb din spatiul tolal iar sistemul de fisiere home va trebui sa foloseasca doar 200Mb.Ei bine aceasta limita poate fi imposa de catre o cota. Vom aloca doar 200 de Mb pentru home zfs set quota=200M eclipse_mirrorpool/home Vom aloca doar 50 de MB pentru testing zfs set quota=50M eclipse_mirrorpool/home/testing Pentru a observa ceea ce a fost setat pana acum in legatura cu limita sistemelor de fisiere se poate folosi urmatoarea sintaxa [eclipse]# zfs get -r quota eclipse_mirrorpool NAME PROPERTY VALUE SOURCE eclipse_mirrorpool quota none default eclipse_mirrorpool/home quota 200M local eclipse_mirrorpool/home/testing quota 50M local [eclipse]# zfs list NAME USED AVAIL REFER MOUNTPOINT eclipse_mirrorpool 30.2M 954M 30.0M /eclipse_mirrorpool eclipse_mirrorpool/home 43K 200M 22K /eclipse_mirrorpool/home eclipse_mirrorpool/home/testing 21K 50.0M 21K /eclipse_mirrorpool/home/testing [eclipse]# Acum fiecare filesystem poate fi folosit pana in momentul in care spatiul stabilit de catre quota se va umple. Note: Un alt lucru pe care zfs il permite este schimbarea numelui oricarui din sistemele de fisiere create [eclipse]# zfs rename eclipse_mirrorpool/home/testing eclipse_mirrorpool/home/testing2 [eclipse]# zfs list NAME USED AVAIL REFER MOUNTPOINT eclipse_mirrorpool 30.2M 954M 30.0M /eclipse_mirrorpool eclipse_mirrorpool/home 43K 200M 22K /eclipse_mirrorpool/home eclipse_mirrorpool/home/testing2 21K 50.0M 21K /eclipse_mirrorpool/home/testing2 [eclipse]# Se poate observa cum fiecare filesystem vine montat separat in mod automat de catre zfs , df sau mount poate demonstra acest lucru eclipse_mirrorpool 984M 30M 954M 4% /eclipse_mirrorpool eclipse_mirrorpool/home 200M 23K 200M 1% /eclipse_mirrorpool/home eclipse_mirrorpool/home/testing2 50M 21K 50M 1% /eclipse_mirrorpool/home/testing2 [eclipse]# mount ..... ..... /eclipse_mirrorpool on eclipse_mirrorpool read/write/setuid/devices/nonbmand/exec/xattr/atime/dev=2d5000f on Thu Mar 8 07:33:29 2012 /eclipse_mirrorpool/home on eclipse_mirrorpool/home read/write/setuid/devices/nonbmand/exec/xattr/atime/dev=2d50010 on Thu Mar 8 08:37:17 2012 /eclipse_mirrorpool/home/testing2 on eclipse_mirrorpool/home/testing2 read/write ..... ..... Un alt lucru important pe care zfs il are este posibilitatea de a crea un snapshot(o fotografie a unui sistem de fisiere la un anumit timp )sau un clone (un clone este de fapt un link simbolic catre un snapshot dar permite sa fie montat si se poate scrie in filesystem, in schimp un snaphot e readonly) Note: Daca spre exemplu sistemul de fisiere are 1Gb de spatiu si vine creat un fisier de 512Mb vor mai ramane liberi 512 Mb in acel filesystem (Acest lucru e logic).Daca in acest moment vine creat un snapshot n acest sistem de fisiere spatiul disponibil al filesystem-ului va fi tot 512Mb , nu vine preluat spatiu suplimentar.Dar in momentul in care fisierul care ocupa deja 512Mb va fi eliminat si va fi creat un alt fisier in aceeasi instanta de 700Mb , snapshot-ul va ocupa aceeasi 512Mb + 700Mb care au fost creati.Deci chiar daca fisierele au fost eliminate si au fost create alte fisiere snapshot-ul va exista si va ocupa acelasi spatiu.Bineinteles daca se va crea un fisier de 700Mb vor mai ramane liberi 300Mb chiar daca un snapshot ocupa deja 512Mb deoarece zfs face o copie inainte de orice operatie de scriere. Pentru a crea un snapshot a sistemului de fisiere creat in precedenta , spre exemplu testing2 se va folosi urmatoarea sintaxa zfs snapshot eclipse_mirrorpool/home/testing2@testingsnapshot1 Snapshot-ul se va gasi in sistemul de fisiere eclipse_mirrorpool/home/testing2 sun urmatorul path /eclipse_mirrorpool/home/testing2/.zfs/snapshot (fiecare snapshot va fi readonly) Note: Un ls -a nu va arata directorul .zfs Pentru a face un restore a unui snapshot se poate executa urmatoarea sintaxa: zfs rollback eclipse_mirrorpool/home/testing2@testingsnapshot1 Un snapshot poate fi clonat , cu permisii read/write si montat in oricare alt filesystem Exemplu , vom clona snapshot-ul creat eclipse_mirrorpool/home/testing2@testingsnapshot1 in eclipse_mirrorpool/home zfs clone eclipse_mirrorpool/home/testing2@testingsnapshot1 eclipse_mirrorpool/home/clone_testingsnapshot1 Folosind zfs list se pot vedea toate modificarile facute pana in prezen [eclipse]# zfs list NAME USED AVAIL REFER MOUNTPOINT eclipse_mirrorpool 60.3M 924M 30.0M /eclipse_mirrorpool eclipse_mirrorpool/home 30.1M 170M 24K /eclipse_mirrorpool/home eclipse_mirrorpool/home/clone_testingsnapshot1 0 170M 30.0M /eclipse_mirrorpool/home/clone_testingsnapshot1 eclipse_mirrorpool/home/testing2 30.0M 20.0M 21K /eclipse_mirrorpool/home/testing2 eclipse_mirrorpool/home/testing2@testingsnapshot1 30.0M - 30.0M - Note: Un snapshot nu poate fi eliminat atata timp cat un clone exista, pot fi eliminate dar impreuna zfs destroy -R -f eclipse_mirrorpool/home/testing2@testingsnapshot1 Aceasta sintaxa va distrude un snapshot impreuna cu un clone care ii apartine [eclipse]# zfs list NAME USED AVAIL REFER MOUNTPOINT eclipse_mirrorpool 30.2M 954M 30.0M /eclipse_mirrorpool eclipse_mirrorpool/home 44K 200M 23K /eclipse_mirrorpool/home eclipse_mirrorpool/home/testing2 21K 50.0M 21K /eclipse_mirrorpool/home/testing2 [eclipse]# Acest articul a ilustrat doar cateva aspecte ZFS , pentru a intelege mai bine cum funtioneaza acest sistem de fisiere sunteti rugati sa cititi manualul http://docs.oracle.com/cd/E19253-01/819-5461/index.html Daca aveti intrebari in legatura cu subiectul nu ezitati sa le faceti
-
- filesystem
- solaris
- (and 4 more)
-
In acest articol voi explica cum poate fi creat un conntainer in zolaris ,pentru a intelege mai bine intreaga structura vor trebui citite paginile manualului ,asadar pentru cei interesati sa puna in practica acest lucru RTFM.Diverse manuale le puteti gasi pe site-ul oficial oracle. In solaris un container este echivalent la un vps deoarece procedura este de virtualizare este facuta la nivelul sistemului si functioneaza pe acelasi principiu.Se pot crea diverse zone care pot fi host-uri separate.Zonele nu pot comunica intre ele decat folosind interfata de retea.Fiecare zona vine izolata si fiecare process ruleaza intrun container separat.Solaris poate virtualiza doar sistene solaris si exista 2 moduri pentru a crea aceste zone.Sper sa fie clar conceptul de zona sau container.O zona/container este un host, mai multe zone sunt mai multe host-uri virtuale.Inainte de a explica tipurile de zone care pot fi construite voi adauga urnmatoarele: Sistemul fizic vine definit ca o zona globala in solaris care este montatasub "/" si oricare alta zona vine creata in sistemul fizic va fi definita ca zona secondara "non global zone". Aceste zone pot fi create in 2 moduri 1.Sparse Root Zone Vine creata o zona al carui sistem de fisiere va fi partial mostenit din din sistemul de fisiere prezent in host-ul fizic.Spre exemplu anumite directoare a sistemului fizic vor fi de fapt in sharing cu noul host virtual.Acest lucru implica urmatoarele: Orice packet vine instalat in sistemul fizic va putea fi folosit si de catre sistemul virtual, bineinteles procesul fiecarui executabil va rula in sistemul virtual separat de catre sistemul fizic.Acest model ocupa aproximativ 100Mb pentru fiecare host virtual creat. Exemplu Sparse Root Zone: --------------------------- - **********- -########################*- -# * #*- -# FS * SHARE #*- -# * #*- -# ################*- -# # * *- -# HOST # * SRZ *- -# # * *- -# # * *- -######### **********- - HOST - --------------------------- HOST -> Host fizic SRZ -> Sparsed Root Zone (host virtual (vps)) FS -> Filesystem HOST (fizic) SHARE -> Filesystem HOST (fizic) in sharing cu host-ul virtual Note: Directoarele /usr /lib /sbin /platform /opt a sistemului fizic vor fi in sharing cu sistemul guest virtual. 2.Whole Root Zone Vine creata o zona care va contine o copie a fisierelor din host-ul fizic Fiecare pachet instalat in host-ul fizic nu va fi vazut de catre host-ul virtual, acesta fiind independent. Note: Directoarele /usr /lib /sbin /platform /opt a sistemului fizic vor fi copiate de catre sistemul virtual.Aceasta procedura va ocupa mai mult spatiu. Exemplu Whole Root Zone: --------------------------- - - -######### ********* - -# # * * - -# # * * - -# # * * - -# HOST # * WRZ * - -# FS1 # * FS2 * - -# # * * - -# # * * - -######### ********* - - HOST - --------------------------- HOST -> Host fizic FS1 ->Filesystem HOST (fizic) WRZ -> Host Virtual FS2 ->Filesystem WRZ (virtual) Ambele zone au aceleasi sintaxe pentru a fi create difera doar parametrul unui comand care va specifica tipul de zona. In urmatorul exemplu voi crea o zona "Sparse Root Zone": Zonele pot fi puse in orice tip de filesystem , chiar si pe discuri externe de storage.In exemple voi folosi ca path /export/home/zones Initial va trebui creat directorul care va fi containerul sistemului virtual il voi numi eclipse1 [eclipse]# pwd /export/home/zones [eclipse]# ls -ltr total 2 drwx------ 5 root root 512 Mar 6 04:22 eclipse1 [eclipse]# Pentru securitate am restrictionat acest director in asa fel incat doar user-ul root sa poata face modificari.Noul host virtual va avea o interfata logica care are ca baza interfata fizica a sistemului. zonecfg se ocupa de creare zonelor " zonecfg - set up zone configuration" Poate fi folosit interactiv sau chiar aplicand parametrii necesari in cmdline. [eclipse]# [COLOR="#00FF00"]zonecfg -z eclipse1[/COLOR] eclipse1: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:eclipse1> [COLOR="#00FF00"]create [/COLOR] zonecfg:eclipse1> [COLOR="#00FF00"]set zonepath=/export/home/zones/eclipse1[/COLOR] zonecfg:eclipse1> zonecfg:eclipse1> [COLOR="#00FF00"]add net[/COLOR] zonecfg:eclipse1:net> zonecfg:eclipse1:net> [COLOR="#00FF00"]set address=192.168.123.107[/COLOR] zonecfg:eclipse1:net> [COLOR="#00FF00"]set physical=nfo0[/COLOR] zonecfg:eclipse1:net>[COLOR="#00FF00"]set defrouter=192.168.123.254[/COLOR] zonecfg:eclipse1:net>[COLOR="#00FF00"]info[/COLOR] net: address: 192.168.123.107 physical: nfo0 defrouter: 192.168.123.254 zonecfg:eclipse1:net> zonecfg:eclipse1:net> [COLOR="#00FF00"]end[/COLOR] zonecfg:eclipse1> zonecfg:eclipse1>[COLOR="#00FF00"]verify[/COLOR] zonecfg:eclipse1>[COLOR="#00FF00"]commit[/COLOR] zonecfg:eclipse1>[COLOR="#00FF00"]exit[/COLOR] [eclipse]# Aceasta procedura a creat un fisier de configurare XML unde a stocat toate informatiile pe care le-am introdus pentru noul sistem virtual. Fisierele pot fi gasite in /etc/zones [eclipse]# pwd /etc/zones [eclipse]# ls eclipse1.xml SUNWblank.xml SUNWlx.xml index SUNWdefault.xml SUNWtsoldef.xml [eclipse]# zoneadm - se ocupa de administratea zonelor "zoneadm - administer zones"Pentru a instala zona pe care am configurato se poate folosi urmatoarea sintaxa zoneadm -z eclipse install Preparing to install zone <eclipse1>. Creating list of files to copy from the global zone. Copying <1203> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1203> packages on the zone. .................................................... Istalarea zonei va dura aproximativ 10 minute In urmatorul exemplu puteti vedea zonele instalate [eclipse]# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / native shared - eclipse1 installed /export/home/zones/eclipse1 native shared [eclipse]# Note: Dupa cum observati fiecare zona are un id si un nume.Prima zona care vine identificata de catre valoarea 0 este de fapt sistemul fizic care am spus ca vine recunoscut ca o zona globala si se gaseste sub directorul "/" iar in acest moment e in running deoarece sistemul functioneaza [eclipse]# uptime 7:34am up 2 day(s), 58 min(s), 2 users, load average: 0.00, 0.00, 0.00 [eclipse]# Pentru a porni sistemul virtual pe care l-am creat vom folosi urmatorul comand [eclipse]# zoneadm -z eclipse1 boot [eclipse]# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / native shared 12 eclipse1 running /export/home/zones/eclipse1 native shared [eclipse]# Urmatorul process confirma faptul ca zona e in running [eclipse]# ps -ef | grep z root 13496 13488 0 06:48:35 pts/1 0:00 sh -c more -s /tmp/mpzUaawA root 13531 1 0 07:35:59 ? 0:00 zoneadmd -z eclipse1 Un alt tool important pus la dispozitie de catre solaris este zlogin Poate fi folosit pentru a intra intro anumita zona avand un shell , e putin echivalent cu serviciul ssh are la baza acelasi principiu. Un parametru important a acestui comand este -C care stabileste o conexiune cu zone in consola.E important pentru a configura ambientul o data ce a fost instalat. zlogin -C eclipse1 Configurarile care au mai ramas de facut ar fi serverurile DNS, Language ,etc, toate acestea se pot face in mod interactiv o data ce a fost stabilita conexiunea in consola.Bineinteles pentru a face un simplu login in sistemul virtual se poate folosi urmatoarea sintaxa zlogin nume_zona [eclipse]# zlogin eclipse1 [Connected to zone 'eclipse1' pts/2] Last login: Tue Mar 6 06:47:30 on pts/2 Oracle Corporation SunOS 5.10 Generic Patch January 2005 # # Shutdown se poate face direct din sistemul virtual sau folosind unul din comenzile de administrare [eclipse]# zoneadm -z eclipse1 halt Note: Tin sa precizez faptul ca nu am setat optiunea set autoboot=true cand am configurat initial aceasta zona , asta inseamna ca nu va porni in momentul in care va face boot sistemul fizic, oricum fisierul de configurare poate fi modificat folosind comandul zonecfg.Pentru a cunoaste in amanunt fiecare parametru a acestor tool-uri de administrare rog sa recurgeti la man pages.Pentru a intra in mod manual in fiecare zona , identificati path-ul unde a fost creata si veti putea ajunge direct in sistemul de fisiere a aceste zone [eclipse]# cd /export/home/zones/eclipse1 [eclipse]# ls dev lu root [eclipse]# cd root [eclipse]# ls bin export lib opt sbin usr dev home mnt platform system var etc kernel net proc tmp [eclipse]# Evident plecand din sistemul fizic se pot doar explora si modifica fisierele dintro anumita zona, nu pot fi insa rulate procese cu drepturile userilor din zona (nu este echivalent cu un shell de login in sistemul guest care a fost virtualizat).Pentru a face login in sistemul care a fost virtualizat zlogin sau oricare alt serviciussh instalat in acel sistem va functiona.Daca sunt intrebari in legatura cu subiectul nu ezitati sa le faceti.
-
- 1
-
- containers
- global
- (and 7 more)
-
In acest HowTo voi descrie pasii care trebuie facuti pentru configurarea retelei folosind o adresa ip statica intrun sistem Unix/Solaris. Majoritatea comenzilor care fac parte din smf pot fi folosite incepand cu versiunile 9,10,11 de Solaris In Unix totul este un fisier si aceasta regula sper ca multi au imprimat-o deja prin creier si precum stiti deja pentru a face orice fel de setari trebuie modificate fisiere pe care le putem defini fisiere de configurare.Datele stocate in aceste fisiere vor fi citite de catre sistem si executate.Pana aici sper sa aveti o idee clara despre cum functioneaza un sistem Unix in privinta fisierelor. Pentru a configura o interfata de retea cu un ip static vor trebui create cateva fisiere.Numele unei interfete de retea deriva din numele driverului care piloteaza interfata + numarul interfetei (0) fiind prima interfata (1) fiind a doua interfata.Datele necesare pentru a configura interfata de retea fiind: -Adresa ip (192.168.123.105) -Adresa de subnet + Netmask (192.168.123.0 255.255.255.0) -Un nume de host (eclipse) -Un gateway (192.168.123.254) -Unul sau mai multe nameservere (192.168.123.254) Se presupune ca ambientul unde se va face configurarea foloseste un router care are functia de gateway pentru a iesi pe internet. Se presupune ca driverul pentru interfata de retea este instalat si vine recunoscuta de catre sistem [eclipse]# dladm show-dev nfo0 link: unknown speed: 100 Mbps duplex: unknown Se presupune ca interfata de retea este deja in statul enabled ifconfig nfo0 plumb up Note: Aceste exemple le-am folosit pentru configurarea unui host intern din reteaua mea, adresele ip vor trebui schimbate in baza range-urile si claselor de ip interne pe care le aveti. Interfata de retea pe care o voi configura in exemplele urmatoare este nfo0 nfo fiind driverul pe care o piloteaza iar valoarea (0) fiind numarul interfetei(prima interfata de retea a acestui sistem) Note: O mica observatie ar fi faptul ca lo0 are tot valoarea 0 dar este prima interfata de loopback.E normal sa nu fie catalogata ca 1 deoarece nu are nici o treaba cu interfata fizica asadar nu este a doua interfata din sistem ci tot prima interfata dar nu fizica. Presupunem totusi faptul ca initial sistemul foloseste DHCP pentru a avea o adresa ip.In acest caz va exista in sistem urmatorul fisier /etc/dhcp.nfo0 Un fisier gol fara nici o data dar cu o valoare importanta deoarece existenta lui va face in asa fel incat agentul DHCP sa ruleze in sistem. Pentru solaris 10 se poate verifica acest lucru folosind comenzile smf svcs -a | grep -i agent disabled 0:37:32 svc:/application/management/common-agent-container-1: default Note: In cazul in care fisierul /etc/dhcp.nfo0 exista , va rula si common-agent-container asadar va fi online si nu disabled. Pentru a trece la o configurare statica va trebui eliminat acest fisier /etc/dhcp.nfo0 daca exista,mentionez faptul ca de default nu exista si ca interfata de retea trebuie configurata in oricecaz manual chiar daca in mod static sau dinamic. O data ce am stabilit si facut aceste verificari se poate incepe configurarea statica. Cum am mai spus aceasta procedura comporta configurarea unor fisiere sau mai bine zis introducerea unor date in cateva fisiere. Primul fisier care trebuie creat este fisierul interfetei de retea care va contine adresa de ip statica pe care o vom configura. echo "192.168.123.105" > /etc/hostname.nf0 Al doilea fisier este /etc/netmasks unde vom introduce urmatoarele date .Adresa subnetului si adresa netmask echo "192.168.123.0 255.255.255.0" >> /etc/netmasks Al treilea fisier care trebuie creat este /etc/defaultrouter care va detine gateway-ul echo "192.168.123.254" > /etc/defaultrouter Al patrulea fisier care vine creat este /etc/defaultdomain cu numele de host echo "eclipse" > /etc/defaultdomain Un alt fisier in care va fi polulat cu date este /etc/hosts echo "192.168.123.105 eclipse" >> /etc/hosts Vom specifica intrun fisier si serverurile dns pentru conexiune.Nameserver-ul poate fi adresa de gateway sau daca exista adresa unui nameserver divers echo "nameserver 192.168.123.254" > /etc/resolv.conf Ultimul fisier care trebuie configurat este /etc/nsswitch.conf si are o importanta foarte mare deoarece fara directiva corecta specificata in acest fisier nu veti reusi sa faceti name solving. In primul rand daca acest fisier nu exista in /etc/nsswitch.conf poate fi luata o copie din /etc/nsswitch.files Important insa este ca urmatoarea directiva sa fie specificata hosts: dns files De obice de default va fi doar hosts: files O data configurate aceste optiuni se poate face restart la network [eclipse]# svcs -a | grep physical online 13:50:12 svc:/network/physical:default [eclipse]# svcadm restart svc:/network/physical:default Un simplu ifconfig va demonstra faptul ca nu folosim un server DHCP pentru atribuirea unei adrese ip. [eclipse]# ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 nfo0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.123.105 netmask ffffff00 broadcast 192.168.123.255 ether 0:x:xx:xx:xx:xx Note: In momentul in care ip-ul vine atribuit de catre un server DHCP ,ifconfig va arata urmatorul output [eclipse]# ifconfig -a alo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 nfo0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,[COLOR="#FF0000"]DHCP[/COLOR],IPv4> mtu 1500 index 2 inet 192.168.123.105 netmask ffffff00 broadcast 192.168.123.255 ether x:x:xx:xx:xx:xx Se poate verifica si tabela de routing pentru a intelege mai bine daca totul a fost configurat bine. [eclipse]# netstat -rn Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- default 192.168.123.254 UG 1 225 192.168.123.0 192.168.123.105 U 1 15 nfo0 127.0.0.1 127.0.0.1 UH 1 64 lo0 Happy static internet navigation!!!
-
- 1
-
- host
- nameserver
- (and 4 more)
-
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
-
In acest topic/tutorial voi explica intrun mod tehnic dar in acelasi timp simplu de inteles pentru nivelul unui user structura disk-urilor in Solaris Voi simplifica totul in cateva optiuni: - Cum vine vazut un disk fizic (hard disk) de catre sistem - Cum vin create partitiile intrun disk la nivelul sistemului -Cum vine vazut un disk fizic de catre sistem Presupunem ca avem un hard disk care poate fi reprezentat in urmatorul fel: ----------------- - - - - -> Primul hard disk c1d0 - - ----------------- ----------------- - - - - -> Al doilea hard disk c1d1 - - ----------------- In solaris fiecarui disk ii vine atribuit un nume, asadar poate fi recunoscut de catre sistem in baza numelui pe care il poarta. c -> logical controller d -> disk number Avem doua discuri colegate la acelasi controller care are valoarea 1 si vine specificata de catre litera (c) , si numarul care ii vine atribuit fiecarui disk de catre litera (d) incepand de la 0. Deci 0 va fi primul disk colegat (de obicei este discul unde vine instalat sistemul) iar 1 va fi al doilea disk colegat la acest sistem Pentru a functiona discurile necesita sa fie formatate ,si au nevoie de o partitie. - Cum vin create partitiile intrun disk la nivelul sistemului Note: In sistemele X86 solaris va crea o singura partitie pe fiecare disk carei ii va atribui urmatorul id 0xbf. Structura disk-ului va fi modificata in felul urmator: c1d0 disk ----------------- -############## - -# 1partition # - aceasta partitie va mosteni id-ul 0xbf(Solaris) -############## - ----------------- Note: Intrun disk se pot crea pana la un maxim de 4 partitii In solaris fiecare partitie la randul ei vine impartita in "bucati" mai mici care vin chemate slice. In sistemele x86 o partitie poate contine un maxim de 10 slice Structura unui hard disk cu o singura partitie impartita in 10 slice: --------------------------------- -###############################- -# # # # # # # # # # #- -#0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #- -# # # # # # # # # # #- -###############################- --------------------------------- Note:Numerele pleaca de la 0 In fiecare slice se poate crea un filesystem Un slice este echivalent cu o partitie pentru solaris , aceeasi structura vine definita si in sistemele FreeBSD. Partitiile (slice) 2,8,9 vin rezervate iar restul pot fi folosite pentru a crea diverse sisteme de fisiere sau chiar o structura de Logical Volume. ############################################################################ 2 - reprezinta un slice de bakup (in teorie numele are doar un tag de backup dar reprezinta dimenisunea totala a disk-ului) 8 - reprezinta sectorul de boot al sistemului 9 - reprezinta un slice altenativ cu doar 2 cilindri ############################################################################ 0 - de obice contine filesyste-ul root atunci cand vine instalat sistemul dar poate fi creat oricare alt filesystem sau chiar introdus intrun volum logic 1,3,4,5,6,7 pot fi folosite pentru orice ############################################################################ Note: Toata informatia in legatura cu structura acestor partitii chemat slice vine stocata in (Volume Table Of Contents) chemata VTOC VTOC ocupa primul si al doilea sector din partitia de boot Exista un tool care extrage informatii in legatura cu geometria discului si a partitiilor.Se numeste prtvtoc si are o pagina de manual care poate fi accesata cu man prtvtoc. Exemplu partitii slice de default dupa instalarea unui sistem: Part Tag Flag Cylinders Size Blocks 0 root wm 3 - 762 5.82GB (760/0/0) 12209400 1 swap wu 763 - 838 596.16MB (76/0/0) 1220940 2 backup wm 0 - 1236 9.48GB (1237/0/0) 19872405 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 home wm 839 - 1236 3.05GB (398/0/0) 6393870 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 alternates wu 1 - 2 15.69MB (2/0/0) 32130 - prima coloana detine numerele partitiilor chemate slice - a doua coloana poate defini numele partitiilor ,(acestea pot fi: root,swap, usr, stand, var, home, sau unassigned ) - a treia coloana wm -> write, mountable wu -> write, unmountable - in a patra coloana vin specificate valorile cilindrilor pentru fiecare partitie - in ultimele coloane vine specificata dimensiunea in KB,MB,GB si block size Recapituland am spus ca primul hard disk vine identificat de catre sistem ca fiind c1d0 c -> logical controller d -> disk number Ei bine fiecare slice vine identificat de catre litera (s) care detine valoarea partitiei chemata slice .Deci avand in vedere faptul ca primul slice si anume 0 contine filesyste-ul root vom avea urmatorul path : /dev/dsk/c1d0s0 Iar spre exemplu home vine inpartitia numarul 7 deci vom avea ca path /dev/dsk/c1d0s7 ############################## Pentru filesystemul root avem: c1 -> logical controller d0 -> primul disk s0 -> primul slice ############################## ############################## Pentru filesystem-ul home avem: c1 -> logical controller d0 -> primul disk s7 -> al saptelea slice ############################## Sa luam un alt exemplu: Presupunem faptul ca vom exporta opt pe prima partitie pe al doilea disk ############################## Pentru filesystem-ul opt avem: c1 -> logical controller d1 -> al doilea disk s0 -> primul slice ############################## Un df /opt ne va demonstra acest lucru /opt (/dev/dsk/c1d1s0 ): 6076556 blocks 504179 files In aceste exemple am folost disk-uri IDE in schimb intrun SCSI device vom mai avea o litera si anume (t) Un simplu exemplu pentru structura SCSI: ################################ c0t0d0s0 c0 -> primul logical controller t0 -> primul logical unit number d0 -> primul disk s0 -> primul slice ################################ Pentru a modifica partitiile chemate slice se poate folosi un tool chemat format, exista o pagina de manual si pentru acest tool man format care spune " format - disk partitioning and maintenance utility" Note: Spre exemplu cand vine introdus un nou disk de default sistemul nu il va recunoaste , aici poate veni in ajutor un alt tool cmd-line si anume " devfsadmd - administration command for /dev" O simpla sintaxa pentru a scana sistemul in cautarea disk-urilor in mode verbose poate fi urmatoarea: devfsadm -vC O data ce disk-urile vin gasite , pot fi administrate folosind format Exemplu extras din format: ###################################################### AVAILABLE DISK SELECTIONS: 0. c1d0 <DEFAULT cyl 1237 alt 2 hd 255 sec 63> /pci@0,0/pci-ide@9/ide@1/cmdk@0,0 1. c1d1 <DEFAULT cyl 3048 alt 2 hd 128 sec 32> /pci@0,0/pci-ide@9/ide@1/cmdk@1,0 ###################################################### Aici avem 2 discuri IDE , un master si un slave , master fiind disk-ul de boot.Format are incluse diverse opriuni printe care (partition) cu care se pot aloca partitiile chemate slice si fdisk pentru a crea partitiile pentru disk inainte de a crea partitiile slice. Intrun ambient mic pot fi 2 discuri , exemplele precedente au fost extrase din sistemul meu solaris , dar intrun corporation pot fi sute de discuri structurate intrun StorageBox Un exemplu: /dev/dsk/c1t0d0p0 /dev/dsk/c1t0d0p1 /dev/dsk/c1t0d0p2 /dev/dsk/c1t0d0p3 /dev/dsk/c1t0d0p4 /dev/dsk/c1t0d0s0 /dev/dsk/c1t0d0s1 ................. ................. Note: Fiecare dispozitiv in /dev/dsk este defapt un link simbolic catre /devices ################################################################### ls -ltr /dev/dsk/c1d0s0 /dev/dsk/c1d0s0 -> ../../devices/pci@0,0/pci-ide@9/ide@1/cmdk@0,0:a ################################################################### Fiecare dispozitiv in /dev/dsk/ are o instanta in /dev/rdsk Cele sub /dev/dsk/ sunt dispozitive de random-access aici se pot crea filesystem-urile Cele sub /dev/rdsk sunt dispozitive raw utilizate pentru functii de access low-level. O data ce vin alocate spatiile in partitiile chemate slice folosind format se poate crea un filesystem pentru fiecare partitie folosind comandul newfs "newfs - construct a UFS file system" Sintaxa este foarte simpla Presupunem ca am creat urmatoarele slice 3 si 4 /dev/rdsk/c1d1s3 - 512 mb /dev/rdsk/c1d1s4 - 512 mb Vom crea un file system pe fiecare si vom face mount in testslice3 si testslice4 newfs /dev/rdsk/c1d1s3 newfs /dev/rdsk/c1d1s4 Note:Atentie newfs va distruge toate datele, iar daca vine folosit intrun path gresit poate distruge sistemul. Pentru a face mount mount /dev/rdsk/c1d1s3 testslice3 && mount /dev/rdsk/c1d1s3 testslice4 Pentru a face in asa fel incat sa faca mount automat la reboot va trebui modificat fisierul /etc/vfstab. Download paper wget http://sprunge.us/TiQS -O solaris_disks.txt