Naprej Nazaj Kazalo

4. Datotečni sistemi, diski in pogoni

4.1 Kako naj prepričam Linux, da bo deloval na mojem disku?

Če je vaš disk IDE ali EIDE, si preberite datoteko /usr/src/linux/drivers/block/README.ide (zajeta je v izvirno kodo jedra Linuxa), ki obsega številne uporabne nasvete o diskih IDE. Številni sodobni krmilniki IDE delajo preslikavo med ,,fizičnimi`` in ,,logičnimi`` cilindri/glavami/sektorji.

Do diskov SCSI imate dostop z linearnimi bločnimi številkami. BIOS si izmisli nekaj ,,logičnih`` podatkov o cilindrih/glavah/sektorjih, da lahko disk deluje v sistemu DOS.

Starejši BIOS, združljiv z IBM PC, navadno ne bo mogel do razdelkov, večjih od 1024 logičnih cilindrov, in bo v najboljšem primeru povzročil, da bo zaganjanje Linuxa s programom LILO na takih razdelkih problematično.

Vseeno lahko take razdelke uporabite v Linuxu ali kakem drugem operacijskem sistemu, ki imajo neposreden dostop do krmilnika.

Priporočeno je narediti vsaj en razdelek za Linux v celoti pod omejitvijo 1024 cilindrov in zaganjati sistem z njega. Drugi razdelki bodo potem delovali v redu.

Videti je, da je nekaj težav tudi z novejšimi pogoni Ultra-DMA. Podrobnosti ne vem, a postajajo zelo pogost problem na namestitvenih prireditvah, ki jih prireja skupina SVLUG. Nič čudnega, če lahko dobite od 8 do 12 GB pogone po 200 ali 300 dolarjev.

[Jim Dennis]

4.2 Kako lahko odbrišem datoteke?

Na splošno je to zelo težko storiti v kateremkoli Unixu zaradi njihove večopravilne narave. Nekateri sicer razvijajo odbrisanje datotek na datotečnem sistemu ext2fs, a ne veselite se prezgodaj.

Na voljo je nekaj programskih paketov, ki namestijo nove ukaze za brisanje in kopiranje. Z novimi ukazi se zbrisana datoteka prenese v poseben imenik -- ,,koš za smeti``. Od tam jo lahko vrnete, dokler se koš samodejno ne izprazni (s procesom, ki teče v ozadju).

Upravljalnik datotek Midnight Commander ponuja možnost odbrisanja (angl. undelete), ki uporablja funkcije iz knjižnice datotečnega sistema ext2 in imenik za odbrisane datoteke za vsak datotečni sistem. Komercialni distribucijski paketi MV lahko imajo to možnost vklopljeno ali pa tudi ne, zato zagotovo preverite distribucijo izvirne kode za navodila, kako omogočiti možnost odbrisanja datotek.

Namesto tega lahko preiskujete surovo diskovno napravo (raw disk device), na kateri je problematični datotečni sistem. To je težko delo. Za kaj takega morate biti izkušen uporabnik in povrhu še root. Vendar je to mogoče. Poženite grep na surovi diskovni napravi, denimo:

grep -b 'bookmarks' /dev/hda
Če podatki niso bili prepisani, bi jih morali biti sposobni obnoviti z urejevalnikom besedil.

[Dave Cinege, Daniel Novotny]

4.3 Kako lahko naredim rezervne kopije?

Kopijo hierarhije imenikov ali popolnega datotečnega sistema na katerikoli nosilec lahko naredite s programoma GNU tar ali cpio, standardnima pripomočkoma Unixa za te namene. Trenutno se zdi Tar več uporabljen, obsega pa tudi izbire v ukazni vrstici za izdelavo stisnjenih, inkrementalnih rezervnih kopij ter kopij z več nosilci. Dokumentacija v obliki GNU Texinfo obsega vse informacije.

Na Usenetu precej omenjajo tudi prosti program Amanda, katerega spletna stran je na naslovu http://www.amanda.org/.

Na voljo je tudi več komercialnih pripomočkov za izdelavo rezervnih kopij. Pogosto so zajeti v komercialne distribucije.

4.4 Kako lahko razdelku nedestruktivno spremenim velikost?

V MS-DOS uporabite program FIPS.EXE, zajet v večino distribucij Linuxa.

