Zarządzanie dyskami w Linuxie – praktyczny poradnik dla początkujących

by Patryk

Zarządzanie dyskami w Linuxie to jedno z kluczowych zadań administratora. W Linuxie praktycznie wszystko opiera się o sprawne działanie pamięci masowej: od uruchamiania usług, przez logi, po bazy danych i kopie zapasowe. Dobra organizacja dysków i partycji przekłada się na wydajność, stabilność i łatwiejsze utrzymanie systemu.

W tym artykule krok po kroku przejdziesz przez najważniejsze elementy: partycjonowanie, systemy plików, montowanie, weryfikację miejsca, klonowanie oraz limity dyskowe (quota). Na końcu znajdziesz też podstawy CIFS/SMB (udziały Windows) i krótkie wprowadzenie do LVM.

Podstawowe pracy z nowymi dyskami


Zanim zapiszesz dane na nowym dysku, zwykle musisz:

  • utworzyć tablicę partycji (np. MBR lub GPT),
  • podzielić dysk na partycje,
  • sformatować je w wybranym systemie plików,
  • zamontować je w systemie do katalogu (np. /data, /mnt/dysk).

MBR vs GPT – co wybrać?


MBR

Jest to starszy schemat z lat 80. Jest szeroko kompatybilny (Windows/Linux/macOS), ale ma istotne ograniczenia:

  • można utworzyć w nim maksymalnie 4 partycje podstawowe (lub 3 + rozszerzona),
  • posiada ograniczenie rozmiaru dysku do ok. 2 TB (powyżej część przestrzeni może być niewidoczna),
  • nie ma w nim nowocześniejszych mechanizmów odporności.

MBR jest spotykany głównie w starszych systemach opartych o BIOS. Jeśli masz UEFI, najczęściej lepszym wyborem będzie GPT.

GPT

GPT to nowocześniejszy następca MBR, popularny od końca lat 90. Zwykle oznacza:

  • Zapewnia wsparcie dla bardzo dużych dysków (w praktyce bez “limitu 2 TB” jak w MBR),
  • Umożliwia utworzenia wielu partycji (często spotkasz limit typu 128 w typowych narzędziach),
  • Pozwala tworzyć kopie krytycznych metadanych oraz sumy kontrolne, co ułatwia wykrywanie problemów i naprawę.

GPT jest standardem w nowoczesnych systemach z UEFI.

Konfiguracja dysków w Linuxie


Zanim zaczniemy używać danego dysku musimy go przygotować do użycia. Samo wsadzenie dysku do komputera nie wystarczy musimy stworzyć na nim tablicę partycji, podzielić na partycje, sformatować je w wybranym przez siebie systemie plików oraz zamontować do wybranych katalogów. Labując na wirtualnych maszynach ciężko fizycznie dołożyć dysk, możemy jednak dodać dyski wirtualne. Jeśli nie wiesz, jak dodać dyski w wirtualnej maszynie zachęcam Cię do przeczytania mojego artykułu o Virtualboxie. Do celów lablowania zachęcam do dodania 4 wirtualnych dysków o wielkości 5GB. Tyle w zupełności wystarczy.

Weryfikacja dostępnych dysków

Zanim jednak zagłębimy się w zarządzanie dyskami, poznajmy informacje o dyskach, na których przyjdzie nam pracować. Możemy skorzystać z dwóch poniższych poleceń aby wyświetlić informacje o dyskach oraz partycjach jakie się na nich znajdują.

Pierwszym poleceniem pozwalającym wyświetlić podstawowe informacje o dyskach podłączonych do komputera jest polecenie lsblk. Polecenie to świetnie nadaję się do uzyskania szybkiej informacji na temat dysku oraz partycji, które się na nim znajdują.

Dużo więcej informacji możemy zdobyć korzystając z polecenia fdisk -l. W tym przypadku dostajemy więcej szczegółów (m.in. rozmiary, typ tablicy partycji). Całość jest przedstawiona w bardziej czytelny sposób.

Tworzenie tablicy partycji i partycjonowanie

