background image

Administrowanie systemami komputerowymi 

Temat: 

Pamięci masowe 

Zadania: 

Data: 

Autor: 

Paweł Kopeć 

1  2  3  4  5  6  7  8  9  10  11  12  13 

14 

20.10.2014 

Autor: 

Adrian Makuch 

m  e  e  m  e  e  m  e  m  m 

14:30-16:45 

 

1.

 

Master Boot Record (MBR)  

Zadanie polegało na skopiowaniu MBR z dysku do pliku, a później oglądnięcie jego zawartości, za 

pomocą programu xxd. Program ten wyświetla nam dane binarne w sposób przyjazny do analizowania. 
Wykonanie takiej kopii jest zalecane. Dzięki niej będziemy mogli odzyskać nasze dane, w przypadku 
awarii MBR. Należy jednak pamiętać, że w przypadku posiadania partycji rozszerzonych na naszym 
dysku, aby odzyskać dane z nich, będziemy potrzebowali także ich MBR. Dlatego lepszym sposobem 
jest wykonanie kopii poleceniem: 
 

sfdisk –d /dev/sda > partycje.bak 

 

 

Z powyższego screenu można rozpoznać że na dysku są 2 partycje podstawowe. Pierwsza jest typu 

83-linux a druga 82-SWAP. Oprócz tego na dysku jest partycja rozszerzona rozpoczynająca się w 
sektorze 35155968. Po przeglądnięciu wszystkich partycji które są zawarte w partycji rozszerzonej 
doliczyliśmy się 14 partycji na całym dysku. 

 

2.

 

Tworzenie i formatowanie dysków wirtualnych 

W tym zadaniu mieliśmy utworzyć dyski wirtualne, które potem będziemy wykorzystywać w 

kolejnych zadaniach. Pojedynczy dysk tworzony był serią poleceń: 

 

dd if=/dev/zero of=dysk0.img bs=1M count=2000 

 

losetup /dev/loop0 dysk0.img  
mkfs.ext2 /dev/loop0 

     Pierwsze z nich tworzy nam pusty plik o rozmiarze 2 gigabajtów, następne wiąże utworzony przez 
nas plik z urządzeniem /dev/loop0, a ostatnie formatuje to urządzenie(dysk) do zadanego przez nas 
systemu plików. 

 

3.

 

Montowanie dysków i szybkość działania systemów plików 
Ć

wiczenie polegało na porównaniu czasów odczytu i zapisu danych na dyskach z różnymi 

systemami plikowymi. Dla usprawnienia procesu testowania, korzystaliśmy z następującej komendy: 

time bonnie -u nobody -n 30 -s 0 -d dysk0/ 

Czasy odczytów przedstawione są w tabeli: 
                   Typ 
czas 

Ext2 

Ext3 

xfs 

reiser 

Real 

17.363s 

2.999s 

6.554s 

4.334s 

User 

0.164s 

0.048s 

0.128s 

0.064s 

sys 

16.681s 

2.324s 

5.040s 

4.000s 

Z porównania czasów można wywnioskować że w nowszej wersji systemu ext3 znacząco została 
poprawiona obsługa zapisu nowych plików. 
 

4.

 

RAID poziomu 0, 1, 5 i 6 

Ć

wiczenie polegało na testowaniu wydajności zapisu i odczytu różnych konfiguracji raid. 

Macierz RAID poziomu 0 tworzy się poleceniem: 
# mdadm --create --verbose /dev/md/0 --level=0 --raid-disks=2 /dev/loop0 /dev/loop1 
gdzie /dev/md/0 jest nazwą urządzenia za którym będzie widoczna macierz, level=0 to poziom 
macierzy a następne opcje oznaczają ile dysków wchodzi w skład oraz jakie to są urządzenia. 
Oczywiście w przypadku macierzy RAID 5 i ^6 były wykorzystywane odpowiednio 3 i 4 dyski. 
Czasy przedstawia tabela: 

 

background image

                   Typ  
Czasy 

RAID 0 

RAID 1 

RAID 5 

RAID 6 

Real 

2.636s 

0.03 

0.05 

0.03 

User 

0.044s 

2.37 

2.48 

2.37 

sys 

2.296s 

04.42 

04.91 

04.42 

Jak można się było spodziewać czasy systemowe wykonania zapisu/odczytu w przypadku 

raidów korzystających z mirroringu są wyższe niż rzeczywiste. Ma to związek z tym, że przy zapisie 
dane muszą być skopiowane na pozostałe dyski, oraz w przypadku raidu 5 i 6 muszą zostać 
obliczone bity parzystości. Dlatego proces zajmuje więcej czasu procesora, niż zauważa to 
użytkownik. 

 

5.

 

Symulacja uszkodzenia macierzy RAID 6 
W tym zadaniu wywoływaliśmy uszkodzenie jednego z dysków składowych macierzy RAID 6, po 
czym obserwowaliśmy proces odbudowy takiej macierzy, po podłączeniu nowego dysku. 

 

