Ćwiczenie 5
Temat:
Obsługa dysków,
archiwizacja danych
i zadania cykliczne
Cel ćwiczenia:
Celem ćwiczenia jest zapoznanie studenta ze mechanizmem obsługi dysków
twardych w systemie Linux, a w szczególności z tworzeniem partycji,
formatowaniem systemu plików oraz montowaniem partycji. Student w trakcie
ćwiczenia zapozna się także z metodami archiwizacji danych, metodami
synchronizacji katalogów, a także nauczy się uruchamiania programów
cyklicznie w określonym czasie według zaplanowanego harmonogramu.
66
Obsługa dysków, archiwizacja danych i zadania cykliczne
Dyski w systemie Linux
Dyski w systemie Linux tak jak inne urządzenia reprezentowane są przez odpowiednie pliki w
katalogu /dev. Nazwa dysku w systemie Linux składa się z trzech członów. Na nazwę składają
się:
• interfejs dysku, np:
o hd – dla dysków z interfejsem ATA
o sd – dla dysków z interfejsem serial ATA (SATA)
• litera reprezentująca kolejny dysk, np.: a, b, c
• cyfra reprezentująca kolejne partycje dysku, np.: 1,2,3
Tak więc pierwszy dysk (cały dysk, niezależnie od partycji) o interfejsie sata będzie
reprezentowany przez plik:
/dev/sda
Natomiast pierwsza partycja tego dysku będzie reprezentowana przez plik:
/dev/sda1
Drugi dysk o interfejsie sata będzie reprezentowany przez plik:
/dev/sdb
a jego pierwsza partycja reprezentowana będzie przez plik:
/dev/sdb1
Napędy optyczne najczęściej reprezentowane są przez pliki które posiadają w nazwie „cd”,
np:
•
/dev/cdrom
•
/dev/acd0
natomiast wszelkie urządzenia magazynujące (dyski usb, pendrive) najczęściej są
rozpoznawane jako kolejne dyski twarde, np.: sdc1, sdd1 itd. Każdorazowe podłączenie
każdego urządzenia USB jest zapisywane w pliku logów:
/var/log/messages
67
Obsługa dysków, archiwizacja danych i zadania cykliczne
Wyświetlając kilka ostatnich linii tego pliku, np. za pomocą polecenia tail:
tail -n 5 /var/log/messages
można upewnić się, jaki plik będzie reprezentował urządzenie w systemie:
UWAGA! Powyższa nomenklatura dotycząca nazewnictwa dysków twardych jest prawidłowa
w większości systemów Linux. Istnieją jednak dystrybucje, w których nazewnictwo różni się
od wyżej przedstawionych przykładów.
Edycja tablicy partycji
Najpopularniejszym programem do edycji tablicy partycji dysku twardego dostępnym
w większości dystrybucji systemu Linux jest program fdisk. Program pozawala na tworzenie
partycji (podstawowych i rozszerzonych) oraz przypisywanie im różnych parametrów, takich
jak informacja o systemie plików danej partycji czy informacja o tym, że dana partycja jest
partycją rozruchową. W celu sprawdzenia dostępności programu fdisk oraz jego wersji
wydać należy polecenie:
fdisk -v
Program fdisk działa w dwóch trybach. Z pewnymi flagami jego działanie kończy się po
wywołaniu jednego polecenia, natomiast wywołane bez flag, a jedynie ze ścieżką do dysku
uruchamia program w trybie interaktywnego menu. Aby wyświetlić tablicę partycji
pierwszego dysku twardego (tego na którym zainstalowany jest system) wydać należy
polecenie:
fdisk -l /dev/sda
Jest to przykład, w którym program kończy działanie w linii komend, poprzestając na
wyświetleniu danych o dysku i partycjach:
68
Tworzenie nowej partycji oraz wybór rodzaju partycji
Aby uruchomić program w trybie interaktywnym wydać należy polecenie:
fdisk /dev/sdb
W trybie interaktywnym użytkownik wybiera opcje programu za pomocą skrótów literowych.
Poniżej lista najważniejszych skrótów:
Skrót
Znaczenie:
a
dodaje informację, że partycja jest partycją rozruchową
d
usuwa partycję
l
wyświetla typy systemów plików
m
wyświetla menu pomocy
n
dodaje nową partycję
p
wyświetla tablicę partycji
q
wychodzi z programu bez zapisywania zmian
t
zmienia typ systemu plików
u
zmienia jednostki
v
sprawdza poprawność tablicy partycji
w
zapisuje zmiany na dysk
Tworzenie nowej partycji oraz wybór rodzaju partycji
Dyski mogą być podzielone na partycje podstawowe lub rozszerzone. Dysk może posiadać
tylko cztery partycje podstawowe lub trzy partycje podstawowe i jedną rozszerzoną. Jeśli
istnieje potrzeba podzielenia dysku na większą ilość partycji to można wydzielić je w
obszarze partycji rozszerzonej. Partycje wydzielone w obszarze partycji rozszerzonej noszą
nazwę partycji logicznych. Wybór rodzaju partycji dokonywany jest jako pierwsza czynność
podczas tworzenia nowej partycji za pomocą skrótu (n). Następnie program pyta o pierwszy
69
Etykieta systemu plików
cylinder tworzonej partycji. Aby nie pozostawiać niezagospodarowanej przestrzeni najlepiej
zawsze używać wartości domyślnych (wciskając enter) dla pierwszego cylindra tworzonej
partycji. Ostatni cylinder tworzonej partycji może zostać określony za pomocą jawnego
wskazania numeru cylindra, lub za pomocą rozmiaru tworzonej partycji (określając za
pomocą znaku „+”, np. +50G, gdzie symbole to odpowiednio: K-kilo, M-mega, G-giga).
Numery partycji od 1 do 4 zarezerwowane są dla partycji podstawowych lub rozszerzonych,
partycje logiczne są numerowane od wartości 5, nawet gdy w systemie istnieje tylko jedna
partycja rozszerzona. np:
Etykieta systemu plików
Każdej nowoutworzonej partycji należy przypisać etykietę systemu plików. Partycja po
utworzeniu posiada domyślną etykietę „Linux”. Etykietę systemu plików ustala się skrótem
(t), natomiast listę możliwych do ustawienia systemów wyświetlić można za pomocą skrótu
(l).
70
Etykieta partycji rozruchowej
Etykieta partycji rozruchowej
Flaga partycji rozruchowej wskazuje iż z danej partycji może zostać uruchomiony system
operacyjny. Flaga partycji rozruchowej ustawiana jest z wykorzystaniem skrótu (a).
Zapisanie tablicy partycji
Do momentu zapisania tablicy partycji za pomocą skrótu (w) tablica partycji nie jest
modyfikowana, a wszystkie działania odbywają się tylko w pamięci programu. W każdej
chwili można opuścić program fdisk bez zapisywania zmian, za pomocą skrótu (q).
Tworzenie systemu plików
Podczas tworzenia tablicy partycji określana jest etykieta systemu plików, nie jest to jednak
tożsame ze stworzeniem systemu pliku. System plików to reguły umieszczania danych na
fizycznym nośniku, dotyczące w szczególności wielkości bloków i klastrów, a także sposobu
odnajdowania plików na dysku. Nośniki (dyski, płyty, pendrive itd.) składają się z bloków
danych, które mogą mieć wielkość będącą wielokrotnością jednego sektora, natomiast to
system operacyjny łączy te bloki w klastry.
System plików tworzy się za pomocą polecenia mkfs.X (make filesystem), gdzie w miejscu
litery X wybrać należy tworzony system plików, np.:
•
mkfs.ext2
•
mkfs.ext3
•
mkfs.ext4
•
mkfs.msdos
•
mkfs.ntfs *
•
mkfs.vfat
* Polecenie mkfs.ntfs dostępne jest w pakiecie ‘ntfsprogs’, który w niektórych dystrybucjach nie jest
zainstalowany domyślnie i musi zostać doinstalowany.
71
Zapisanie tablicy partycji
Każde z powyższych poleceń posiada różne flagi odpowiednie dla danego systemu plików. W
większości przypadków opcje domyślne są najbardziej odpowiednie. System pliku tworzy się
wywołując odpowiednie polecenie wraz ze wskazaniem na partycję, np.:
mkfs.ext3 /dev/sdb1
Zadanie 1 Dyski
Dołączyć do serwera nowy dysk twardy. Przygotować odpowiednio partycje nowego dysku
oraz utworzyć wybrane systemy plików:
1. Za pomocą menagera dysków twardych systemu VirtualBox utworzyć nowy dysk twardy
wg wzoru:
2. W ustawieniach maszyny wirtualnej dołączyć nowy dysk do systemu.
3. Za pomocą programu fdisk utworzyć na nowym dysku partycje wg wzoru (wszystkie
partycje mają rozmiar 50 GB, oprócz rozszerzonej, która zajmuje cały pozostały obszar):
72
Zapisanie tablicy partycji
4. Utworzyć system plików dla partycji:
4.1. /dev/sdb1
4.2. /dev/sdb2
4.3. /dev/sdb5
Montowanie dysków twardych
W systemie Linux partycje dysków muszą posiadać tzw. punkt montowania. Partycja może
zostać zamontowana jako dowolny katalog. Do montowania urządzeń służyć powinien
katalog /mnt, jednak nic nie stoi na przeszkodzie, aby partycja zamontowana została w
innym katalogu. Montowanie nośników (dyski twarde, napędy optyczne, pamięci flash)
odbywa się za pomocą polecenia mount, według składni:
mount -t SystemPlikow /dev/partycja /mnt/katalog
W systemie Linux można zamontować nośniki zapisane w różnych systemach plików. Aby
zobaczyć szczegółową listę obsługiwanych systemów plików należy otworzyć podręcznik dla
polecenia mount (sekcja flagi „-t”): man mount. Polecenie mount uruchomione bez żadnych
parametrów wyświetla wszystkie aktualnie zamontowane systemy plików wraz z katalogami
w których zostały zamontowane.
Poleceniem odwrotnym do montowania jest polecenie umount, które odłącza system
plików od wskazanej lokalizacji (tutaj wystarczy podać już tylko katalog pod którym dany
system plików jest zamontowany – patrz przykład poniżej).
Przykład
Aby zamontować partycję sdc4 w katalogu /mnt/dysk_4, której typ systemu plików to fat32,
wydać należy polecenie:
mount -t vfat /dev/sdc4 /mnt/dysk_4
Natomiast, aby odłączyć zamontowaną w powyższym poleceniu partycję użyć należy
polecenia:
umount /mnt/dysk_4
73
Zapisanie tablicy partycji
UWAGA! Aby zamontować partycję z systemem plików ntfs z możliwością zapisu użyć
należy sterownika ntfs-3g. W zależności od dystrybucji, fraza „ntfs-3g” może być programem
montującym:
ntfs-3g /dev/sda5 /mnt/windows
lub typem systemu plików:
mount –t ntfs-3g /dev/sda5 /mnt/windows
Aby zamontować system plików ntfs tylko do odczytu użyć można polecenia:
mount –t ntfs /dev/sda5 /mnt/windows
Partycja zamontowana za pomocą polecenia mount jest dostępna tylko do momentu
ponownego uruchomienia systemu lub do momentu odłączenia za pomocą polecenia
umount. Aby partycja była montowana w systemie za każdym razem, gdy uruchamiany jest
system należy dokonać odpowiednich wpisów w pliku fstab.
Plik fstab
Urządzenie oraz ich punkty montowania mogą być definiowane w pliku konfiguracyjnym
fstab (file system table – tablica systemów plików), który znajduje się w katalogu etc:
/etc/fstab
Plik ten ma układ tabelaryczny. W poszczególnych kolumnach określa się parametry
montowanych systemów plików:
• Kolumna 1: definiuje ścieżkę do urządzenia, np. /dev/sda3,
• Kolumna 2: określa punkt montowania, np. /mnt/dysk3
• Kolumna 3: specyfikuje rodzaj systemu plików (np. ext3, vfat, ntfs, iso9660 )
• Kolumna 4: określa opcje montowania, definiowane po przecinku, najważniejsze z
nich poniżej:
o auto / noauto – określa czy dysk ma być montowany automatycznie
o ro / rw – tylko do odczytu / odczyt zapis
o defaults – montuje zasób z opcjami domyślnymi dla danego systemu plików
• Kolumna 5: parametr programu dump archiwizującego zasoby – jeśli wartoś 0,
program dump ignoruje ten zasób
74
Zapisanie tablicy partycji
• Kolumna 6: kolejność sprawdzania partycji podczas włączania systemu w
poszukiwaniu błędów (główna partycja rozruchowa powinna mieć wartość 1, inne
partycje wartość 2 lub 0 – gdy nie powinny być sprawdzane w ogóle).
W celu zamontowania wszystkich zdefiniowanych w pliku fstab systemów plików wydać
należy polecenie:
mount -a
Polecenie to stosuje się w szczególności wtedy, gdy istnieją w pliku fstab systemy plików,
które nie są montowane automatycznie (noauto) lub gdy któryś z automatycznie
zamontowanych zasobów został ręcznie odmontowany (za pomocą polecenia umount).
Zadanie 2 Montowanie
1. Zamontować wg poniższego wzoru partycje, które zostały utworzone w poprzednim
zadaniu, ale tylko te, dla których utworzony został system plików. Opcje montowania
dobrać odpowiednio do systemu plików na partycji oraz odpowiedni do wytycznych w
tabeli.
Partycja
Punkt montowania
Opcje
/dev/sdb1
/mnt/winXP
Możliwość zapisu
/dev/sdb2
/mnt/backups
Możliwość zapisu
/dev/sdb5
/mnt/win98
Tylko odczyt
2. Na partycji sdb1 oraz sdb2 stworzyć testowe pliki tekstowe z dowolną zawartością.
Kopie bezpieczeństwa danych – archiwa i metody archiwizacji
System Linux udostępnia kilkanaście narzędzi służących archiwizowaniu danych i tworzeniu
kopii bezpieczeństwa. Nikogo nie trzeba przekonywać jak ważne są kopie bezpieczeństwa.
Zabezpieczać można dane (w znaczeniu: istotne pliki) poprzez tworzenie archiwów,
synchronizując katalogi itd. Można też mówić o tak zwanych „odzyskach”, gdzie tworzy się
75
Tworzenie archiwów
kopię bezpieczeństwa całego, poprawnie skonfigurowanego systemu operacyjnego, tak aby
w przypadku awarii w łatwy sposób można było odzyskać działający system wraz ze
wszystkim działającymi na nim usługami.
Tworzenie archiwów
Najpopularniejszym programem do tworzenia archiwów w systemie Linux jest program tar.
Program umieszcza grupę plików w jednym archiwum. Program ma dodatkowo możliwość
kompresowania plików w archiwum. Do najważniejszych parametrów programu należą:
• -c – (create) tworzy archiwum (.tar)
• -f – (file) zezwala na określenie nazwy archiwum
• -v – (verbose) wypisanie archiwowanych plików
• -t – wypisanie na ekran plików w archiwum
• -u – (update) dołącza do archiwum tylko pliki nowsze niż ich te które znajdują się już
w archiwum
• -z – (zip) włącza kompresję programem gzip
• -j – włącza kompresję programem bzip2
• -x – (eXtract) wyodrębnia wymienione pliki
Przykład
Aby utworzyć skompresowane archiwum w którym znajdą się wszystkie pliki z katalogu /root
wydać należy polecenie:
tar –czvf backup.tgz /root/
aby rozpakować archiwum:
tar –xzvf backup.tgz
Synchronizacja katalogów
Najpopularniejszym programem służącym do synchronizacji katalogów jest program rsync.
Program pozwala na kopiowanie katalogów w trybie przyrostowym, porównując i kopiując
76
Tworzenie obrazu oraz odzyskiwanie systemu
tylko pliki nowe lub które uległy zmianie. Polecenia może działać w zakresie jednego systemu
plików, np. chcąc utworzyć kopię katalogu dokumenty:
rsync -avz --stats /root/dokumenty/ /home/backups/
gdzie flaga:
• -a - oznacza pracę w trybie archiwizacji, zachowując przy kopiowaniu wszystkie
atrybuty pliku (właściciela, prawa dostępu, datę utworzenia)
• -z – użycie kompresji danych w celu przespieszenia transferu plików (szczególnie
przydatne, gdy synchronizacja przebiega przez sieć)
• -v – tryb wyświetlania szczegółowych informacji
• --stats – wyświetlenie szczegółowych statystyk związanych z synchronizacją
Synchronizacja może odbywać się także z wykorzystaniem protokołu ssh. Składnia
polecenie przypomina wtedy kopiowanie za pomocą polecenia scp jednak z zachowaniem
funkcjonalności programu rsync, np:
rsync -avz -stats -e ssh user@host:/root/docs/ /home/backups
Powyższe polecenie kopiuje w trybie archiwizacji katalog docs ze zdalnego komputera do
katalogu backups na lokalnym komputerze.
Tworzenie obrazu oraz odzyskiwanie systemu
Popularnym programem do tworzenia obrazów całego systemu jest program partimage.
Program pozwala na sporządzenie obrazu całej partycji i zapisanie jej obrazu na innej
partycji. Tworzony obraz partycji jest dodatkowo kompresowany. Program pozwala na
tworzenie obrazu partycji lokalnego komputera na komputerze zdalnym. Program działa w
trybie pseudograficznym co znacznie ułatwia pracę.
77
Demon cron
Zadanie 3 Kopie bezpieczeństwa
1. Utworzyć 3 dowolne pliki tekstowe w katalogu /mnt/backups/ (czyli w katalogu, gdzie w
poprzednim zadaniu została zamontowana partycja sdb2).
2. Utworzyć skompresowane archiwum tgz zawierające pliki utworzone w pkt.1
3. Za pomocą polecenia rsync zsynchronizować katalog /root/ ze zdalnego komutera do
katalogu /mnt/backups/
4. Za pomocą programu partimage stworzyć obraz partycji /dev/sdb1. Obraz partycji
zapisać w katalogu /mnt/backups/
Harmonogramowanie zadań: cron i at
Ważnym elementem każdego systemu jest harmonogramowanie zadań. Wykonywanie
określonych zadań cyklicznie lub z opóźnieniem (o określonej porze) znacznie ułatwia prace
administracyjne oraz automatyczne tworzenie kopii bezpieczeństwa.
Demon cron
Program cron pozwala na cykliczne uruchomianie zadań. Cykliczne zadania zdefiniowane
przez danego użytkownika wyświetlić można za pomocą polecenia:
crontab -l
natomiast edycji zadań cyklicznych za pomocą polecenia:
crontab -e
Edycja odbywa się na zasadzie edycji pliku konfiguracyjnego, który zorganizowany jest w
kolumnach, każda kolumna oddzielona jest znakiem spacji:
• kolumna 1: minuta (0-59)
• kolumna 2: godzina (0-23)
• kolumna 3: dzień miesiąca (1-31)
• kolumna 4: miesiąc (1-12)
78
Przykład
• kolumna 5: dzień tygodnia (0-7, gdzie 0 i 7 oznaczają niedzielę)
• kolumna 6: polecenie do wykonania
W każdej kolumnie (oprócz kolumny 6) możne znaleźć się zakres liczbowy:
• * (symbol gwiazdki) oznaczający – każdą godzinę, minutę, miesiąc, dzień itd
• 1,3,5 – przykładowy wpis oznaczający wybrane godzinę, dzień lub miesiąc
• 2-5 – przykładowy zapis oznaczający zakres od 2 do 5
Przykład
Na przykład wpis w tablicy cron:
0,30 14-18 * 11,12 1-5 /root/bin/backup.sh 2>/dev/null
spowoduje, iż skrypt „backup.sh” (którego wszystkie standardowe błędy będą
przekierowywane do urządzenia null) będzie wykonywany w listopadzie i grudniu każdego
roku, od poniedziałku do piątku, zawsze o pełnej godzinie oraz 30 minut po każdej godzinie,
pomiędzy godziną 14 a 18.
Polecenie at
Polecenie at pozwala na uruchomienie polecenia o określonej godzinie. Program pozwala na
przyporządkowanie zadania, które ma zostać wykonane o określonej porze do
wyspecyfikowanej kolejki (flaga –q). Kolejki posiadają nazwy własne, np. „kol1”.
Najważniejsze polecenia programu at:
• -q nazwa kolejki
• -t data i czas wykonania, format: YYYYMMDDHHMM (bez odstępów i innych znaków)
• - f program do wykonania
Na przykład, aby zdefiniować wykonanie programu na dzień 01 kwietnia roku 2010, godzinę
13:15, a zadanie dodać do kolejki o nazwie ‘backups’ wydać należy polecenie:
at -q backups -t '201004011315' -f /root/make_backup.sh
79
Polecenie at
Aby zobaczyć zaplanowane zadania, użyć należy polecenia (można wyspecyfikować
konkretną kolejkę):
atq -q backupy
Aby usunąć zaplanowane zadanie, użyć należy polecenia artm wraz z ID zadania (ID zadania
widoczne jest w liście zadań wyświetlonej za pomocą polecenia atq), np.:
atrm 3
Zadanie 4 Harmonogramowanie zadań
1. Stworzyć prosty skrypt „backups.sh”, który wykonuje archiwum plików katalogu /root/ i
zapisuje je w katalogu /home/
2. Za pomocą polecenia at zdefiniować wykonanie skryptu „backups.sh” po kilku minutach
po zdefiniowaniu. Sprawdzić poprawność działania zadania (sprawdzić czy powstało
archiwum)
3. Zdefiniować wykonanie cykliczne skryptu „backups.sh”, tak aby skrypt był uruchamiany
w każdą sobotę i niedzielę o godzinie 18.