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.
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
.
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?
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.
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).
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.
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?).
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.
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% /varotprilike 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.
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.
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
.
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đaj
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.
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.