Particije mini-KAKO

Kristan Koehntopp, kris@koehntopp.de

verzija 2.4, 3. studenog 1997.


Ovaj mini-KAKO pomaže u planiranju i dijeljenju prostora na disku za svoj Linux sustav. Govori o hardveru diskova, particijama, veličini i položaju swapa, datotečnim sustavima, njihovim vrstama i povezanim temama. Namjera mi je dati vam nešto teoretskog znanja, a ne postupke iz prakse.

1. Uvod

1.1 Što je ovo?

Ovo je Linux mini-KAKO. Mini-KAKO je tekst manjeg obujma koji objašnjava postupke instalacije ili održavanja Linuxa. Manji je jer je njegova tema ili sadržaj premalen za pravi KAKO ili čak knjigu. KAKO-i nisu priručnici: tome služe man stranice.

1.2 Što je u njemu? i povezani KAKO dokumenti

Ovaj mini-KAKO objašnjava planiranje i dijeljenje prostora na disku za vaš Linux sustav. Govori o hardveru diskova, particijama, veličini i položaju swap, datotečnim sustavima, njihovim vrstama i povezanim temama. Namjera mi je dati vam nešto teoretskog znanja, pa ću uglavnom govoriti o principima, a ne alatima.

Idealno, ovaj biste dokument trebali pročitati prije svoje prve instalacije, no iz nekog razloga to je pomalo teško većini ljudi. Početnici imaju i drugih problema osim optimiziranja podjele diska. Vi ste vjerojatno već završili instaliranje Linuxa i sad se pitate o načinima poboljšavanja te instalacije ili izbjegavanju nekih gadnih grešaka u slijedećoj. Pa, očekujte želju za brisanjem i ponovnim instaliranjem nakon što završite s ovim tekstom. :-)

Ovaj mini-KAKO uglavnom je ograničen na planiranje i dijeljenje diskovnog prostora. Ne upućuje u korištenje fdisk-a, LILO-a, mke2fs-a ili programa za backup. O tome su napisani drugi KAKO-i. Za svježe informacije o Linux HOWTO-ima pogledajte Linux HOWTO Index. Tamo su i upute o nabavljanju HOWTO-a.

Kako bi naučili procjenjivati razne potrebe veličine i brzine za različite dijelove datotečnog sustava, pročitajte Linux Multiple Disks Layout mini-HOWTO Gjoena Steina, gjoen@nyx.net.

Za upute i razmišljanja o diskovima s više od 1024 cilindra pogledajte Linux Large Disk mini-HOWTO Andriesa Brouwera, aeb@cwi.nl.

Za upute o ograničavanju korisničkog korištenja prostora na disku (kvote) pročitajte Linux Quota mini-HOWTO Alberta M. C. Tama, bertie@scn.org).

Za sada ne postoje općeniti dokumenti o backupu diskova, ali nekoliko dokumenata govori o specifičnim backup rješenjima. Za upute o integriranju Linuxa u IBM ADSM backup okružje pogledajte Linux ADSM Backup mini-HOWTO Thomasa Koeniga, Thomas.Koenig@ciw.uni-karlsruhe.de. Za upute o backupu Linuxa preko MS DOS-a pogledajte Linux Backup with MSDOS mini-HOWTO Christophera Neufelda, neufeld@physics.utoronto.ca.

Za upute o pisanju i predavanju HOWTO dokumenata pogledajte Linux HOWTO Index Tima Bynuma, linux-howto@sunsite.unc.edu.

I pregledavanje /usr/src/linux/Documentation može biti vrlo plodno. Za neke informacije o svojstvima podrške za vaš disk pročitajte ide.txt i scsi.txt, te pogledajte direktorij filesystems.

2. A što su to particije?

Ubrzo nakon što su izmišljeni PC tvrdi diskovi ljudi su htjeli instalirati više operacijskih sustava, čak i ako je njihov sustav imao samo jedan disk. Zato je bio potreban način podjele jednog fizičkog diska na više logičkih. Eto što je particija: neprekinut slijed blokova na vašem tvrdom disku kojeg većina operacijskih sustava tretira kao potpuno odvojen disk.