Urejevalnik razdelkov GNU parted je dovolj stabilen, da ga navadni, negurujski smrtniki uporabljajo razmeroma zaupljivo. Izvirna koda za zadnjo različico je na ftp://ftp.gnu.org/pub/gnu/parted/. Na voljo je tudi slika zagonske diskete za spreminjanje velikosti korenskih razdelkov ali za poganjanje parted v strojih brez Linuxa. Disketa s sliko je lahko preprostejša za začetnike. Gradnja iz izvirne kode lahko zahteva nekaj dodatnih nastavitev.

Parted ima tudi dokumentacijo za datotečne sisteme za Linux in FAT (MS-DOS) v navadnem besedilnem formatu.

Nekaterim komercialnim distribucijam so priloženi tudi njihovi posebni programi za spreminjanje velikosti razdelkov, kot je Partition Magic.

4.5 Ali je na voljo defragmentator za ext2fs ipd.?

Da. Na voljo je program defrag, defragmentator za datotečna sistema ext2 in minix za Linux in za starejši datotečni sistem vrste ext. Dostopen je na ftp://metalab.unc.edu/pub/Linux/system/filesystems/defrag-0.70.tar.gz. Uporabniki datotečnega sistema ext2 lahko verjetno shajajo tudi brez defraga, saj ima ext2 dodatno kodo, ki preprečuje fragmentiranje tudi na zelo zasedenih diskih.

4.6 Kako na disketi ustvarim datotečni sistem?

Če poganjate novejše namizje Gnome ali KDE, imate orodje z grafičnim uporabniškim vmesnikom, ki vam omogoča preprosto formatiranje disket.

Navadno 3,5-palčno disketo velike gostote v ukazni vrstici formatirate takole:

$ fdformat /dev/fd0H1440
$ mkfs -t ext2 -m 0 /dev/fd0H1440 1440

Za diskete velikosti 5,25 palca uporabite fd0h1200 in 1200 namesto 1440. Če je disketa v pogonu ,,B``, pišite fd1 namesto fd0.

Izbira ,,-m 0`` ukaže programu mkfs.ext2, naj ne rezervira prostora na disku za superuporabnika -- navadno je zadnjih 10% rezerviranih za roota.

Prvi ukaz izvede nizkonivojsko formatiranje. Drugi ukaz ustvari prazen datotečni sistem. Disketo lahko priklopite podobno kakor razdelek diska in preprosto kopirate/premikate datoteke s cp, mv ipd.

Pravila za imenovanje naprav so na splošno enaka v vseh Unixih. Najdete jih v vodniku Matta Welsha Namestitev in začetek dela z Linuxom. (Glej poglavje Kje je dokumentacija?.) Podrobnejši in bolj strokoven opis je v dokumentu Linux Allocated Devices avtorja H. Petra Anvina, <hpa@zytor.com>. Ta spis je na voljo v obliki za LaTeX in ASCII v distribuciji izvirne kode jedra (verjetno v imeniku /usr/src/kernel/Documentation) kot devices.tex in devices.txt.

4.7 Ali Linux podpira navidezne datotečne sisteme, kot je RAID?

Novejša jedra Linuxa podpirajo programski RAID in bodo delovala z diskovnimi krmilniki RAID.

Samodejni priklapljalnik (angl. automounter) za razdelke NFS je del večine distribucij Linuxa.

Poleg tega je še veliko projektov, povezanih z navideznimi datotečnimi sistemi. Eden izmed njih, Linux Logical Volume Manager, je na http://linux.msede.com/lvm/.

4.8 Ali Linux podpira enkripcijo datotečnega sistema?

Da. Eden teh datotečnih sistemov, ppdd, se arhivira na http://pweb.de.uu.net/flexsys.mtk/.

4.9 Kaj pomenijo grda sporočila o inodih, blokih in podobno?

Morda imate pokvarjen datotečni sistem, najbrž zato, ker niste pravilno pripravili Linuxa na izklop (z ukazom shutdown), preden ste izklopili ali vnovič zagnali računalnik. Najnovejši program shutdown dobite na primer v paketu util-linux, ki je arhiviran na sunsite in tsx-11.

Če imate srečo, bo program fsck (ali e2fsck ali xfsck, kakor se pač že imenuje, če nimate samodejnega fsck-ja), lahko popravil vaš datotečni sistem. Če nimate sreče, je datotečni sistem uničen in ga boste morali reinicializirati s programom mkfs (ali mke2fs ali mkxfs itd.) in prepisati podatke z varnostnih kopij.

