Loading...

Menu

Minibannery

  • Aktualny PageRank strony turox.org.pl dostarcza: Google-Pagerank.pl - Pozycjonowanie + SEO
  • Forum Linuksowo.pl
  • katalog stron
Podział dysków na partycje CentOS
Filesystemy
Drukuj

Podział dysków na partycje

Pytanie o podział dysku/dysków na partycje jest jednym z najczęściej pojawiających się pytań. Aby prawidłowo dokonać tego podziału trzeba sobie odpowiedzieć na wiele pytań i wiedzieć jak startuje komputer i gdzie w systemie plików znajdują się poszczególne elementy systemu.
W systemach uniksowych mamy jednolitą, ciągłą struktura katalogów niezależnie od ilości dysków fizycznych i partycji na nich. Poszczególne partycje fizyczne, a właściwie filesystemy na nich umieszczone montowane są do odpowiednich katalogów w drzewie katalogów. Zrozumienie tej struktury jest kluczem do właściwego podziału dysków.

Struktura katalogów

Poniższa tabela przedstawia najistotniejsze informacje o strukturze katalogów w linuksie wybrane z Filesystem Hierarchy Standard (external link)

katalogprzeznaczenie

/bootpliki niezbędne do uruchomienia systemu (kernel, initrd, pliki bootloadera - w przypadku GRUB)
/binpliki binarne (wykonywalne) najbardziej podstawowych narzędzi systemowych
/sbinzawiera pliki wykonywalne poleceń istotnych dla funkcjonowania systemu, które mogą być wykonywane tylko przez administratora, inni użytkownicy mają ograniczony dostęp do tych poleceń
/libsystemowe biblioteki dzielone (shared libraries), zawierające funkcje wykorzystywane przez wiele różnych programów
/mediamiejsce montowania nośników wymiennych (np. pendrive, CD-ROM)
/mntmiejsce montowania dysków i zasobów sieciowych
/rootkatalog domowy użytkownika root - głównego administratora każdego systemu uniksowego, który ma maksymalne uprawnienia
/tmpsystemowy folder przeznaczony na pliki tymczasowe
/devznajdujące się tutaj pliki nie są faktycznie plikami na dysku, lecz odnoszą się do urządzeń - za ich pośrednictwem system komunikuje się z urządzeniami (komunikacja niskopoziomowa), w systemie RedHat i pochodnych katalog ten wypełniany jest dynamicznie w trakcie działania systemu
/procwirtualny katalog umożliwiający bezpośredni dostęp do kernela
/etcpliki konfiguracyjne, ustawienia systemowe niezbędne do uruchomienia systemu i jego poprawnego działania
/homew tym katalogu znajdują się pliki określające ustawienia każdego użytkownika, ponadto jest on przeznaczony na zapisywanie danych, np. dokumentów, obrazków, muzyki i wszelkich plików których używamy na codzień
/usrw tym katalogu są instalowane dodatkowe programy, które umożliwiają pracę zwykłemu użytkownikowi systemu
  /usr/binpliki wykonywalne (binarne oraz skrypty)
  /usr/sbinaplikacje systemowe nie stanowiące składników krytycznych dla funkcjonowania systemu np. demony usług sieciowych
  /usr/libbiblioteki aplikacji znajdujących się w katalogach /usr/bin i /usr/sbin
  /usr/sharedane niezależne od architektury: ikony, dokumentacje, manuale itp.
  /usr/includepliki nagłówkowe aplikacji i bibliotek wykorzystywane przy kompilacji i linkowaniu programów i bibliotek
  /usr/localstruktur katalogów zawierająca dane specyficzne dla tej instalacji np. aplikacje instalowane ze źródeł
  /usr/srckatalog zawierający źródła aplikacji, tutaj wykonywana jest kompilacja kernela oraz budowa pakietów rpm
/varkatalog przeznaczony na pliki systemowe, ale których zawartość często się zmienia, jak logi programów/systemu, pliki html czy skrypty php/cgi wykorzystywane przez serwer www - inaczej mówiąc są to dane zapisywane przez system i ważniejsze programy
  /var/logkatalogi logów systemowych oraz aplikacyjnych
  /var/libdane modyfikowane przez aplikacje w czasie ich funkcjonowania(bazy danych, dane systemu zarządzania pakietami)
  /var/spoolkolejki danych oczekujących na obsłużenie (kolejki wydruków, poczta do wysyłki itp.)
  /var/mailskrzynki pocztowe

