programmera.net -> linux -> normal     för utskrift      info@programmera.net

Allmänt om partitioner och filsystem

1. Partitioner och filsystem i Linux
2. Ett exempel på partitionering
3. Enhetsbeteckningar under /dev
4. Olika typer av filsystem
5. /etc/fstab

1. Partitioner och filsystem i Linux

Det filsystem som användaren navigerar i kallas för det virtuella filsystemet och består egentligen av flera olika filsystem, som ofta ligger på olika partitioner (kan innebära olika diskar). Det som är lite speciellt i UNIX/Linux är att det virtuella filsystemet döljer för användaren vilket filsystem som egentligen används och vilken disk/partition själva filerna lagras på. Men i t.ex. /etc/fstab kan man se vilka filsystem som svarar mot de olika delarna av filträdet. När man installerar Linux krävs att man alltid minst skapar 2 partitioner:

  1. / (root): Denna partition innehåller all mjukvara och alla filer som systemet använder (dvs allt).
  2. (swap): Denna partition används som extra minne om systemets minne skulle ta slut. Det fungerar så att systemet frigör minne genom att skriva över data i minnet till disk (dvs swap-partitionen) och hämtar sedan detta data vid behov. Det bör tilläggas att då datorn börjar "swappa" sjunker prestandan i systemet avsevärt, så det är egentligen inte alls någon önskvärd situation. Swap-partitionen är inte synlig i det virtuella filträdet, endast operativsystemet har tillgång till denna partition.
När man skapar en extra partition i Linux är det egentligen så att man tilldelar en del av det virtuella filträdet till den nya partitionen. För att frigöra utrymme på rootpartitionen kan man installera en ny disk och skapa en ny partition (t.ex. /dev/hdb1) som man t.ex. mappar mot /extra_disk1/. Man kan nu frigöra utrymme på rootpartitionen genom att flytta filer till /extra_disk1/.

2. Ett exempel på partitionering

I min installation skapade jag två extra partitioner, nämligen:

  1. /home: Denna partition innehåller alla användarnas filer, alltså det mest värdefulla på systemet. Jag placerar /home i en egen partition för att skydda denna del för korruption.
  2. /boot: Det är ganska vanligt att man skapar en egen partition för /boot för att det ska gå att starta systemet även om någon annan partition blir korrumperad. Att /boot skulle bli korrumperad är inte så troligt eftersom filerna i denna mapp i princip aldrig ändras.
Bilden nedan visar en överblick av de partitioner jag skapade:



Disken på 60GB delas alltså upp i 4 partitioner. När jag satte partitionernas storlek tänkte jag såhär:
  1. swap är på 2GB vilket motsvarar dubbla internminnet på min maskin. Detta enligt regelboken.
  2. /boot är bara på 100MB, vilket egentligen är att ta i i överkant. Denna partition behöver egentligen bara vara 10MB.
  3. /home är 10GB, vilket kanske inte är så mycket, men eftersom denna partition mest kommer att innehålla text och källkod behöver den inte vara större.
  4. / (root) är 43GB, vilket är allt som blev kvar. Här kommer alla stora program att installeras och vi behöve alltså mycket plats.

3. Enhetsbeteckningar under /dev

Alla datalagringsenheter som finns uppkopplade till systemet har en motsvarande fil i mappen /dev. Filens namn avslöjjar vilken typ av enhet det rör sig om. Nedan ges några exempel på hur dessa filer kan se ut och hur man ska tolka filnamnet:

Filnamn typ Beskrivning
/dev/hda1  hårddisk  Första primära partitionen på master ATA-disken.
/dev/hda2  hårddisk  Andra primära partitionen på master ATA-disken.
/dev/hda5  hårddisk  Första logiska partitionen på master ATA-disken.
/dev/hdb1  hårddisk  Första partitionen på första slave ATA-disken.
/dev/hdb  CD/DVD  Detta kan vara en CD-RW med en ATA-drivrutin. Märk att det inte finns någon siffra i detta fall (troligen för att en CD-RW inte kan partitioneras).
/dev/cdrom  CD/DVD  En symbolisk länk som pekar till t.ex. /dev/hdb.
/dev/sda1  SCSI-disk  Första partitionen på första SCSI-disken.
/dev/sdb1  SCSI-disk  Första partitionen på andra SCSI-disken.
/dev/scdb0  CD/DVD  En CD-enhet med en SCSI-drivrutin. I detta fall har vi en siffra efter enhetsbeteckningen (ologiskt va?).
/dev/ht1  Band  Första bandstationen med ATA-drivrutiner.
/dev/nht1  Band  Första bandstationen med ATA-drivrutiner.
/dev/st1  Band  Första bandstationen med SCSI-drivrutiner.
/dev/nst1  Band  Första bandstationen med SCSI-drivrutiner.
/dev/fd0  Floppy  Första floppydisken.

