Vom rula o masină virtuală în cloud-ul facultății. Pentru a porni o astfel de masină urmăriți tutorialul de la această adresă. Când creați instanța de mașină virtuală (în fereastra “Launch instance”):
Availability zone să alegeți CI sau hp.Instance Boot Source să alegeți Boot from Image.Image Name (apărută după ce efectuați pasul de mai sus) să alegeți imaginea SAISP Template v1.
Size alegeti m1.medium sau c1.medium
Pentru a pregăti configurația de laborator, pe mașina virtuală folosiți comenzile următoare din contul utilizatorului student:
student@mjolnir:~/saisp$ cd saisp/ student@mjolnir:~/saisp$ wget --user=user-curs --ask-password http://repository.grid.pub.ro/cs/saisp/laboratoare/lab-04.zip student@mjolnir:~/saisp$ unzip lab-04.zip
În urma dezarhivării rezultă mai multe fișiere imagine KVM și scripturi de pornire a mașinilor virtuale:
base.qcow2 este deja în directorul saisp/ și este baza pentru celelalte.lvm-main.qcow2 este obținut din base.qcow2 și este folosit pentru pornirea unei configurații pentru LVM.lvm-disk1.img și lvm-disk2 sunt fișiere ce reprezintă discuri suplimentare folosite în configurația pentru LVM.lvm-start-kvm este un script care va porni mașina virtuală KVM pentru configurația LVM.raid-main.qcow2 este obținut din base.qcow2 și este folosit pentru pornirea unei configurații pentru software RAID.raid-disk1.img, raid-disk2 și raid-disk3 sunt fișiere ce reprezintă discuri suplimentare folosite în configurația pentru LVM.raid-start-kvm este un script care va porni mașina virtuală KVM pentru configurația software RAID.Vom porni după cum este necesar câte una dintre cele două mașini virtuale KVM. Pentru a porni mașina virtuală pentru LVM vom folosi comanda
student@mjolnir:~/saisp$ ./lvm-start-kvm
La fel, pentru a porni mașina virtuală pentru software RAID vom folosi comanda
student@mjolnir:~/saisp$ ./raid-start-kvm
După pornirea mașinii virtuale KVM, o accesa prin folosirea SSH către adresa IP aferentă. Vom folosi comanda
student@mjolnir:~/saisp$ ssh -l root 192.168.0.2
Dorim să investigăm o configurație existentă LVM. Pentru aceasta pornim mașina virtuală aferentă KVM:
student@mjolnir:~/saisp$ ./lvm-start-kvm
și ne conectăm peste SSH pentru a lucra în mașina virtuală:
student@mjolnir:~/saisp$ ssh -l root 192.168.0.2
Mașina virtuală conține o configurație LVM; pachetul lvm2, necesar configurării, este instalat. Pentru a o investiga listăm volumele fizice, grupurile de volume și volumele logice folosind, respectiv comenzile pvs, vgs, lvs:
root@lvm:~# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 azeroth lvm2 a-- 1020.00m 0 /dev/sdc1 azeroth lvm2 a-- 1020.00m 0 root@lvm:~# vgs VG #PV #LV #SN Attr VSize VFree azeroth 2 3 0 wz--n- 1.99g 0 root@lvm:~# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert arathor azeroth -wi-a----- 700.00m dalaran azeroth -wi-a----- 840.00m lordaeron azeroth -wi-a----- 500.00m
Detalii aflăm folosind comenzile pvdisplay, vgdisplay și lvdisplay:
root@lvm:~# pvdisplay --- Physical volume --- PV Name /dev/sdb1 [...] --- Physical volume --- PV Name /dev/sdc1 [...] root@lvm:~# vgdisplay --- Volume group --- VG Name azeroth [...] root@lvm:~# lvdisplay --- Logical volume --- LV Path /dev/azeroth/lordaeron [...] --- Logical volume --- LV Path /dev/azeroth/arathor [...] --- Logical volume --- LV Path /dev/azeroth/dalaran [...]
Observăm că în cadrul infrastructurii LVM există două volume fizice (physical volumes): /dev/sdb1 și /dev/sdc1. Aceste două volume fizice sunt angrenate într-un grup de volume denumit azeroth, care este partiționat în trei volume logice denumite arathor, dalaran și lordaeron.
Căile către volumele logice sunt, respectiv /dev/azeroth/arathor, /dev/azeroth/dalaran și /dev/azeroth/lordaeron. Calea către fiecare volum cuprinde numele grupului de volume și apoi numele volumului logic. Acestea sunt, de fapt, link-uri simbolice către fișiere de tip dispozitiv direct din /dev:
root@lvm:~# ls -l /dev/azeroth/lordaeron lrwxrwxrwx 1 root root 7 Mar 16 16:57 /dev/azeroth/lordaeron -> ../dm-0
Mai avem încă două partiții fizice pe care le putem folosi: /dev/sdb2 și /dev/sdc2. Le vom folosi pentru a crea un nou grup de volum și apoi noi volume logice.
Vom crea grupul de volume kalimdor și volumele logice durotar, ashenvale și tanaris cu dimensiunile respectiv de 1G, 500M, 500M.
Pentru început marcăm volumele fizice ca viitoare componente LVM:
root@lvm:~# pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created root@lvm:~# pvcreate /dev/sdc2 Physical volume "/dev/sdc2" successfully created
Investigăm crearea acestora folosind comenzile pvs și pvdisplay:
root@lvm:~# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 azeroth lvm2 a-- 1020.00m 0 /dev/sdb2 lvm2 a-- 1.00g 1.00g /dev/sdc1 azeroth lvm2 a-- 1020.00m 0 /dev/sdc2 lvm2 a-- 1.00g 1.00g root@lvm:~# pvdisplay [...]
Observăm că, pe moment, volumele logice /dev/sdb2 și /dev/sdc2 nu fac parte din nici un volum.
Acum creăm volumul kalimdor din cele două volume fizice:
root@lvm:~# vgcreate kalimdor /dev/sdb2 /dev/sdc2 Volume group "kalimdor" successfully created
Urmărim configurația grupului de volume nou creat folosind comenzile vgs, respectiv vgdisplay:
root@lvm:~# vgs kalimdor VG #PV #LV #SN Attr VSize VFree kalimdor 2 0 0 wz--n- 1.99g 1.99g root@lvm:~# vgdisplay kalimdor --- Volume group --- VG Name kalimdor
Ulterior creăm și cele trei volume logice:
root@lvm:~# lvcreate -n durotar -L 1G kalimdor Logical volume "durotar" created root@lvm:~# lvcreate -n ashenvale -L 500m kalimdor Logical volume "ashenvale" created root@lvm:~# lvcreate -n tanaris -L 500m kalimdor Logical volume "tanaris" created
Apoi folosim comenzile lvs și lvdisplay pentru a afișa informații despre volumele logice create:
root@lvm:~# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert arathor azeroth -wi-a----- 700.00m dalaran azeroth -wi-a----- 840.00m lordaeron azeroth -wi-a----- 500.00m ashenvale kalimdor -wi-a----- 500.00m durotar kalimdor -wi-a----- 1.00g tanaris kalimdor -wi-a----- 500.00m root@lvm:~# lvdisplay [...]
În final am folosit patru partiții fizice (/dev/sdb1, /dev/sdc1, /dev/sdb2, /dev/sdc2) pentru a crea două grupuri de volume (azeroth și kalimdor) și trei volume logice pe fiecare grup de volume.
Dorim să renunțăm la al doilea grup de volume (kalimdor). Ștergeți acest grup de volume și apoi extindeți grupul de volume azeroth pentru a cuprinde parțiile fizice /dev/sdb2 și /dev/sdc2.
vgextend.
Extindeți dimensiunile volumelor logice de pe grupul azeroth pentru a acoperi întreaga dimensiune a acestuia.
lvextend.
Dorim să investigăm o configurație existentă RAID. Pentru aceasta pornim mașina virtuală aferentă KVM:
student@mjolnir:~/saisp$ ./raid-start-kvm
și ne conectăm peste SSH pentru a lucra în mașina virtuală:
student@mjolnir:~/saisp$ ssh -l root 192.168.0.2
Mașina virtuală conține o configurație RAID; pachetul mdadm, necesar configurării, este instalat. Pentru a o investiga listăm partițiile RAID aferente urmărim fișierul /proc/mdstat:
root@raid:~# cat /proc/mdstat Personalities : [raid0] md0 : active raid0 sdd1[2] sdc1[1] sdb1[0] 3139584 blocks super 1.2 512k chunks unused devices: <none>
Apoi folosimd comanda mdadm cu opțiunile aferent:
root@raid:~# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sun Mar 16 19:40:32 2014 Raid Level : raid0 Array Size : 3139584 (2.99 GiB 3.21 GB) Raid Devices : 3 Total Devices : 3 [...] Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 root@raid:~# mdadm --examine /dev/sdb1 [...] root@raid:~# mdadm --examine /dev/sdc1 [...] root@raid:~# mdadm --examine /dev/sdd1 [...]
Avem așadar în array-ul software RAID (/dev/md0) care se bazează pe o trei partiții fizice (/dev/sdb1, /dev/sdc1, /dev/sdd1). Tipul RAID folosit este raid0.
Ne propunem să mai facem, temporar, un array RAID0 care conține două partiții fizice; array-ul se va numi /dev/md1 și va conține partițiile /dev/sdb2 și /dev/sdc2. Ulterior vom șterge configurația.
Creăm array-ul de tip RAID0 conținând cele două partiții:
root@raid:~# mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdb2 /dev/sdc2 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.
Urmărim configurația creată prin intermediul fișierului /proc/mdstat:
root@raid:~# cat /proc/mdstat Personalities : [raid0] md1 : active raid0 sdc2[1] sdb2[0] 2095104 blocks super 1.2 512k chunks md0 : active raid0 sdb1[0] sdd1[2] sdc1[1] 3139584 blocks super 1.2 512k chunks unused devices: <none>
Array-ul /dev/md1 este un array de tip RAID0.
Ca să revenim în configurația inițială, vom șterge array-ul și vom anula configurația de pe cele două partiții folosind comenzile de mai jos:
root@raid:~# mdadm --stop /dev/md1 mdadm: stopped /dev/md1 root@raid:~# mdadm --zero-superblock /dev/sdb2 root@raid:~# mdadm --zero-superblock /dev/sdc2
În acest moment array-ul a fost dezactivat și putem folosi partițiile /dev/sdb2 și /dev/sdc2.
Ne propunem să creăm un array RAID5 numit /dev/md2. Folosiți partițiile /dev/sdb2, /dev/sdc2 și /dev/sdd2 pentru a realiza acest lucru.
root@raid:~# cat /proc/mdstat
Simulați căderea partiției /dev/sdb2 din array-ul RAID5 /dev/md2. Apoi refaceți array-ul.
--fail și --remove pentru a dezactiva o partiție. Apoi folosiți opțiunea -add pentru a readăuga partiția în array.
Peste cele două array-uri RAID /dev/md0 și /dev/md2 contruiți un grup de volume LVM. Peste grupul de volume construiți patru volume logice. Formatați primele două volum logice create cu ext4 și montați-le în subdirectoare din /mnt.
lvm2 este instalat, necesar pentru configurarea LVM.
Vrem să criptăm un modul LVM folosind LUKS (Linux Unified Key System). Vom folosi al treilea volum logic creat anterior.
cryptsetup, necesar acestui exercițiu este instalat.
Pentru început formatăm volumele cu suport de criptare:
root@raid:~# cryptsetup -v luksFormat /dev/antagarich/tatalia WARNING! ======== This will overwrite data on /dev/antagarich/tatalia irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase: Command successful.
Acolo unde se cere parolă introduceți parola corespunzătoare.
Apoi “deschidem” partiția și furnizăm parola:
root@raid:~# cryptsetup luksOpen /dev/antagarich/tatalia crypto-tatalia Enter passphrase for /dev/antagarich/tatalia:
Acum avem creat dispozitivul /dev/mapper/crypto-tatalia pe care îl putem folosi. Formatăm dispozitivul cu ext4:
root@raid:~# mkfs.ext4 /dev/mapper/crypto-tatalia
Montăm dispozitivul în /mnt/crypto-tatalia:
root@raid:~# mkdir /mnt/crypto-tatalia root@raid:~# mount /dev/mapper/crypto-tatalia /mnt/crypto-tatalia root@raid:~# ls /mnt/crypto-tatalia lost+found
Ca să încheiem folosirea dispozitivului, întâi îl vom demonta:
root@raid:~# umount /mnt/crypto-tatalia
iar apoi vom “închide” partiția. O nouă deschidere va necesita reintroducerea parolei:
root@raid:~# cryptsetup luksClose crypto-tatalia
Aplicați pașii de mai sus pentru a cripta în mod similar al patrulea volum logic.
Configurați fișierele /etc/fstab și /etc/crypttab astfel încât cele două volume logice LVM criptate anterior să fie montate la pornirea sistemului.
Al patrulea (ultimul) argument din fișierul /etc/crypttab trebuie să fie șirul luks.