Pierwszym krokiem, który należy wykonać, aby dany dysk był możliwy do użycia jest utworzenie na nim tablicy partycji według wybranego przez siebie schematu (MBR lub GPT). Należy również taki dysk podzielić na partycje. Tworzenie partycji polega na przydzielaniu określonych części dysku do różnych celów. Przykładowo jedna partycja może być przeznaczona dla systemu operacyjnego a inna do przechowywania danych. W systemie Linux dostępnych jest kilka narzędzi do tworzenia partycji:

  • fdisk
  • gdisk
  • parted
  • cfdisk

Zanim wybrane zostanie konkretne narzędzie, warto sprawdzić czy współpracuję ze schematem MBR czy tylko GPT. W tym artykule wykorzystam narzędzie fdisk, które współpracuje z oboma.

W celach demonstracyjnych podzielę dysk sdb na dwie partycje o rozmiarach 2GB. Poniżej znajduję się składnia polecenia fdisk.

fdisk /dev/sdb

Po wykonaniu tego polecenia na ekranie ukażę się kreator tworzenia partycji. Na początku możesz poczuć się zagubiony, wystarczy jednak skorzystać z pomocy, którą można odpalić wpisując literkę m. Są w niej opisane wszystkie literki, z których można skorzystać pracując z tym narzędziem.

Tworzenie partycji

Poniżej opisuje sprawdzone kroki, po wykonaniu, których otrzymasz gotową partycje o rozmiarze 2GB. Na początku fdisk automatycznie tworzy tymczasowo etykietę DOS/MBR. Aby zmienić etykietę dysku na GPT należy wpisać literkę g.

  • n rozpoczyna tworzenie partycji
  • Numer partycji: póki co nie ma żadnej, można więc zostawić puste lub wpisać 1
  • Pierwszy sektor: zostaw puste, warto zaczynać od początku dysku
  • Ostatni sektor: wpisz +2G aby utworzyć 2GB partycje

Te cztery kroki w zupełności wystarczą, aby utworzyć partycje. Zanim zapiszesz, literką p możesz jeszcze podejrzeć wszystkie nowo utworzone partycje. Jeśli wszystko się zgadza, należy jeszcze wszystkie zmiany zapisać literką w. Bez tego żadna partycja nie zostanie utworzona a cały proces będzie trzeba powtórzyć od nowa.

Na koniec należy upewnić się, że partycje na pewno zostały utworzone. Najszybszym sposobem będzie skorzystanie z polecenia lsblk.

Formatowanie partycji

Formatowanie systemu plików to proces przygotowania partycji lub urządzenia pamięci masowej do użycia poprzez utworzenie na nim systemu plików. Ten krok jest niezbędny, zanim będzie można zapisać dane na dysku i uzyskać do nich dostęp. W Linuksie dostępne są różne typy systemów plików.

  • ext4 – popularny, stabilny, “domyślny” w wielu dystrybucjach,
  • xfs – wydajny i skalowalny, często na serwerach i przy dużych plikach,
  • btrfs – nowoczesny (snapshoty, sumy kontrolne, funkcje zbliżone do RAID).

Partycje formatuje się przy użyciu polecenia mkfs. Poniżej znajduje się przykładowa składnia tego polecenia wykorzystująca system plików ext4.

Polecenie to jest bardzo proste. Po kropce stosujemy nazwę systemu plików, a następnie wskazujemy partycję, którą chcemy sformatować. Poleceniem blkid można sprawdzić, czy partycje zostały poprawnie sformatowane. W tym miejscu również możemy podejrzeć UUID, jaki został przypisany do tej partycji. Wartość ta jest przydatna w przypadku montowania partycji na stałe do danego katalogu, co zostanie zademonstrowane w dalszej części poradnika.

Montowanie partycji

W systemie Windows już można byłoby korzystać z takiej partycji, w linuxie niestety należy ją jeszcze zamontować do określonego katalogu. Partycje można montować ręcznie za pomocą polecenia mount oraz odmontować poleceniem umount. Wadą tej metody jest jednak konieczność robienia tego za każdym razem, kiedy zostanie zrestartowany system. Informacja o tego typu zamontowaniu znajduję się w pamięci RAM i jest ulotna. W przypadku systemu linux bardzo ważne jest odmontowanie takiej partycji przed usunięciem lub odłączeniem dysku, na którym się znajduje.