Očito je da se particije ne smiju preklapati: operacijski sustav sigurno neće biti zadovoljan ako neki drugi operacijski sustav instaliran na istom stroju briše važne informacije zbog preklapanja particija. Između susjednih particija ne bi smjelo biti ni rupa. Takva situacija nije štetna, ali tako bacate dragocjen diskovni prostor.

Disk ne mora biti potpuno particioniran. Možda ćete htjeti ostaviti nešto prostora na kraju diska koji još nije dodijeljen nijednom instaliranom operacijskom sustavu. Poslije, kad shvatite koju instalaciju najviše koristite, na taj preostali prostor možete staviti datotečni sustav.

Particije se ne mogu micati niti povećavati ili smanjivati bez uništavanja datotečnog sustava koji sadrže. Zato ponovno particioniranje obično uključuje backup i vraćanje svih datotečnih sustava o kojim se radi. U stvari, prilično je uobičajeno da potpuno poremetite stvari, pa treba spremiti na sigurno sve podatke sa svih diskova tog računala prije nego što i dirnete stvari tipa fdisk.

Međutim, neke particije s određenim vrstama datotečnih sustava zapravo se mogu podijeliti bez gubljenja podataka (uz malo sreće). Na primjer, program fips dijeli MS DOS particije kako bi oslobodili prostora za instaliranje Linuxa bez potrebe za ponovnom instalacijom MS DOS-a. Ali, još uvijek nećete dirati takve stvari bez pažljivog backupa svega na stroju, zar ne?

2.1 Backup je važan

Za backup su najzgodnije trake. Brze su, pouzdane i lake za korištenje, pa možete često izvoditi backup, automatski i bez problema.

Banana na podu: ja pričam o pravim trakama, ne onom ftape smeću za disketne kontrolere. Razmišljajte o SCSI-u: SCSI podrška je ugrađena u Linux. Ne morate učitavati ASPI podršku, ne gubite dragocjenu HMA i kad je jednom SCSI host adapter instaliran, samo prikvačite dodatne diskove, trake i CD-ROM-ove. Nema više I/O adresa, igranja s IRQ-ovima ili podešavanja Master/Slave ili PIO razine.

Uz to: bolji SCSI host adapteri daju vam visoke I/O performanse bez puno korištenja CPU-a. Čak i kod velike aktivnosti diska brzina odgovora bit će dobra. Ako kanite koristiti Linux sustav za veći Usenet feed ili postati ISP, ni ne pomišljajte o sustavu bez SCSI-a.

2.2 Brojevi i imena uređaja

Broj particija na Intel sustavu ograničen je od početka: izvorna particijska tabela instalirala se kao dio boot sektora i sadržavala prostora za samo 4 particije. Ove particije sada se nazivaju primarne particije. Kad je potreba za više particija na sustavu postala očigledna, izmišljene su logičke particije. Broj logičkih particija nije ograničen: svaka logička particija sadrži pokazivač na slijedeću logičku particiju, pa teoretski možete imati neograničen lanac particija.

Iz razloga kompatibilnosti moralo se označiti prostor koji koriste sve logičke particije. Ako koristite logičke particije, jedna je primarna particija označena kao extended (proširena), a njen početak i kraj pokazuju na prostor koji zauzimaju vaše logičke particije. Naravno, prostor svih logičkih particija mora biti neprekinut. Može postojati samo jedna proširena particija: nijedan fdisk neće stvoriti više od jedne.

Linux radi s ograničenim brojem particija po disku. Pod Linuxom možete koristiti 4 primarne particije (3 korisne, ako koristite logičke particije) i najviše 15 particija na SCSI disku (na IDE disku sve skupa 63).

Jedina važna stvar kod datoteke uređaja su njen major (veći) i minor (manji) broj koji su pokazani umjesto veličine:

 
$ ls -l /dev/hda
brw-rw----   1 root     disk       3,   0 Jul 18  1994 /dev/hda
                                   ^    ^
                                   |    manji broj uređaja
                                   veći broj uređaja

