Kapitel 3. Filsystemer

Linux bruger som standard et filsystem kaldet ext2 (Extended file system version 2), men kan også læse fra og skrive til mange andre filsystemer, f.eks. FAT-baserede filsystemer, der bruges af DOS og Windows.

Generelt formateres et filsystem under Linux ved at benytte kommandoen mkfs (MaKe File System). Har du en uformateret partition (her /dev/hda5), som du ønsker at formatere, sker formateringen ved at skrive (som root):


[root@linus /root]# mkfs /dev/hda5

Programmet mkfs finder selv ud af, hvilket filsystem du har valgt til den ønskede partition, idet denne oplysning findes i partitionstabellen.

Når din computer går ned (ja, det sker, f.eks. når strømmen går), kan du komme ud for at dine filsystemer er i en fejlbehæftet tilstand. Det kan dog ofte reddes af programmet fsck (File System ChecK). Faktisk køres dette program altid ved opstart for at sikre at alle filsystemer er i en god tilstand.

Vi du køre filtjek manuelt på en ext2-partition, så kan du direkte bruge e2fsck:


[root@linus /root]# /sbin/e2fsck /dev/hda5

3.1. Defekte blokke på harddisken

Hvis man har en harddisk med defekte blokke på så bliver man nødt til at finde dem og få filsystemet til at gå uden om. I det følgende gives en vejledning i at gøre dette.

3.1.1. Starte maskinen uden om harddisken(e)

Hvis du har en Red Hat-cd-rom, kan du starte maskinen fra den. Det kan kræve en ændring i opsætningen af din BIOS-opsætning, som vi dog ikke vil komme ind på her. Når der kommer en LILO-promt frem skriver du: "linux rescue".

Redningsproceduren (eng. rescue) vil bede om at få sprog og tastatur valgt – eksakt som det gøres ved en egentlig installation. Bare rolig – det er ikke en installation vi starter på. Når redningsproceduren beder om at montere rod-filsystemet under /mnt/sysimage skal der bare svares "no" (nej), og derefter får man en kommandofortolker.

Hvis du i stedet har et "bootable business card" fra Linuxcare (det er en cd-rom i visitkortstørrelse – se http://lbt.linuxcare.com/download.epl, skal du igen starte maskinen fra den. Når systemet er startet får du besked om hvad visitkortets brugernavn og adgangskode er (på mit er det henholdsvis "root" og "linuxcare") og bliver bedt om at logge ind. Et lille irritationsmoment ved Linuxcares cd-rom er at det går ud fra at der sidder et amerikansk tastatur på maskinen, så tasterne ikke nødvendigvis giver det tegn der er trykt på dem.

3.1.2. Hvilke filsystemer skal tjekkes?

Linuxcare-cd-rom'en vil give dig en liste med de tilgængelige filsystemer når du er logget ind. Den kan for eksempel se sådan ud:


...
/dev/cloop on /mnt/cdrom type ext3 (ro)
/dev/hda2 on /mnt/0 type ext2 (ro)
/dev/hda3 on /mnt/1 type ext2 (ro)
...
Du vil typisk være interesseret i de filsystemer, der er monterede som /mnt/-et-eller-andet-tal, og som er af typen "ext2". Vi kan foreksempel være interesserede i filsystemet på partitionen /dev/hda2.

Hvis du ikke automatisk får en liste med hvad der er af filsystemer i maskinen, kan du bruge kommandoen mount til at få oplysninger om hvilke filsystemer der er monterede:


[root@lnx-bbc ~]# mount
/dev/sda2 on / type ext2 (rw) []
none on /proc type proc (rw)
/dev/sda3 on /boot type ext2 (rw) []
/dev/vg1/lv_home on /home type ext2 (rw)
/dev/vg1/lv_usr on /usr type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hdb1 on /backup type ext2 (rw) []

Og hvis det ikke giver nok oplysninger, kan du bruge kommandoen fdisk til at spørge til partitioneringen af dine diske. IDE-diske (det typiske i skrivebordsmaskiner) har i Linux navnene /dev/hd-et-eller-andet-bogstav. Et linux-systems anden IDE-disk hedder således /dev/hdb og du kan spørge til dens opdeling med kommandoen:


[root@lnx-bbc ~]# fdisk -l /dev/hdb

Disk /dev/hdb: 16 heads, 63 sectors, 59560 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1             1     59560  30018208+  83  Linux

3.1.3. Finde og mærke dårlige blokke

Kør nu kommandoen badblocks -o /tmp/blocks /dev/hda5 hvor hda5 erstattes af den partition man ønsker at tjekke for defekte blokke, og /tmp/blocks er et arbitrært valgt filnavn.

Ældre udgaver af programmet badblocks skal have at vide hvor mange blokke der er på den partition der skal tjekkes. Den oplysning kan man få ved at bede fdisk om en liste med alle partitionerne på den relevante disk. Den disk partitionen /dev/hda2 ligger på hedder /dev/hda (man stryger altså bare nummeret):


[root@lnx-bbc ~]# fdisk -l /dev/hda
...
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        70    529168+  82  Linux Swap
/dev/hda2   *        71       487   3152520   83  Linux
...
Det er tallet 3152520 vi er ude efter. Det føjes til som et sidste argument til badblocks:

[root@lnx-bbc ~]# badblocks -o /tmp/blocks /dev/hda 3152520
Derefter kan man læse filen med cat /tmp/blocks for at se om der blev fundet nogle defekte blokke. Hvis der ikke blev fundet nogen, så behøver man ikke at fortsætte.

Hvis der blev fundet defekte blokke skal du dernæst køre kommandoen e2fsck -l /tmp/blocks /dev/hda5. Den indsætter listen over de defekte blokke fra /tmp/blocks i filsystemets liste med defekte blokke. Til sidst taster du "Ctrl-d" for at komme ud af kommandofortolkeren og genstarte maskinen. Husk at tage din cd-rom ud.

Herefter vil maskinen ikke længere prøve at bruge de defekte blokke badblocks fandt på harddisken. Du kan finde en mere information om de kommandoerne med man badblocks og man e2fsck.

Se også http://www.redhat.com/mailing-lists/ext3-users/msg02454.html for mere information om emnet.