Administrowanie systemami komputerowymi
2
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
m
m
e
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:
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]
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
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:
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:
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