Montowanie partycji na stałe

Inną metodą zamontowania partycji jest zrobienie tego za pomocą pliku /etc/fstab. Plusem tej metody jest to, że w przypadku restartu systemu partycja zostanie zamontowana automatycznie do wskazanego katalogu. Jak już wspominałem wcześniej, UUID jest bardzo przydatny. Możemy go wykorzystać do wskazania partycji, do której system ma automatycznie montować wybrany katalog. Aby w łatwy sposób przenieść taki UUID do pliku, można skorzystać ze znanego już polecenia grep oraz operatorów potoku.

blkid | grep sdb1 | awk '{print $2}' >> /etc/fstab

Poniżej zaś umieszczam przykładowy wiersz znajdujący się w pliku /etc/fstab, który wskazuje na określone montowanie.

Weryfikacja zużytego miejsca na dysku/partycji

Do sprawdzenia ilości miejsca zużytego na dysku/partycji służy polecenie df -h. Można również wykorzystać polecenie du w celu wyświetlenia pełnego rozmiaru danego katalogu.

Klonowanie struktury partycji na inny dysk

Czasami może zajść potrzeba sklonowania struktury partycji z jednego dysku na nowy. W takim przypadku pomocne może okazać się polecenie sfdisk. Poleceniem tym możemy skopiować cały układ partycji z jednego dysku na inny.

Po wszystkim warto upewnić się za pomocą polecenia lsblk czy utworzył się identyczny układ partycji na nowym dysku. Samo sklonowanie układu to jednak jeszcze nie wszystko. Należy jeszcze sklonować zawartość jednej partycji na inną. Poniższym poleceniem kopiujemy zawartość partycji sdb1 do sdd1.

Na koniec warto się upewnić czy po skopiowaniu posiadamy identyczną zawartość na nowej partycji. Należy zamontować partycję do jakiegoś katalogu i sprawdzić, czy jej zawartość jest taka sama jak zawartość partycji sdb1. Jak widać na poniższym screenie, jest identyczna.

Klonowanie dysku do innego dysku

Można również skopiować cały dysk do nowego dysku, bez zabawy w kopiowanie struktury partycji oraz zawartości poszczególnych partycji. Wówczas należy skorzystać z poniższego polecenia.

Wadą tej metody jest to, że kopiuje się również numer UUID klonowanych partycji. Należy go zmienić na inny, ponieważ może to rodzić później problem z rozróżnianiem przez system poszczególnych partycji. Dla każdego systemu plików trzeba znaleźć własne narzędzie do zmiany UUID.

Przykładowo dla systemu ext jest to polecenie tune2fs. Nowy numer UUID trzeba zmienić samodzielnie zmieniając znaki na losowe.

tune2fs -U eb78f6d3-620e-4913-cc4c-a9e2538b4dd8 /dev/sde1

Dla systemu plików xfs możemy skorzystać z polecenia xfs_admin.

xfs_admin -U generate /dev/sde2

Tworzenie limitów dyskowych


Miejsce na dyskach nie jest nieograniczone dlatego warto utworzyć limity dla każdego użytkownika. Do tworzenia limitów dyskowych w Linuxie musimy doinstalować specjalne oprogramowanie o nazwie quota.

apt install quota quotatool

Limity ustawia się osobno dla każdej partycji, co oznacza, że limit dla użytkownika ustawiony na jednej partycji ma się nijak do innej partycji. Limity partycji możemy ustawić edytując plik /etc/fstab. W opcjach partycji należy dodać opcje “usrquota”.

Następnie należy przemontować partycję, aby była zamontowana z odpowiednim parametrem. Czasami trzeba również zrestartować system.

umount /dokumenty
mount /dokumenty

Następnie należy stworzyć plik, do którego będą wpisywane wpisy quoty. Plik ten można stworzyć za pomocą polecenia quotacheck. Wówczas tworzy się plik “aquota.user”. Należy również aktywować quote dla danej partycji.