Kod pristupa datoteci uređaja, veći broj odabire podršku koja se poziva za ulaz/izlaz uređaja. Ovaj poziv obavlja se s manjim brojem kao parametrom i značenje manjeg broja u potpunosti ovisi o podršci. Korištenje manjih brojeva obično opisuje dokumentacija podrške. Za IDE diskove dokumentacija je u /usr/src/linux/Documentation/ide.txt. Za SCSI diskove takvu dokumentaciju očekivali biste u /usr/src/linux/Documentation/scsi.txt, ali tamo je nema. Morat ćete provjeriti izvorni kod podrške (/usr/src/linux/driver/scsi/sd.c, 184.-196. red). Na sreću, popis imena i brojeva uređaja Petera Anvina nalazi se u /usr/src/linux/Documentation/devices.txt; pogledajte opise blok uređaja, veći 3, 22, 33 i 34 za IDE i veći 8 za SCSI diskove. Veći i manji broj dugi su jedan bajt i zbog toga je broj particija na disku ograničen.

O imenima uređaja postoje konvencije na koje se oslanjaju mnogi alati sustava. Očekuju da se vaši IDE diskovi zovu /dev/hd*, a SCSI diskovi /dev/sd*. Diskovi su označeni s a, b, c, ..., pa je /dev/hda vaš prvi IDE disk, a /dev/sda vaš prvi SCSI disk. Oba uređaja predstavljaju cijele diskove, od prvog bloka. Pisanje na ove uređaje krivim alatima uništit će njihov master boot loader i particijsku tabelu, čineći sve podatke na tom disku ili vaš sustav nedostupnim. Pazite što radite, i, opet, backup prije toga.

Primarne su particije 1, 2, 3 i 4. Dakle, /dev/hda1 je prva primarna particija na prvom IDE disku itd. Logičke particije imaju brojeve iznad 5, pa je /dev/sdb5 prva logička particija na drugom SCSI disku.

Svaka particija ima adresu početnog i završnog bloka i vrstu. Vrsta je numerički kod (jedan bajt) koji dotičnu particiju pripisuje određenoj vrsti operacijskog sustava. Na sreću računalnih konzultanata kodovi za vrste particija nisu baš jedinstveni, pa uvijek postoji mogućnost da dva operacijska sustava koriste isti kod vrste.

Linux koristi kod 0x82 za swap particije i 0x83 za "urođene" datotečne sustave (za većinu vas to je ext2). Nekad popularan, sad zastarjeli Linux/Minix datotečni sustav koristio je kod 0x81. OS/2 svoje particije označava s 0x07, kao i NTFS Windowsa NT. MS DOS koristi nekoliko kodova za razne varijante FAT datotečnog sustava: poznate su 0x01, 0x04 i 0x06. DR-DOS je koristio 0x81 za zaštićene FAT particije, tako se sudarajući s Linux/Minix-om, no ni Linux/Minix ni DR-DOS više nisu u širokoj primjeni. Usput, proširena particija koja se koristi kao sadržavatelj logičkih ima kod 0x05.

Particije se stvaraju i brišu programom fdisk. Svaki operacijski sustav s malo samopoštovanja dolazi s fdiskom i koji se tradicionalno čak i zove fdisk (ili FDISK.EXE) u skoro svim OS-evima. Neki fdiskovi, kao što je DOS-ov, ponešto su ograničeni u radu s particijama drugih operacijskih sustava. Takva ograničenja uključuju potpunu nesposobnost rada s bilo čime što ima nepoznat kod, nesposobnost rada s brojevima cilindara većim od 1024 i nesposobnost stvaranja ili čak razumijevanja particija koje ne završavaju na granici cilindra. Na primjer, MS-DOS fdisk ne može brisati NTFS particije; OS/2 fdisk poznat je po tihom "ispravljanju" particija stvorenih u Linux fdisku koje ne završavaju na granici cilindra; obojica, DOS i OS/2 fdisk, imaju problema s diskovima koji imaju više od 1024 cilindra (za detalje o takvim diskovima pogledajte Large disk mini-HOWTO).

3. Koje su mi particije potrebne?

3.1 Koliko particija trebam?

Dakle, koje vam particije trebaju? Pa, neki operacijski sustavi ne vjeruju u dizanje s logičke particije iz razloga neshvatljivih bilo kojem razumnom umu. Zato ćete vjerojatno rezervirati svoje primarne particije za dizanje MS-DOS-a, OS/2-a i Linuxa ili što vam već treba. Nemojte zaboraviti da je potrebna samo jedna primarna particija za proširenu particiju, koja sadrži ostale logičke particije.