NB: Ne poskusite preverjati datotečnega sistema, ki je priklopljen v načinu za branje/pisanje -- to se nanaša tudi na korenski razdelek, če ob zagonu ne vidite napisa

VFS: mounted root ... read-only

4.10 Zakaj moje izmenjevalno območje za navidezni pomnilnik ne deluje?

Ko zaganjate računalnik (ali ročno vključujete izmenjevalno področje, angl. swap), morate videti sporočilo

Adding Swap: NNNNk swap-space

Če sploh ne vidite nobenega sporočila, vam verjetno manjka ukaz

swapon -av
(ukaz, ki vključi izmenjevalno funkcijo) v datoteki /etc/rc.local ali /etc/rc.d/* (sistemski štartni skripti), ali ste pozabili vpisati prave podatke v /etc/fstab, na primer:
/dev/hda2  none   swap    sw

Lahko se vam prikaže sporočilo

Unable to find swap-space signature

To pomeni, da ste pozabili pognati mkswap. Podrobnosti si oglejte na man mkswap; deluje zelo podobno kakor mkfs.

Ukaz free poleg količine prostega pomnilnika izpiše tudi:

             total       used       free
Swap:        10188       2960       7228

Če ukaz cat /proc/swaps razkrije le ime datotek ali razdelkov, ne pa tudi podatka o izmenjevalnem prostoru, potrebuje izmenjevalna datoteka ali razdelek vnovično inicializacijo.

Uporabite fdisk (kot root), da ugotovite, kateri razdelek diska je bil določen za izmenjevalni razdelek. Razdelek je treba še vedno inicializirati z mkswap, preden ga omogočite s swapon.

[Andy Jefferson, Steve Withers]

4.11 Kako lahko začasno dodam izmenjevalni prostor?

Poleg izmenjevalnega razdelka lahko Linux uporablja tudi izmenjevalno datoteko. Nekateri programi, kot g++, lahko uporabljajo velikanske količine navideznega pomnilnika, kar zahteva začasno stvaritev dodatnega prostora. Če želite, denimo, namestiti dodatnih 64 MB izmenjevalnega prostora, uporabite naslednje lupinske ukaze:

# dd if=/dev/zero of=/swap bs=1024 count=65535
# mkswap /swap
# swapon /swap
Argument count= ukaza dd določa, kako velika naj bo izmenjevalna datoteka. V tem primeru je ime izmenjevalne datoteke /swap, vendar lahko ime in mesto na splošno določate poljubno, glede na dostopni prostor v vašem datotečnem sistemu in pravico pisanja v določeni imenik.

Ko izmenjevalnega prostora ne potrebujete več, ga lahko odstranite z naslednjima ukazoma:

# swapoff /swap
# rm /swap
Za podrobna navodila glej tudi Installation HOWTO ter Namestitev in začetek dela z Linuxom.

Če po tem še vedno ne boste imeli dovolj izmenjevalnega prostora, si oglejte Kako lahko uporabim več kot 128 MB izmenjevalnega prostora?.

4.12 Ali lahko odstranim LILO, da bo moj sistem spet zaganjal DOS?

Program lilo (ne celotni paket LILO) uporablja izbiro -u v ukazni vrstici za odmestitev zagonskega nalagalnika LILO. Podati morate tudi ime naprave, v katero ste namestili LILO, na primer:

lilo -u /dev/hda
To na disk zapiše izvirni glavni zagonski sektor, kakršen je bil pred uporabo paketa LILO. Najde ga v datoteki /boot/boot.0300. Če ste LILO namestili na razdelek kot sekundarni zagonski nalagalnik, denimo na /dev/hda1, lilo znova namesti izvirni zagonski sektor iz datoteke /boot/boot.0301. Podrobnosti si oglejte na strani referenčnega priročnika o lilo. Hvala Villyju Kruseju, da me je spomnil, naj osvežim ta odgovor.

Če imate zgodnjo različico paketa LILO, boste morali uporabiti nedokumentirani dosovski (MS-DOS 5.0 ali poznejši, ali OS/2) ukaz FDISK /MBR. To bo obnovilo standardni glavni dosovski zagonski zapis (angl. Master Boot Record). Če imate DR-DOS 6.0, pojdite v FDISK po običajni poti in potem izberite izbiro za prepis glavnega zagonskega zapisa (,,Re-write Master Boot Record``).

Če naredite zagonsko disketo z namestitvenim procesom v Windows, preverite, ali so na njej programi FDISK.EXE, FORMAT.COM in SYS.COM, in uporabite to, da znova namestite MS-DOS na disk.

Če nimate MS-DOS ali DR-DOS, morate uporabiti zagonski sektor, ki ga je LILO shranil, ko ste ga prvič namestili. Saj ste shranili to datoteko, kajne? Verjetno se imenuje boot.0301 ali kaj podobnega. Napišite

dd if=boot.0301 of=/dev/hda bs=445 count=1
(ali /dev/sda, če uporabljate disk SCSI). To lahko zbriše tudi vašo razdelitveno tabelo, zato pozor! Če ste obupani, lahko uporabite
dd if=/dev/zero of=/dev/hda bs=512 count=1

To bo povsem zbrisalo vašo razdelitveno tabelo in zagonski sektor; potem lahko še enkrat formatirate disk z vašim priljubljenim programom. Toda to bo naredilo tudi vsebino vašega diska nedostopno -- če niste strokovnjak, boste izgubili vse podatke.

Upoštevajte, da dosovski MBR zažene tisti (in le tisti!) razdelek, ki je označen kot delujoč. Morda boste morali uporabiti fdisk za prižiganje in ugašanje zastavic dejavnosti na vaših razdelkih. (Prevajalčeva opomba: Uporabite fdisk, da boste povsem prepričani, ali je dosovski razdelek res delujoč, preden storite karkoli iz tega poglavja. Zgodilo se mi je že, da je bil razdelek z Linuxom delujoč, LILO odstranjen iz MBR, računalnik pa ni zagnal nobenega sistema.)

4.13 Zakaj program fdformat zahteva pravice naduporabnika?

Sistemske klice za formatiranje diskete lahko izvedete le kot root, ne glede na morebitna drugačna dovoljenja za naprave /dev/fd0*. Če želite, da bo katerikoli uporabnik lahko formatiral disketo, poskusite dobiti program fdformat2. Ta se izogne omejitvam tako, da teče s setuid kot root.

4.14 Zakaj se razdelki ext2fs preverjajo ob vsakem zagonu?

Glej razdelek EXT2-fs: warning: mounting unchecked filesystem..

4.15 Zakaj lahko moj korenski datotečni sistem le berem?

Če vas zanima, kako ste zašli v trenutno stanje, si preberite razdelek EXT2-fs: warning: mounting unchecked filesystem..

Še enkrat priklopite korenski datotečni sistem. Če je datoteka /etc/fstab pravilna, preprosto priklopite takole:

mount -n -o remount /

Če je /etc/fstab napačna, morate podati ime naprave in verjetno tudi vrsto, npr.:

mount -n -o remount -t ext2 /dev/hda2 /

4.16 Kaj je /proc/kcore?

V resnici nobena od datotek v imeniku /proc ne počiva v njem -- to so le ,,navidezne`` datoteke, ki jih naredi jedro, da vam da informacijo o sistemu. Zato tudi nobena od tamkajšnjih datotek ne zaseda prostora na disku.

/proc/kcore je ,,vzdevek`` pomnilnika v vašem računalniku. Velikost te datoteke je enaka velikosti vašega RAM in če jo berete kot datoteko, bere jedro vsebino pomnilnika.

4.17 Zakaj krmilnik AHA1542C ne deluje z Linuxom?

Izbira v biosu za dovolitev diskov z več kot 1024 cilindri je potrebna le za odpravo pomanjkljivosti biosa, združljivega s PC, in mora biti v Linuxu izklopljena. Starejša jedra Linuxa morajo imeti izklopljene vse izbire ,,naprednega biosa`` -- vse, razen tiste o pregledovanju vodila za zaganjalne naprave (bus scanning for bootable devices).

4.18 Kje lahko najdem datotečni sistem z dnevniki?

Linux pravzaprav podpira več dnevniških datotečnih sistemov; ext3 je zdaj del trenutnega jedra 2.4.x.

Datotečni sistem z dnevniki (angl. journalling file system), imenovan ,,Reiserfs``, so pravkar dali na preizkušanje. Pravijo, da naredi Linux celo hitrejši od Linuxa z nameščenim datotečnim sistemom Ext2, še posebej, če delate s številnimi malimi datotekami.

Popolni podatki so dostopni prek http://devlinux.org/namesys/.

JFS še vedno razvijajo.


Naprej Nazaj Kazalo