4. Olika typer av filsystem

På ett vanlig Linuxinstallation används ganska många typer av filsystem som man inte märker av. Först tittar vi på de diskfilsystem som används på Linux (som används för att lagra filer på disk):

Filsystem Stödjs av Linuxkärna Maximal filstorlek Beskrivning
ext2  1.?  16GB-2TB  Föregångare till ext3. Lagrar data enligt på disken med hjälp av en relativt enkel algoritm.
ext3  2.4.10  16GB-2TB  Detta filsystem är baserat på ext2. Detta filsystem är till skillnad från ext2 journalförande. Det finns 3 nivåer av journalförande (Journal, Writeback och Ordered). Defaultfilsystem för många Linuxdistributioner.
ReiserFS  2.4.1  8TB  Ett annat vanligt journalförande filsystem som har bättre prestanda och skalbarhet än ext3. ReiserFS i Linuxkärnor tidigare än 2.4.10 anses instabil. ReiserFS lagrar all data i ett enda B+ träd där varje element har ett unikt objektid. Denna metod är snabbare om än mer komplex än den metod ext2 och ext3 använder. Defaultfilsystem för bl.a. SuSE och Slackware.

Nu tittar vi på vilka internminnesbaserade filsystem som används av Linux. Interminnesbaserade innebär att de ligger i minnet på maskinen och alltså inte behöver skrivas till disk:

Filsystem Beskrivning
tempfs  Ett filsystem som används för att lagra temporära filer. Filerna lagras i minnet och skrivs bara till disk då de swappas. tempfs ger bättre prestanda för filer som ändras ofta.
devfs  Detta filsystem används för att lagra filerna i /dev-mappen som representerar systemets olika enheter. När du kopplar in en enhet, t.ex. ett USB-minne så ska det dyka upp en fil under /dev för denna enhet. DefFS har fördelen mot ett normalt filsystem att det tillåter hotswap som kan vara nödvändigt i samband med t.ex. USB-enheter som rycks ur och stoppas in när som helst av användaren.
procfs  Detta filsystem används för att lagra filerna i /proc-mappen, där varje process svarar mot en fil.
sysfs  Detta filsystem är en relativt ny uppfinning som infördes först i version 2.6 av Linuxkärnan. SysFS används för att lagra filer rörande drivrutiner (mappen /sys kör sysfs). Många av de filer som före 2.6 låg i /proc har i Linux 2.6 flyttats till /sys.

5. /etc/fstab

Filen /etc/fstab (File System TABle) visar vilka vilka filsystem som finns på systemet. På mitt system ser det ut på följande sätt:
[olle@dev1]$ less /etc/fstab
#This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/home             /home                   ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/hda2               swap                    swap    defaults        0 0
### added for USB floppy Automount
/dev/sda                /mnt/floppy1            auto    noauto,owner, 0 0
/dev/hdc                /media/cdrom            auto    pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
Märk följande:

  • Vissa av filsystemen befinner sig på partitioner eller andra lagringsmedia (typ CD-rom). Andra filsystem ligger helt i minnet. De rader som har texten "none" i den första kolumnen mappar inte mot någon partition eller annan fysisk enhet.
  • Som synes använder jag bara "ext3" på alla partitioner jag skapade i samband med installationen (alltså för /, /boot, /home).
  • Filsystemen "devpts", "tmpfs", "proc" och "sysfs" ligger i interminnet och hanteras helt av Linux. De har inget med dina partitioner att göra.
  • Den näst sista siffran på varje rad används av "dump" för att avgöra vilka filsystem som ska dumpas. En nolla betyder att filsystemet inte ska dumpas.
  • Den sista siffran på varje rad används av "fsck" (file system check) för att bestämma i vilken ordning filsystemen ska kontrolleras vid uppstart. Root (/) ska alltid kollas först, alltså ha lägst nummer. En nolla betyder att filsystemet inte ska kontrolleras.