Oprócz wymienionych tu katalogów mogą w głównym drzewie występować inne katalogi tworzone przez administratora systemu. Zalecane jest jednak aby takie katalogi tworzyć jako podkatalogi już istniejących katalogów trzymając się przeznaczenia opisanego powyżej.

Uruchomienie systemu

Kolejnym elementem istotnym przy planowaniu podziału na partycje jest znajomość sposobu uruchamiania systemu. Zajmiemy się komputerami PC jako najczęstszym przypadkiem.

W momencie włączenia zasilania uruchamiany jest program zapisany w kości pamięci umieszczonej na płycie głównej. Program ten nazywany jest BIOS-em i wykonuje podstawowe testy sprzętu. Po sprawdzeniu sprzętu, BIOS poszukuje urządzenia bootującego czyli takiego, które zawiera informacje niezbędne do załadowania systemu operacyjnego. Przyjmijmy, że urządzeniem tym jest dysk twardy (może to być również dysk CD/DVD, pendrive lub w szczególnych przypadkach zasób sieciowy). BIOS poszukuje odpowiednich informacji w pierwszym sektorze urządzenia (sektor to tylko 512 bajtów) i przekazuje kontrolę do procesu, który jest wskazany w tym sektorze.

MBR (master boot record) nie zawiera faktycznie żadnego programu (na 512 bajtach niewiele można zapisać) ale informacje o fizycznym położeniu na dysku właściwego programu. Może to być wskazanie na konkretny program lub adres tzw. partycji aktywnej. W pierwszym sektorze partycji aktywnej znajduje się wywołanie właściwego programu startującego system. Program ten nazywamy bootloaderem i obecnie w linuksie jest to najczęściej GRUB.

Instalacja bootloadera

Bardzo często mówimy "zainstalować GRUB w MBR". Oczywiście nie chodzi tu o faktyczne zainstalowanie bootloadera w MBR bo jest to niemożliwe ale o zapisanie w MBR bezpośredniego wywołania GRUB-a z pominięciem poszukiwania partycji aktywnej. W przypadku alternatywnych systemów w MBR zawsze zapisywane jest wywołanie partycji aktywnej a bootloader wywoływany jest właśnie z tej partycji.

Po przejęciu kontroli nad komputerem przez bootloader następuje wybór programu do załadowania będącego jądrem systemu. W przypadku systemu linux jest to najczęściej plik vmlinuz znajdujący się w katalogu /boot (w tym samym katalogu znajdują się pliki konfiguracyjne GRUB-a oraz sam bootloader).

Po załadowaniu kernela bootloader przekazuje mu kontrolę nad sprzętem i kernel rozpoczyna uruchomienie reszty systemu. W tym celu montuje partycję zawierającą początek drzewa katalogów systemu (partycja ta jest podawana jako prametr kernela) i poszukuje plików /etc/rc.d/rc.sysinit (zawiera procedurę uruchomienia systemu) oraz /etc/fstab (zawiera opis zasobów dyskowych do zamontowania). Do prawidłowego przeprowadzenia startu systemu potrzebne są m.in. programy diagnostyczne oraz programy montujące filesystemy. Aplikacje te znajdują się w katalogach /bin i /sbin

Dalszy proces uruchamiania systemu jest już zależny od wielu plików konfiguracyjnych ale dla nas jest to już mniej istotne w tym momencie gdyż zamontowana jest już cała struktura katalogów i dostępne są wszystkie aplikacje systemu operacyjnego.

Z powyższego opisu możemy wyciągnąć pewne wnioski co do podziału dysku na partycje.

  • Ponieważ uruchomienie bootloadera oraz kernela stanowi pewną zamkniętą całość oraz biorąc pod uwagę możliwość wykorzystania mechanizmu partycji aktywnych warto jest wydzielić osobną partycję i zamontować ją jako /boot; biorąc pod uwagę rozmiar GRUB-a, kernela oraz możliwość posiadania kilku wersji kernela (np. produkcyjna i testowa) partycji tej należy nadać rozmiar ok. 100MB i zdefiniować ją jako partycję podstawową jak najbliżej początku dysku
  • Bezpośrednio po załadowaniu, kernel poszukuje katalogu /etc i wymaga aplikacji zgromadzonych w katalogach /sbin i /bin oraz ich bibliotek (katalog /lib); zatem wydzielanie tych katalogów do osobnych partycji mogłoby przysporzyć problemów zwłaszcza przy ewentualnej awarii systemu; zatem pozostawiamy je na partycji zawierającej początek drzewa katalogów, której nadajemy rozmiar nie mniejszy niż 1GB.

