OPERATIVSYSTEM OCH PRAKTISK LINUX Föreläsning 4 – Vecka 46 2010 INNEHÅLL Filsystem Filsystemkommandon i Linux Filstrukturen i Linux
Filsystem Alla operativsystem har behov av att lagra och läsa data En del data lagras tillfälligt i RAM-minnet (t.ex. Instruktionerna för ett program när man startat upp en process av det) På dagens datorer finns det också behov av att lagra data permanent (dvs datat finns kvar även vid strömavbrott, ända tills det raderas) på någon typ av lagringsmedia, bl.a. Hårdskiva, USB-sticka, DVD Det är operativsystemets uppgift att se till att applikationer kan komma åt lagringsmedia
Filsystemsgränssnitt Moderna operativsystem har ofta tre olika gränssnitt för filsystem: Den logiska filsystemstrukutren Det virtuella filsystemet Den fysiska filsystemstrukturen Användares process Logisk filstruktur Operativsystem Virtuellt filsystem Drivrutin Drivrutin Drivrutin Fysiskt filsystem Maskinv. Maskinv. Maskinv.
Filsystememsgränssnitt Den logiska filstrukturen Hur filsystemet ser ut ur användarens, programmerarens och/eller ett enskilt programs synvinkel Det virtuella filsystemet Det gränssnitt som operativsystemet har bestämt att alla filsystem skall använda när operativsystemet kommunicerar med dem. Det fysiska filsystemet Hur filerna faktiskt lagras (fysiskt) på lagringsmediet
Virtuella filsystem Linux har ett virtuellt filsystemlagar (VFS) som gör det möjligt att helt och hållet avskilja användarsidan från den fysiska lagringen Den största anledningen till att man använder ett virtuellt filsystemlager mellan användaren och hårdvaran är att själva operativsystemet, applikationer och användare inte skall behöva bry sig om vad det är för enhet/filsystem som filen de vill åt ligger på Utan ett virtuellt filsystem hade själva operativsystemet och alla program som vill använda sej av ett filsystem behövt veta hur man anropar just den enheten
Virtuella filsystem I stället ligger nu all filsystems- och enhetsspecifik information i egna drivrutiner som operativsystemet och programmen kommunicerar med Webbserver Logisk filstruktur Linux kärna Virtuellt filsystem Ext3 Vfat GmailFS Fysiskt filsystem Hårddisk Diskett gmail
Logisk lagringsstruktur Användarna och programmen ser aldrig hur filer lagras utan endast det som operativsystemet presenterar för dem Linux använder sig av en hierarkisk filstruktur som innebär i praktiken kataloger, underkataloger osv. Till skillnad från många andra operativsystem ser inte Linux på filsystemet som en samling av fysiska enheter (Som t.ex. Windows) I stället utgår allting från / (rotkatalogen) och under den placeras alla lagringsenheter in oberoende om all data finns på en enda hårskiva, flera hårdskivor, på USB-sticka eller på nätverksenheter
Logisk lagringsstruktur Användarna och programmen ser aldrig hur filer lagras utan endast det som operativsystemet presenterar för dem Linux använder sig av en hierarkisk filstruktur som innebär i praktiken kataloger, underkataloger osv. Till skillnad från många andra operativsystem ser inte Linux på filsystemet som en samling av fysiska enheter (Som t.ex. Windows) I stället utgår allting från / (rotkatalogen) och under den placeras alla lagringsenheter in oberoende om all data finns på en enda hårskiva, flera hårdskivor, på USB-sticka eller på nätverksenheter
Fysisk lagringsstruktur Vad är egentligen en fil för någonting?? Finns egentligen inget svar på den frågan! En fil kan lagras på massor av olika sätt på ett media Man brukar skilja på två huvuddedlar: Det fysiska mediet - hårdiskar, DVD-skivor... Filsystem – En struktur som bestämmer hur filen lagras på det fysiska mediet En fil lagras inte på samma sätt på t.ex. en hårdskiva som på en DVD-skiva
Fysisk lagringsstruktur En fil kan också lagras på olika sätt på samma hårdskiva Orsaken till det är att olika tillämpningar ställer olika krav på filsystem Filsystemen skiljer sig åt med hänsyn till hur filer och kataloger lagras på det fysiska mediet för att det skall vara så effektivt som möjligt med avseende på utrymme, hastighet, pålitlighet, säkerhet etc.
Filsystem För att lagringmedia, t.ex. en hårdskiva, skall vara användbar måste man hålla reda på hur data lagras i utrymmet Det är här filsystemet kommer in i bilden Ett filsystem består i sin enklaste form av Superblock – Innehåller info om själva filsystemet Filallokeringstabell (FAT) – talar om var filerna startar och hur många block de upptar Dataområde – själva datat Superblock FAT
Filsystem Fördelen med denna typ av filsystem är: Lätt att implementera Går fort att läsa och skriva information till och från disken eftersom alla block som hör till samma fil lagras efter varandra (är inte utspridda över hela disken) Nackdelen är att om man tar bort en fil i mitten kan man inte spara in en ny fil på samma ställe om den är större än den gamla, måste i stället spara i slutet av disken och då lämnar det ett ”hål” i mitten Efter långvarig användning blir filen långsam eftersom filer är utspridda över hela disken Kräver regelbunden ”defragmentering” av hårdskivan (sorterar om alla filer så att de igen kommer efter varandra och genast från början
Filsystem En annan variant av filsystem är att man varje block av en fil pekar på nästa Block (betyder att alla delar av filen behöver inte lagras i en klump efter varandra) Fördelen är att alla block används, blir inget slöseri av diskutrymme och Defragmentering behövs ej Nackdelen är att själva pekaren som behövs i varje block, upptar utrymme på hårddisken 1 2 3 4 5 6 7 8 9 ... Superblock FAT 2 4 6 -1 8 -1
Filsystem: I-noder Den mest avancerade varianten av filsystem Ligger som grund för de flesta Unix-filsystemen, inklusive Linux Exempel på sådana filsystem är bl.a. ext2 och ext3 Iden är samma som systemet presenterat på föregående slide, men med den stora skillnaden att man inte här använder pekare i varje block utan i stället har varje fil en I-nod som har information om var ALLA block som tillhör filen finns.
Filsystem: Fler förbättringar Förutöver dessa finns ännu ytterligare förbättrade varienter såsom: Journalförande filsystem Grundtanken är att alla ändringar (t.ex. lagring) på disken loggas före själva filsystemet ”ändras” Gör att filsystemet inte så lätt blir korrupt vid en systemkrash Exempel på jornalförandefilsystem är: ext3, ext4 och NTFS Loggbaserad filsystem Har konstruerats i huvudsak för att försnabba skrivningar till en disk Finns i dagens läge dock inget sådant filsystem som slagit igenom
Nätverksfilsystem Alla filsystem är inte lokala, som de vi hittils behandlat Nätverksfilsystem blir alltmer vanliga Är inget annat än ett klientprogram som låtsas vara ett filsystem för att sedan skicka alla förfrågningar vidare till ett serverprogram Serverprogrammet utför sedan de uppgifter som den fick från klientprogrammet som den utför på ett vanligt lokalt filsystem (på servern) De vanligaste nätverksfilsystemen inom Linux/Unix-värdlen är: NFS (Network File System) Samba
Filsystemkommandon i Linux: fdisk Om man t.ex. tar ibruk en ny hårddisk på en Linux-dator måste den först partitioneras (i en eller flera delar) och så behöver ett filsystem installeras En hårddisk kan partitioneras med fdisk-kommandot Linux behöver minst en partition vilken används till rootfilsystemet (sjäva installationen av Linux) Vanligen brukar man ytterligare skapa en swap-partition (för ”reservminne”) och ett antal filsystempartitioner som man använder för att lagra filer på. (grundtanken är att ha själva systemet och andra filer på skilda partitioner så att inte data går förlorat ifall man blir tvungen att installera om operativsystemet)
Filsystemkommandon i Linux: mkfs Med mkfs kan man skapa ett filsystem i en partition Exempel: mkfs –t ext3 /dev/hda2 (skapar filsystemet ext3 på den andra partitionen på hårddisken hda)
Filsystemkommandon i Linux: mount Används för montering av filsystem För att kunna använda ett filsystem i Linux från t.ex. en annan partition, hårddisk eller server (än rootfilsystemet) måste filsystemet först monteras in i filträdet Exempel: mount –t ext3 /dev/sda1 /minAndradisk I exemplet ovan monteras första partitionen på disken sda till filträdet i katalogen /minAndradisk
Filsystemkommandon i Linux: df Kommando som används för att visa monterade filsystem Exempel: df –h Kommandot ovan visar alla monterade filsystem i ett ”mänskligt” format, dvs. Storleken på filsystemen visas i megabyte-format
Filsystemkommandon i Linux: umount Kommando som används för att avmontera ett filsystem Exempel: umount /dev/hda2 Exemplet ovan avmonterar andra partitionen på disken hda
Filsystemkommandon i Linux: /etc/fstab Är inte ett kommando utan en fil som håller information om fördefinierade monteringspunkter Operativsystemet behöver denna fil bl.a. vid uppstart för att kunna känna till de lagringsmedia som skall användas samt vilka filsystem de har samt vart de olika filsystmen skall monteras i filstrukturen Enhetsnamn Monteringspunkt Filsystem Argument Dump Ordning /dev/hda2 / ext3 Defaults 1 /dev/fd0 /mnt/floppy Defaults, ro 2 /dev/md0 /home nfs:/software /software
Filsystemkommandon i Linux: /etc/fstab Enhetsnamn – en enhet/partition, dessa är åtkomliga via filer som finns i katalogen /dev Monteringspunkt – vart i filtredet filsystemet skall monteras Filsystem – Namnet på filsystemet som finns på enheten Argument – Anger med vilka ”alternativ” ett filsystem skall monteras. Defaults betyder standardinstlläningar, Defaults,ro betyder standardinställinger men ”read only” (kan ej skriva på enheten) Dump – används nästan aldrig, bara att sätta en 1:a hit!!! Ordning – Anger i vilken ordning filsystemen kontrolleras vid uppstart. Normalt skall rootfilsystemet kontrolleras först (1) och sedan kontrollleras övriga filsystem parallellt (2). Om ett filsystem har 0 här betyder det att det inte kontrolleras vid uppstart
Filstrukturen i Linux: Vad lagras vart? / Rotkatalogen Hela filsystemet i Linux utgår från denna katalog Här skall helst inte lagras några filer utan endast kataloger /bin Här sparas de nödvändigaste exekverbara programmen för att operera systemet (bl.a. ls, cat, pico, vi) Bör alltid ligga på sam fysiska partition som rotkatalogen /boot Här lagras många a de filer som Linux använder vid uppstart, bl.a. Säkerhetskopior av bootsektorn, kompilerade operativsystemkärnor Bör vara på en annan partition än rotkatalogen Vanligen endast 50-100mb stor
Filstrukturen i Linux: Vad lagras vart? /dev Förkorting av device Här finns alla Linux:s enhetsfiler bl.a. Filer som representerar hårddiskar, cd-spelare, möss, serie-/parallellportar osv. /etc Filerna här är i huvudsak konfigurationsfiler för olika program/serverprocesser m.m. De flesta filer är textfiler Finns också en del skriptfiler, bl.a. olika startskript som är placerade i init.d- och rc.d-katalogerna under /etc /home Som standard placeras alla användares hemkataloger här
Filstrukturen i Linux: Vad lagras vart? /lib Här finns nästan alla programbibliotek som används av Linux De som inte är placerade här finns oftast placerade i /usr/lib Programbliotek är filer som innehåller standardfunktioner som används av många olika applikationer Programbibliotek som används av Linuxkärnan finns under /lib/modules /Lost+found Om man efter en systemkrasch, eller systemavbrott kontrollerar ett filsystem med ett kontrolleringsverktyg placeras alla filfragment som inte kunde rättas till av kontrolleringsverktyget här /mnt Som standard, monteras externa lagringsenheter, såsom cd-rom- stationer hit (/mnt/cdrom)
Filstrukturen i Linux: Vad lagras vart? /opt Från början var det tänkt att all tilläggsprogramvara sparas hit (t.ex. Ordbehandlar Nuförtiden är det dock vanligast att tilläggsprogramvara lagras i /usr/local /proc Är egentligen inga riktiga filer utan det är information som hämtas direkt från Linuxkärnan Kan även användas för att ändra på konfigurationer för den körande Linuxkärnan /root Rotanvändarens hemkatalog
Filstrukturen i Linux: Vad lagras vart? /sbin Här finns de nödvändigaste programmen som behövs för systemadministration Vanligen har endast root rättighet att exekvera dessa program Exempel: ifconfig, reboot, mkfs /tmp Är till för att innehålla temporära filer Alla användare har rättigheter i denna katalog Vanligtvis raderas innehållet av denna katalog automatiskt regelbundet /usr Tillgänglig för alla användare och administratörer Vanliga användare har dock ej skrivrättigheter Finns en mängd program och andra filer
Filstrukturen i Linux: Vad lagras vart? Standardkatalog för systemets loggfiler Bl.a. epost, boot- och kernelloggar sparas här