Dizanje operacijskih sustava obavlja se u realnom modu i uključuje petljanje s BIOS-ima i granicom od 1024 cilindra. Vjerojatno ćete svoje particije za dizanje staviti u prva 1024 cilindra svog diska kako bi izbjegli bilo kakve probleme. Opet, za više detalja pročitajte Large disk mini-HOWTO.

Za instalaciju Linuxa potrebna vam je barem jedna particija. Ako se kernel učitava s te particije (na primjer pomoću LILO-a), mora ju moći čitati vaš BIOS. Ako za učitavanje svog kernela koristite druga sredstva (na primjer disketu ili LOADLIN.EXE, program za učitavanje Linuxa iz MS DOS-a) particija može biti bilo gdje. U svakom slučaju, vrsta joj mora biti 0x83 (Linux native).

Vašem će sustavu trebati swap. Ako nećete koristiti datoteke, potrebna vam je posvećena swap particija. Pošto joj pristupa samo Linux kernel koji ne pati od manjaka PC BIOS-a, ona se može nalaziti bilo gdje. Za nju preporučam korištenje logičke particije (/dev/?d?5 i više). Posvećene Linux swap particije imaju vrstu 0x82 (Linux swap).

To su minimalne potrebe. Možda će više Linux particija biti korisnije. Čitajte dalje.

3.2 Koliki treba biti swap prostor

Ako ste se odlučili za posebnu swap particiju, što je općenito Dobra Ideja [tm], u procjeni njene veličine slijedite ove savjete:

Dakle, za konfiguraciju s 16 MB RAM-a, pri minimalnoj konfiguraciji swap nije potreban, a više od 48 MB swap-a vjerojatno je beskorisno. Točan iznos potrebne memorije ovisi o mješavini aplikacija korištenih na računalu (a što ste drugo očekivali?).

3.3 Kamo ide moj swap prostor?

Sažetak: swap stavite na brz disk s mnogo glava koji nije zauzet drugim stvarima. Ako imate više diskova swap podijelite i razbacajte po svojim diskovima, ili čak kontrolerima.

Još bolje: kupite još RAM-a.

3.4 Neke činjenice o datotečnim sustavima i fragmentaciji

O prostoru na disku brine se operacijski sustav u jedinicama blokova i njihovim fragmentima. Na ext2, fragmenti i blokovi moraju biti jednake veličine, pa se možemo usredotočiti na blokove.

Datoteke mogu imati bilo koju veličinu. Ne završavaju na granicama blokova. Tako je kod svake datoteke dio zadnjeg bloka datoteke bačen. Ako pretpostavimo da su veličine datoteka slučajne, beskorisno je otprilike pola bloka na svaku datoteku na vašem disku. Tanenbaum ovo u svojoj knjizi Operating Systems zove "internom fragmentacijom".

Broj datoteka na disku možete pogoditi po broju zauzetih inodea. Na mom disku

 
# df -i
Filesystem           Inodes   IUsed   IFree  %IUsed Mounted on
/dev/hda3              64256   12234   52022    19%  /
/dev/hda5              96000   43058   52942    45%  /var
otprilike je 12 000 datoteka na / i oko 44 000 datoteka na /var. Ako je veličina bloka 1 kB, u završnim blokovima datoteka izgubljeno je oko 6 + 22 = 28 MB prostora na disku. Da sam izabrao veličinu bloka od 4 kB, izgubio bih 4 puta manje prostora.

No prenošenje podataka brže je za velike, neprekinute komade podataka. Zato ext2 pokušava unaprijed zauzeti 8 neprekinutih blokova za rastuće datoteke. Nekorišteni blokovi odbacuju se pri zatvaranju datoteke, pa prostor nije bačen.

Prekinut slijed blokova datoteke loš je za brzinu jer se datotekama često pristupa sekvencijalno. Operacijski sustav prisiljava na dijeljenje pristupa disku, a disk na pomicanje glave. Ovo se naziva "eksterna fragmentacija" ili jednostavno "fragmentacija" i uobičajen je problem na DOS-ovim datotečnim sustavima.

