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:
- / (root): Denna partition innehåller all mjukvara och alla filer som systemet använder (dvs allt).
- (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:
- /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.
- /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:
- swap är på 2GB vilket motsvarar dubbla internminnet på min maskin. Detta enligt regelboken.
- /boot är bara på 100MB, vilket egentligen är att ta i i överkant. Denna partition behöver egentligen bara vara 10MB.
- /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.
- / (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.