Obserwując informacje zwracane przez polecenie cat /proc/mdstat widzimy, że system wykrył 
uszkodzenie jednego z dysków macierzy(flaga (F) przy jednym z dysków). 

 

Po podłączeniu dysku można było zaobserwować, że następuje odzyskiwanie danych i ponowny ich 
zapis na nowym dysku(postępujący wskaźnik recovery). 
 

6.

 

Zakończenie ćwiczeń z RAID 
Ć

wiczenie polegało na usunięciu utworzonych do tej pory dysków poleceniem 

losetup –d /dev/loop0 
Oraz analogicznymi dla pozostałych dysków. 

 

7.

 

Tworzenie dysków wirtualnych 

Ć

wiczenie polegało na utworzeniu trzech dysków wirtualnych, które będą wykorzystywane 

w następnych ćwiczeniach w partycji LVM. Podobnie jak w przypadku zadań z raid-em będziemy 
korzystać z plików imitujących dyski, podpiętych do urządzeń /dev/loop 

 

8.

 

Utworzenie woluminu fizycznego PV 
Fizyczne woluminy utworzyliśmy poleceniem  
pvcreate /dev/loop0 /dev/loop1 /dev/loop2 
Następnie informację o utworzonym woluminie możemy uzyskać poleceniem pvscan: 

 

 

9.

 

Utworzenie grupy woluminów i woluminów logicznych 
Zadanie polegało na utworzeniu grupy woluminów korzystając z polecenia vgcreate. Zaczęliśmy od 
utworzenia grupy złożonej z dwóch woluminów fizycznych, do której później dodaliśmy trzeci 
wolumin fizyczny. 

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md0 : active raid6 loop3[3](F) loop2[2] loop1[1] loop0[0] 
4092928 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [UUU_] 
resync = 87.9% (1799948/2046464) finish=0.0min speed=64283K/sec 

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md0 : active raid6 loop3[4] loop2[2] loop1[1] loop0[0] 
4092928 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [UUU_] 
recovery = 82.4% (1687328/2046464) finish=0.1min speed=52729K/sec 

  PV /dev/loop0                      lvm2 [80,00 MiB] 
  PV /dev/loop1                      lvm2 [80,00 MiB] 
  PV /dev/loop2                      lvm2 [80,00 MiB] 
  Total: 3 [240,00 MiB] / in use: 0 [0   ] / in no VG: 3 [240,00 MiB] 

background image

 

Następnie w utworzonej grupie woluminów utworzyliśmy trzy woluminy logiczne. Pierwsze dwa 
miały rozmiar po 20 mb, a trzeci miał rozmiar 60 mb. Pierwszy z woluminów podczas tworzenia ma 
podane, aby został umiejscowiony w /dev/loop0. Dwa pozostałe, przez brak podania miejca, zostaną 
rozłożone automatycznie(zajmą wolną przestrzeń). 

 

Następnie na każdym z woluminów logicznych utworzyliśmy system plików ext3 z rozmiarem 
bloku 1024 B, oraz plik z danymi o rozmiarze 2 MB. 
 

10.

 

Zmiana rozmiaru woluminu logicznego 

W tym zadaniu zmienialiśmy rozmiary woluminów logicznych. Wolumin /dev/grupa/1v1 

został zwiększony o 20MB. Po wykonaniu polecenia 

lvextend –L+20M /dev/grupa/1v1 

zmiana nie została zauważona. Stała się ona widoczna dopiero po wykonaniu 

resize2fs /dev/grupa/1v1 

czyli zmianie obszaru zajmowanego przez system plików. Zostaliśmy przy tym poinformowani, że 
dokonywane przez nas zmiany zostaną wykonane „w locie”, ponieważ system plików jest 
zamontowany. Gdy podobną operację próbowaliśmy wykonać na partycji /dev/grupa/1v2 dostaliśmy 
informację, że nie możemy wykonać operacji, gdyż nie mamy wystarczającej liczby miejsca na 
jednym z fizycznych woluminów. Ma to związek z tym, że partycja /dev/grupa/1v2 jest 
równomiernie rozkładana na 3 woluminach. 

W przypadku gdy zmianą jaką chcemy dokonać jest zmniejszenie rozmiaru woluminu, 

musimy pamiętać, aby najpierw zmniejszyć rozmiar systemu plików, a dopiero potem zmienić 
rozmiar woluminu. System przy zmienianiu rozmiaru woluminu sam za nas zaokrąglił rozmiar 
zmniejszenia do takiego, jaki jest wymagany przez to, że nasza partycja jest dzielona pomiędzy trzy 
woluminy fizyczne. Przy zmianie rozmiaru systemu plików musimy o tym jednak pamiętać sami. 

 

11.

 

Woluminy logiczne typu „snapshot” 

Ć

wiczenie polegało na zapoznaniu się z możliwością tworzenia obrazów własnego dysku 

wykorzystywanych jako kopie zapasowe. Dzięki temu możemy w prosty sposób wykonać kopię 
któregoś z woluminów poleceniem 

Lvcreate –L10M –s –n backup /dev/grupa/lvol0 