ext2 ima nekoliko strategija izbjegavanja eksterne fragmentacije. Fragmentacija obično nije velik problem za ext2, čak ni na vrlo korištenim particijama kao što je Usenet news spool. Iako postoji alat za defragmentiranje ext2 datotečnih sustava, nitko ga ne koristi i nije u toku s trenutnom verzijom ext2. Koristite ga, ali na svoju odgovornost.

MS DOS datotečni sustav dobro je poznat po svojem patološkom radu s prostorom diska. Zajedno s beskonačnim buffer cacheom koje MS DOS koristi učinak fragmentacije datoteka na brzinu vrlo je zamjetan. Korisnici DOS-a navikli su na defragmentiranje diska svakih par tjedana i neki su o defragmentaciji razvili neka ritualna vjerovanja. Te navike ne bi trebalo prenijeti na Linux i ext2. Linuxovi datotečni sustavi uz normalno korištenje ne trebaju defragmentaciju što se odnosi na bilo koju situaciju s barem 5% slobodnog prostora na disku.

MS DOS-ov datotečni sustav također je poznat po gubljenju velikih količina diskovnog prostora zbog interne fragmentacije. Za particije veće od 256 MB veličine bloka postaju visoke do beskorisnosti (ovo je donekle ispravljeno u FAT32).

ext2 vam ne nameće izbor velikih blokova za velike datotečne sustave, osim kod vrlo velikih datotečnih sustava većih od 0.5 TB (jedan terabajt sadrži 1024 gigabajta), gdje manje veličine blokova postaju nedjelotvorne. Tako, za razliku od DOS-a, ne postoji potreba za dijeljenjem velikih diskova na više particija kako bi se smanjila veličina bloka. Ako je moguće, koristite predodređenu veličinu od 1 kB-a. Možda ćete na nekim particijama eksperimentirati s 2 kB velikim blokovima, ali očekujte neke rijetko susretane bagove: većina ljudi koristi predodređeno.

3.5 Životni vijek datoteka i ciklusi backupa kao kriteriji particioniranja

Na ext2 odluke o particioniranju trebale bi biti vođene razmatranjem backupa i izbjegavanjem eksterne fragmentacije zbog različitog životnog vijeka datoteka.

Datoteke imaju svoj životni vijek. Nakon što je datoteka stvorena, neko će vrijeme ostati na sustavu, a zatim biti izbrisana. Trajanje datoteka u sustavu je vrlo raznolika i dijelom ovisi o mjestu datoteke. Na primjer, datoteke u /bin, /sbin, /usr/sbin, /usr/bin i sličnima vjerojatno će imati vrlo dug vijek: mnogi mjeseci i više. Datoteke u /home imaju srednji vijek: otprilike nekoliko tjedana. Datoteke u /var obično kratko žive: gotovo nijedna datoteka u /var/spool/news neće ostati više od nekoliko dana, a datotekama u /var/spool/lpd vijek se mjeri u minutama ili manje.

Za backup je korisno kad je veličina dnevnog backupa manja od kapaciteta jednog medija. Dnevni backup može biti potpun ili inkrementalan.

Možete se odlučiti za particije koje su dovoljno male da stanu na jedan medij (ako ste odabrali potpune dnevne backupe). U svakom slučaju, particija bi trebala biti dovoljno mala da dnevna delta (sve promijenjene datoteke) stane na jedan medij (ako ste odabrali inkrementalni backup i kanite mijenjati medij za tjedni/mjesečni potpuni backup -- uz vaše prisustvo).

Vaša strategija backupa ovisi o toj odluci.

Kod planiranja i kupovanja diskovnog prostora, nemojte zaboraviti ostaviti dovoljno novca za odgovarajući backup! Podaci bez backupa bezvrijedni su! Cijena ponovne proizvodnje podataka puno je veća od cijene backupa za gotovo svakoga!

Za brzinu je korisno držanje datoteka različitog vijeka na različitim particijama. Ovako će se kratkotrajne datoteke na news particiji vrlo teško fragmentirati. To neće utjecati na brzinu / ili /home particije.

4. Primjer

4.1 Preporučeni model za naprednog početnika