quotacheck -cu /katalog
quotaon /katalog

Aby nadać limit dla poszczególnego użytkownika należy użyć polecenia edquota, po którym podajemy nazwę użytkownika.

edquota robert

Po wydaniu tego polecenia otworzy nam się edytor, w którym możemy zmienić kilka wartości.

  • bloki – Liczba 1KB bloków używanych przez użytkownika lub grupę.
  • i-węzły – Liczba plików używanych przez użytkownika lub grupę.
  • miękki limit bloków – Liczba 1KB bloków, po osiągnięciu, której będzie można jeszcze tymczasowo trzymać dodatkowe bloki. Domyślnie jest to tydzień.
  • twardy limit bloków – Liczba 1KB bloków, której nie da się przekroczyć.
  • miękki limit węzłów – Liczba plików, po osiągnięciu, której będzie można jeszcze tymczasowo trzymać dodatkowe pliki. Domyślnie jest to tydzień.
  • twardy limit węzłów – Liczba plików, której nie da się przekroczyć.

Dla testów ustawmy pełne uprawnienia dla katalogu, zalogujmy się na użytkownika Robert i skopiujmy kilka losowych plików do tego katalogu.

Do sprawdzenia wykorzystania limitów można skorzystać z polecenia repquota -u. Wynik polecenia pokazuje ilość miejsca zajętego na danej partycji przez danego użytkownika.

Pole “pobłażliwość” oznacza ilość dni, po przekroczeniu limitu miękkiego, po którym staje się limitem twardym. Domyślnie jest to 7 dni ale można w dowolnym momencie zmienić tą wartość na jakąś dużo większą poleceniem edquota -t.

Kopiowanie limitów na innych użytkowników

Tworzenie limitów dla każdego użytkownika mogłoby być problematyczne. Można jednak skorzystać z polecenia edquota z przełącznikiem -p, które pozwala skopiować limity na innych użytkowników.

edquota -p robert patryk

Tworzenie partycji wymiany


Swap (partycja wymiany lub plik wymiany) to przestrzeń na dysku, którą Linux może wykorzystać jako “awaryjne” rozszerzenie pamięci RAM. Gdy brakuje RAM-u, system może przenosić mniej używane dane do swapu, dzięki czemu unika natychmiastowego ubicia procesów. Na prostym przykładzie zademonstruję jak utworzyć partycje wymiany.

Na potrzeby tego przykładu utworzyłem dodatkową partycje na dysku /dev/sdb. Nadałem jej rozmiar 500Mb. Domyślnie fdisk tworzy zwykłe partycje, żeby utworzyć partycję wymiany konieczne jest zmienienie jej typu. System musi wiedzieć, że to przestrzeń przeznaczona na wymianę, a nie np. ext4. W fdisk robisz to wpisując literkę t. Wybierasz numer partycji i wpisujesz słowo swap. Zmieni to typ partycji na partycje wymiany. Pamiętaj o zapisaniu na koniec zmian literką w.

Po utworzeniu partycji system nadal nie używa jej jako swap. Teraz musisz ją “sformatować” w sensie swapowym, czyli zapisać na niej strukturę swap.

Do tego służy polecenie:

mkswap /dev/sdb3

To polecenie robi dokładnie to, co mkfs.ext4 robi dla ext4, tylko w świecie swapu: przygotowuje partycję, aby kernel mógł ją traktować jak przestrzeń wymiany.

Partycja swap może istnieć, ale dopóki jej nie aktywujesz, system jej nie używa. Aktywacja wygląda tak:

swapon /dev/sdb3

Od tej chwili system może korzystać z tej przestrzeni w razie potrzeby. Na koniec warto potwierdzić, że system widzi przestrzeń wymiany i że jest aktywna. Służy do tego polecenie swapon -s. Jak widzisz, na screenie jest widoczna partycja /dev/sdb3. Poleceniem free -h możesz podejrzeć całościową ilość ramu i przestrzeni wymiany.

You may also like

Leave a Comment