System główny

Uruchomienie systemu to stanowczo za mało. System instalujemy po to żeby wykonywał jakieś zadania a do tego potrzebne są aplikacje realizujące te zadania. Aplikacje te instalowane są w podkatalogach katalogu /usr. W zależności od tego ile zadań ma realizować dana instalacja potrzebujemy tutaj od 3GB do nawet 10GB.
Należy pamiętać o dwóch podkatalogach katalogu /usr: /usr/local oraz /usr/src. Pierwszy z nich jest odpowiednikiem /usr z tym, że zawiera aplikacje specyficzne dla tej konkretnej instalacji, najczęściej są to aplikacje instalowane b/p ze źródeł z pominięciem systemu pakietów.

Aplikacje ze źródeł

Aplikacje instalowane ze źródeł są całkowicie niezależne od systemu pakietów rpm. Zatem instalacja aplikacji czy biblioteki ze źródeł nie rozwiązuje problemów zależności między pakietami. Jeśli pakiet, który próbujesz zainstalować zgłosi problem z zależnościami to szukaj pakietu spełniającego te zależności i nie próbuj instalować ze źródeł bo to niczego nie zmieni.

W zależności od tego ile tego typu aplikacji chcesz instalować w systemie rozmiar potrzebny na /usr może się zwiększyć. Osobiście doradzałbym jednak odszukanie pakietów z potrzebną aplikacją/biblioteką lub samodzielne zbudowanie takiego pakietu zgodnie z wymaganiami systemu. W poprawnie prowadzonym systemie katalog /usr/local zawiera jedynie skrypty automatyzujące stałe operacje wykonywane w systemie (monitoring, backup itp.) czyli jego rozmiar jest znikomy i możemy pominąć w dalszych rozważaniach.
Drugi z wymienionych katalogów przeznaczony jest na źródła aplikacji i bibliotek. Jest to również miejsce budowy kernela oraz pakietów. Jest to jednak podejście historyczne. Jak już wyżej pisałem, odradzam instalację aplikacji ze źródeł. Budowanie pakietów jako użytkownik root to prosta droga do tragedii. Wprawdzie są aplikacje, które muszą być budowane z poziomu konta root ale są na to sposoby (o budowaniu pakietów jeszcze napiszę).
Pozostaje sprawa kernela. Wprawdzie można budować samodzielnie kernel ze źródeł z kernel.org ale mimo wszystko zalecałbym raczej budowanie własnych pakietów na podstawie pakietów dystrybucyjnych (kompilacja kernela to osobny temat). Zatem /usr/src również pozostaje pusty.

System główny to również katalog /root czyli katalog domowy administratora. Na koncie root pracujemy tylko wówczas gdy jest to absolutnie niezbędne, z poziomu tego konta nie łączymy się z serwisami internetowymi i nie ściągamy żadnych danych. Zatem katalog ten to tylko kadłub katalogu domowego i powinien być umieszczony w głównym katalogu systemu (musi być dostępny nawet w przypadku awarii systemu).

Brak miejsca na partycji /

Jeśli na filesystemie zawierającym katalog domowy roota zabraknie miejsca to możemy mieć problemy z zalogowaniem się na to konto. Wprawdzie najnowsze wersje dystrybucji linuksa są już odporne na ten problem ale inne systemy uniksowe nie więc lepiej wyrabić sobie dobre nawyki i dbać o to by partycja zawierająca główny katalog miała zawsze trochę wolnego miejsca.

Kolejnym, istotnym dla pracy systemu katalogiem jest /tmp. Katalog ten jest wykorzystywany przez wiele aplikacji do przechowywania plików tymczasowych. W starszych wersjach systemów CentOS tutaj właśnie lądowały pliki sesji generowane przez php (obecnie /var/lib/php). Nadal katalog ten wykorzystywany jest do uploadu plików wykonywanego z poziomu formularzy na stronach www. Istotym jest również fakt, że do katalogu tego mają dostęp wszyscy użytkownicy systemu z prawem zapisu.
Biorąc powyższe pod uwagę proponuję wydzielić /tmp jako oddzielną partycję. Wielkość tej partycji zależy od przeznaczenia konkretnej instalacji. Na ogół wystarcza 2-3GB ale jeśli planowane jest uruchomienie dużej galerii grafik to może się okazać, że potrzeba będzie więcej miejsca.

