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
.