Zapisuje ono obecny stan woluminu. Wszystkie późniejsze zmiany które nastąpią na oryginalnym 
dysku nie zostaną dołączone do kopii, co widać na poniższym zrzucie: 

root@debian:~/lab-pamieci/lvm# pvscan 
  PV /dev/loop0   VG grupa           lvm2 [76,00 MiB / 76,00 MiB free] 
  PV /dev/loop1   VG grupa           lvm2 [76,00 MiB / 76,00 MiB free] 
  PV /dev/loop2                      lvm2 [80,00 MiB] 
  Total: 3 [232,00 MiB] / in use: 2 [152,00 MiB] / in no VG: 1 [80,00 MiB] 
 
root@debian:~/lab-pamieci/lvm# vgextend grupa /dev/loop2 
  Volume group "grupa" successfully extended 
 
root@debian:~/lab-pamieci/lvm# pvscan 
  PV /dev/loop0   VG grupa   lvm2 [76,00 MiB / 76,00 MiB free] 
  PV /dev/loop1   VG grupa   lvm2 [76,00 MiB / 76,00 MiB free] 
  PV /dev/loop2   VG grupa   lvm2 [76,00 MiB / 76,00 MiB free] 
  Total: 3 [228,00 MiB] / in use: 3 [228,00 MiB] / in no VG: 0 [0   ] 

root@debian:~/lab-pamieci/lvm# lvcreate -L20M grupa /dev/loop0 
root@debian:~/lab-pamieci/lvm# lvcreate -L20M -nlvl grupa 
root@debian:~/lab-pamieci/lvm# lvcreate -L60M -nlv2 -i 3 grupa 
 
root@debian:~/lab-pamieci/lvm# lvscan 
  ACTIVE            '/dev/grupa/lvol0' [20,00 MiB] inherit 
  ACTIVE            '/dev/grupa/lvl' [20,00 MiB] inherit 
  ACTIVE            '/dev/grupa/lv2' [60,00 MiB] inherit 

background image

 

 

12.

 

Manipulowanie grupami VG 
Zadanie miało na celu zapoznanie się z zarządzaniem grupami VG. Wykonując kolejne ćwiczenia 
mogliśmy zaobserwować, że całkowite usunięcie fizycznego woluminu z grupy możliwe jest 
dopiero jeżeli nie istnieje żaden logiczny wolumin, który korzysta z zasobów woluminu fizycznego. 
W tym celu usunęliśmy woluminy /dev/grupa/lvol0 oraz /dev/grupa/1v2 oraz przenieśliśmy dane 
woluminu /dev/grupa/1v1 z /dev/loop0 na inne woluminy fizyczne należące do VG „grupa”. Dopiero 
po tej operacji mogliśmy usunąć wolumin /dev/loop0 z grupy „grupa”.  

 

Dopiero po wykonaniu tych operacji mogliśmy utworzyć nową grupę na woluminie /dev/loop0, oraz 
nowy wolumin logiczny w grupie „grupa2”. 
 

13.

 

Zakończenie ćwiczeń z LVM 

Ć

wiczenie miało na celu usunięcie wszelkich zmian jakie dokonaliśmy wykonując ćwiczenia z LVM, 

a wiec odmontowanie partycji, usunięcie woluminów logicznych, usunięcie grup VG oraz 
zwolnienie urządzeń /dev/loop. 
 

14.

 

GUID Partition Table (GPT) 
Aby wykonać to zadanie, na początku należy stworzyć sobie nowy dysk twardy o rozmiarze 2 GB. 
Po uruchomieniu systemu z nowo zamontowanym dyskiem, należy poleceniem fdisk –l odnaleźć 
nazwę urządzenia, za którym system rozpoznaje nasz nowy dysk. Partycjonowanie dysku układem 
GPT wykonamy programem parted. 

A.

 

Uruchomienie programu parted:  

background image

parted /dev/sdb 

B.

 

Utworzenie nowej etykiety dysku oraz tablicy partycji gpt: mklabel gpt 

C.

 

Utworzenie trzech partycji,  
Pierwsza – partyca rozruchowa EFI o rozmiarze 32 MB 

mkpart primary fat32 0 32 

 

 

Druga – partycja wymiany o rozmiarze 512 MB 

 

 

 

mkpart primary linux-swap 32 544 

 

 

Trzecia – partycja główna systemu wypełniająca resztę dysku 

 

 

 

mkpart primary ext3 544 2147 

D.

 

Wyświetlenie utworzonego układu partycji: 

Print 

E.

 

Wyjście z parted i założenie systemu plików na partycjach 

quit 
mkdosfs /dev/sdb1 
mke2fs –j /dev/sdb3 
mkswap /dev/sdb2 

F.

 

Pobranie pierwszych 512 bajtów z dysku, dla zaobserwowania, że gpt, aby zachować 
kompatybilność z systemem mbr pozostawia pierwsze 512 bajtów nie ruszone. 

dd if=/dev/sdb of=mbr bs=512 count=1 
xxd mbr