Teraz użytkownicy. Każdy użytkownik systemu musi mieć swój katalog domowy. Zgodnie z ze standardem katalogi domowe użytkowników stanowią podkatalogi katalogu /home. Ze względu na przeznaczenie tego katalogu proponuję wydzielenie go jako osobą partycję. Dzięki temu łatwiej będzie zarządzać przestrzenią wykorzystywaną przez użytkowników (quote) a w przypadku awarii, aktualizacji czy reinstalacji systemu dane te pozostaną bezpieczne nawet w prypadku konieczności formatowania innych partycji. Na partycję tą przeznaczam większość z pozostałej części przestrzeni dyskowej.

Bardzo ważnym katalogiem jest /var. Tutaj lądują logi systemowe, gromadzone są informacje o zainstalowanych pakietach, oczekują w kolejce przesyłki e-mail oraz wydruki, gromadzone są bazy danych. Ponieważ mamy tu duży ruch to warto ten katalog umieścić na osobnej partycji. Wielkość tej partycji zależ od przeznaczenia systemu. W przypadku stacji roboczej powinno wystarczyć ok. 5GB. Jeśli jednak ma to być serwer ogólnego przeznaczenia (poczta i www) to wolną przestrzeń dyskową proponuję podzielić w stosunku 2:1 pomiędzy /home i /var.

Systemy uniksowe wymagają jeszcze jednej partycji. Chodzi o tzw. swap. Jest to bardzo szczególna partycja gdyż nie jest montowana w systemie plików natomiast wykorzystywana jest bezpośredni przez kernel jako pamięć wirtualna. Dyskusja dotycząca wielkości tej partycji jest stara jak Unix. Dawniej swap wykorzystywany był jako pamięć dodatkowa do RAM-u. Należy jednak pamiętać, że swap znajduje się na dysku więc szybkość dostępu do takiej pamięci jest wielokrotnie wolniejszy niż do pamięci fizycznej. Dlatego obecnie swap traktuje się raczej jako "koło ratunkowe" w przypadku chwilowego przeciążenia systemu. Jeśli system nagminnie korzysta z tej partycji to jest to sygnał, że czym prędzej należy dołożyć pamięci RAM lub odciążyć system.
Inne przeznaczenia swap-a to zrzut pamięci w przypadku awarii systemu (wykorzystywane tylko w celach diagnostycznych przez developerów systemu) oraz usypianie systemu stosowane głównie w komputerach przenośnych.
Aby zapewnić prawidłowe działanie dwóch ostatnich funkcjonalności należy ustalić wielkość partycji swap na 1.3xRAM. Jeśli zatem mamy zamontowane 1GB RAM to swap ustalamy na 1.3GB.

Podsumowanie

Poniżej przedstawię dwie propozycje podziału dysku. Nie należy ich traktować jako dogmat. Każda instalacja posiada specyficzne wymagania i to co dobre w jednym przypadku może się nie sprawdzić w innym. Poniższe propozycje to raczej sugestia "na początek" a reszta zależy od administratora.

Stacja robocza

Podział na partycje na stacji roboczej wyglądać zatem będzie następująco:

  1. /boot — 100MB, pierwsza partycja na dysku
  2. swap — 1.3xRAM
  3. / — 3-5GB
  4. /home - reszta dysku

Jest to najmniejszy podział na partycje umożliwiający dalszą rozbudowę systemu i jednocześnie zapewniający bezpieczeństwo danych użytkowników. Dzięki wydzieleniu partycji /boot istnieje również możliwość instalacji alternatywnego systemu na tym samym dysku fizycznym.

Serwer

Podział na partycje na "domowym" serwerze ogólnego przeznaczenia (dysk 80GB):

  1. /boot — 100MB, pierwsza partycja na dysku, wydzielamy ze względów praktycznych
  2. swap — 1.3xRAM
  3. / — 3-5GB
  4. "/tmp" — 3GB, o wydzieleniu decydują głównie względy bezpieczeństwa
  5. /usr — 5GB, na serwerze nie powinno się budować aplikacji więc ten rozmiar jest aż nadto
  6. /var — 20GB, logi, poczta, bazy danych
  7. /home — reszta miejsca (ok. 40GB), katalogi domowe użytkowników systemu i ich strony www.


Utworzył(a): Tuptus. Ostatnia zmiana: Sobota 13 strony Grudzień, 2008 14:59:29 CET autor: Tuptus.

Kategoria: Filesystemy

Reklama