Uobičajeno je napraviti /, /home i /var particije kao što je gore objašnjeno. Jednostavno je za instalaciju i održavanje i dovoljno se razlikuje da bi izbjeglo krivi učinak zbog različitog životnog vijeka. Dobro odgovara i backup modelu: skoro se nitko ne bavi backupom USENET news spoolova i u /var se isplati spašavati samo neke datoteke (/var/spool/mail mi prvi pada na pamet). S druge strane, / se rijetko mijenja i može ga se backupirati kad je potrebno (nakon promjena konfiguracije), a dovoljno je malen da potpuno stane na većinu medija (250 do 500 MB, ovisno o količini instaliranih programa). /home sadrži važne korisničke podatke i trebalo bi ga dnevno backupirati. Neke instalacije imaju vrlo velik /home i zato moraju koristiti inkrementalne backupe.

Neki sustavi i /tmp stavljaju na posebnu particiju, drugi ga simbolički vežu za /var/tmp kako bi postigli isti učinak (primjetite da ovo utječe jednokorisnički mod kada je /var nedostupan, pa sustav nema /tmp dok ga ne napravite ili ručno montirate /var) ili ga stavljaju na RAM disk (ovo radi Solaris, na primjer). Tako je /tmp izvan / što je dobra ideja.

Ovaj je model prikladan i za nadogradnje ili ponovne instalacije: snimite svoje konfiguracijske datoteke (ili cijeli /etc) u neki direktorij na /home particiji), izbrišite svoj /, ponovno instalirajte i stare konfiguracije vratite iz snimljenog direktorija na /home.

5. Kako je to na mom računalu

Na mojoj je polici stajala jedna stara 386-ica na 40 Mhz, s ISA sabirnicom, koju sam napustio prije dvije godine jer mi više nije trebala. Htio sam ju pretvoriti u malen poslužitelj mog kućnog LAN-a bez X-a.

Evo kako sam to napravio: uzeo sam tu 386-icu i na nju stavio 16 MB RAM-a. Dodao jeftini EIDE disk, najmanji kojeg sam našao (800 MB) i Ethernet karticu. Dodao stari Hercules jer sam za njega još imao monitor. Instalirao Linux i tamo imam lokalni NFS, SMB, HTTP, LPD/LPR i NNTP poslužitelj, kao i router pošte i POP3 poslužitelj. Uz dodatnu ISDN karticu stroj mi je postao i TCP/IP router i firewall.

Većina je prostora na disku tog računala otišlo u /var, /var/spool/mail, /var/spool/news i /var/httpd/html. /var sam stavio na odvojenu, veliku particiju. Na tom stroju neće biti korisnika, pa nisam napravio /home particiju, a /home je montiran s neke druge radne stanice preko NFS-a.

Linux bez X-a uz nekoliko lokalno instaliranih alata bit će sasvim zadovoljan na / particiji od 250 MB. Računalo ima 16 MB RAM-a, ali na njemu će raditi dosta poslužitelja. 16 MB swapa trebalo bi biti dosta, 32 MB napretek. Ne štedim prostor na disku, pa će stroj dobiti 32 MB. Iz sentimentalnih razloga tu je i MS DOS particija od nekih 20 MB. Odlučio sam /home uvoziti s drugog računala, pa preostalih 500+ MB ostaje za /var. To je više nego dovoljno za kućni Usenet news feed.

Dobivamo
UređajMontiran naVeličina /dev/hda1/dos_c25 MB /dev/hda2- (swap)32 MB /dev/hda3/250 MB /dev/hda4- (proširena particija)500 MB /dev/hda5/var500 MB kućni:/home/home1.6 GB

Backup ovog stroja obavlja se preko mreže na traku s kućni-a. Pošto je sve na ovom računalu instalirano s CD-ROM-a spašavam samo neke konfiguracijske datoteke iz /etc, moje lokalno instalirane *.tgz datoteke iz /root/IzvorniKod/Instalirano i /var/spool/mail, kao i /var/httpd/html. Njih svake noći kopiram u poseban direktorij, /home/backup na kućni, gdje ih hvata redoviti backup kućni-og.

6. Hrvatski prijevod

Najnovija verzija ovog prijevoda može se naći na http://dokumentacija.linux.hr/Particije.html. Održava ga Matej Vela, mvela@public.srce.hr. Svi su prilozi, primjedbe i prijedlozi dobrodošli.