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) hvis man ikke tør mounte harddisken, og "yes" hvis man kører rescue-CD'en for at redde data på harddisken eller fx. vil editere en system-konfigurationsfil, inden man genstarter systemet. Man svarer et eller andet, og derefter får man en kommandofortolker (et kommando-linie prompt. Ingen grafiske user-interface ting her).

Hvis du har en rednings-CD eller et "bootable business card" fra fx. lnx-bbc.org (Linux - Bootable Business Card projektet) som er en CD-ROM i visitkortstørrelse, kan du også boote fra fra den. Når systemet er startet, får du besked om, hvad systemets brugernavn (login-name eller bare login) og password (adgangskode) er. På rescue CD fra http://www.sysresccd.org/ er der faktisk slet ikke nogen adgangskode, man er logget på med det samme.

3.1.2. Hvilke filsystemer skal tjekkes?

En rednings-CD (rescue CD) kan give dig en liste over partitioner og filsystemer på den harddisk, som er direkte koblet på systemet:

   
   fdisk -l /dev/hda
   
   # hvis det er en IDE eller FAST IDE disk, eller hvis det er SCSI:
   
   fdisk -l /dev/sda
   

Den kommando vil give dig en liste med de tilgængelige filsystemer. Den kan for eksempel se sådan ud:

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1        12     96358+   b  Win95 FAT32
/dev/hda2            13        63    409657+  83  NTFS
/dev/hda3            64       127    514080   8e  Linux LVM
/dev/hda4           128      3722  28876837+   5  Extended
/dev/hda5           179      1198   8193118+  83  Linux
/dev/hda6          3239      3279    329301   82  Linux swap

Nu kan du så mounte disse partitioner og arbejde på dem.

Hvis du er interesseret i at se filerne på et Linux filsystem, så kan du mounte det som ext2, også selv om det er ext3. Forskellen er, at hvis du kører fsck (File System Consistency checK) så er det hurtigere, hvis man har ext3 og en gyldig "journal-file", som ofte ligger udenfor partitionen og oftest heldigvis ikke er beskadiget.

Hvis du kører en rescue-CD, som automatisk mounter dine disk-partitioner for dig (som Knoppix kan gøre) så vil du 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.

Du kan bruge kommandoen mount til at få oplysninger om hvilke filsystemer der er monterede (eng.: mounted):

[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.