Teil III. Dateisystem



Ähnliche Dokumente
Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Übersicht. UNIX-Dateisystem (ext2) Super-User unter Linux werden MSDOS: FAT16 und FAT32

Partitionieren und Formatieren

Dateisysteme. Lokale Linux Dateisysteme. Michael Kürschner (m

Installationshinweise Linux Edubuntu 7.10 bei Verwendung des PC-Wächter

Leitfaden zum Sichern einer Festplatte als Image mit der System Rescue CD

Mein eigener Homeserver mit Ubuntu LTS

Installationshinweise Linux Kubuntu 9.04 bei Verwendung des PC-Wächter

Datensicherung. Beschreibung der Datensicherung

19. Mai 2004 Gewerbeschule Bad Säckingen Manuel Schneider

SFTP SCP - Synology Wiki

Installieren von Betriebssystemen

Windows 7 Winbuilder USB Stick

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

storage management (c) Till Hänisch 2003, BA Heidenheim

GDI-Knoppix auf Festplatte installieren. Werner Siedenburg Stand:

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Modul Windows XP Professional

Tutorial -

2. Darstellung von Information im Computer

Inkrementelles Backup

ATB Ausbildung Technische Berufe Ausbildungszentrum Klybeck

Backup der Progress Datenbank

Installation SQL- Server 2012 Single Node

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

How to install ubuntu by crypted file system

Kap. 8: Dateisysteme (E3 EXT2 Dateisystem) 1

Dateisystem 1, Suchpfad, Befehlstypen

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

Dateisystem 1, Suchpfad, Befehlstypen

Diese Anleitung erläutert die Einrichtung des Active Directory Modus im DNS-343.

OP-LOG

Das neue Volume-Flag S (Scannen erforderlich)

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

Workshop: Eigenes Image ohne VMware-Programme erstellen

Dokumentation. Erstellung eines bootfähigen USB-Sticks zur Veränderung einer bestehenden Partitionierung

Partitionieren in Vista und Windows 7/8

Schritt-für-Schritt Anleitung: Windows 7 per USB-Stick installieren

ZPN Zentrale Projektgruppe Netze am Ministerium für Kultus, Jugend und Sport Baden-Württemberg

Partitionieren mit GParted:

OPERATIONEN AUF EINER DATENBANK

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

Master-Boot-Record sichern

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

DNS 323 Datenwiederherstellung mit Knoppix (DVD) ab Firmware Version 1.04b84

INSTALLATION VON INSTANTRAILS 1.7

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

QUALIFIZIERUNG VON SYSTEMBETREUERINNEN UND SYSTEMBETREUERN. BartPE-BUILDER AKADEMIE FÜR LEHRERFORTBILDUNG UND PERSONALFÜHRUNG DILLINGEN

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Artikel Schnittstelle über CSV

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Kleines Handbuch zur Fotogalerie der Pixel AG

Kurzanleitung zu. von Daniel Jettka

Betriebssysteme K_Kap11B: Files, Filesysteme Datenstrukturen

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

TeamSpeak3 Einrichten

Dokumentation IBIS Monitor

Wissenswertes über LiveUpdate

Wie halte ich Ordnung auf meiner Festplatte?

DOKUMENTATION VOGELZUCHT 2015 PLUS

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

BackMeUp. Benutzerhandbuch. CeQuadrat

Drucken aus der Anwendung

Lizenzen auschecken. Was ist zu tun?

Verwendung des Terminalservers der MUG

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Handbuch PCI Treiber-Installation

Automatisierte Installation der ESXi Hosts (z.b. für Disaster Recovery).

Gparted Tutorial by Georg

Step by Step Webserver unter Windows Server von Christian Bartl

Installation und Sicherung von AdmiCash mit airbackup

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Konvertieren von Settingsdateien

Durchführung der Datenübernahme nach Reisekosten 2011

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Eine Einführung in die Installation und Nutzung von cygwin

Stecken Sie Ihren USB Stick oder Ihre externe USB Festplatte in den USB Steckplatz des Sinus 154 DSL SE.

Kurzanleitung. Einstieg in die TripleCard Profi-Software. Zeiterfassungs- Software für. TripleCard Terminal

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

So funktioniert die NetWorker 7.5 Eigenschaft zum Sichern umbenannter Verzeichnisse ( Backup renamed Directories )

EASYINSTALLER Ⅲ SuSE Linux Installation

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Anleitung: Webspace-Einrichtung

3 ORDNER UND DATEIEN. 3.1 Ordner

Information zur Durchführung von. Software-Updates

SANDBOXIE konfigurieren

Voraussetzungen: Eine aktuelle Aros Live CD Ein PC mit bootfähigem CDROM, IDE Festplatte und möglichst VESA fähiger Grafikkarte.

Installation im Netzwerk

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Das Handbuch zu KDiskFree. Jonathan Singer Michael Kropfberger Übersetzung von: Gregor Zumstein

Erstellen eines Standardabbilds von Windows 7(in meinem Fall Enterprise-Edition

Neuerungen in den SK-Programmen Version 3.1 Stand: Juni 2004

Notfall-Wiederherstellung mit der Super Grub Disk

3 Windows als Storage-Zentrale

Transkript:

Teil III Dateisystem 95

Aufbau und Management des Dateisystems 6 Aufbau und Management des Dateisystems In diesem Kapitel lernen Sie Folgendes: Festplatten zu partitionieren (LPI Lernziel 1.102.1) Den Aufbau des Linux-Dateisystems kennen (LPI Lernziele 1.102.1, 1.102.2) Dateisysteme mit mkfs zu erstellen (LPI Lernziel 1.104.1) Dateisysteme manuell einzuhängen (zu mounten) (LPI Lernziel 1.104.3) Dateisysteme beim Hochfahren des Rechners automatisch einhängen zu lassen (LPI Lernziel 1.104.3) Dateisysteme auszuhängen (LPI Lernziel 1.104.3) Eine Dateisystem-Überprüfung (Filesystem-Check) durchzuführen (LPI Lernziel 1.104.2) Wenn man Linux auf einen frischen PC und nur für den Hausgebrauch installieren will, reicht es meistens, die bei den großen Distributionen (Fedora/RedHat, SuSE) angebotenen Standardinstallationen auszuwählen. Möchte man aber Linux parallel zu einem anderen Betriebssystem auf demselben Rechner installieren, oder hat man einen Server, mit mehreren Festplatten, dann ist es wichtig, sich vorher mit Partitionierung, Aufbau und Management des Dateisystems zu befassen. In diesem Kapitel werden deshalb die Grundlagen zum Verständnis und für den Umgang mit Filesystemen erläutert. 6.1 Partitionierung mit fdisk Will man aus einem bestehenden Linux-System heraus oder aus einem Rettungssystem heraus eine Platte umpartitionieren, so benutzt man das Linux-Standard-Partitionierungstool fdisk: Syntax: fdisk /dev/platte Dann bekommt man ein Auswahlmenü angezeigt, m dient als Hilfekommando, mit dessen Hilfe man sich mit den Funktionen des Programms vertraut machen kann. 96

6.1 Partitionierung mit fdisk Partitionierung einer Platte mit fdisk 1. Wir wollen die Festplatte /dev/sda so partitionieren, daß ein rudimentäres Linux- System mit Swap-Partition darauf Platz hat. Zuerst verschaffen wir uns daher einen Überblick über die schon vorhandenen Partitionen: # fdisk -l /dev/sda Festplatte /dev/sda: 64 Köpfe, 32 Sektoren, 1021 Zylinder Einheiten: Zylinder mit 2048 * 512 Bytes Gerät Booten Anfang Ende Blöcke ID Dateisystemtyp /dev/sda1 * 1 1021 1045488 83 Linux Tip: Die Option -l listet die Partitionstabelle der Platte auf, ohne daß wir das Programm interaktiv benutzen müssen. 2. Nun wollen wir die Partition löschen. Dazu starten wir jetzt fdisk in der interaktiven Variante: # fdisk /dev/sda Befehl (m für Hilfe): p Festplatte /dev/sda: 64 Köpfe, 32 Sektoren, 1021 Zylinder Einheiten: Zylinder mit 2048 * 512 Bytes Gerät Booten Anfang Ende Blöcke ID Dateisystemtyp /dev/sda1 * 1 1021 1045488 83 Linux Befehl (m für Hilfe): d Partitionsnummer (1-4): 1 Befehl (m für Hilfe): p Festplatte /dev/sda: 64 Köpfe, 32 Sektoren, 1021 Zylinder Einheiten: Zylinder mit 2048 * 512 Bytes 97

Z Aufbau und Management des Dateisystems Gerät Booten Anfang Ende Blöcke ID Dateisystemtyp Wir haben nun mit dem d-befehl (delete) die Partition gelöscht. Der p-befehl listet die Partitionstabelle auf. Hinweis: Bis jetzt hat sich die tatsächliche Partitionierung der Platte noch nicht geändert. Die Änderungen werden erst wirksam, wenn man die Partitionstabelle schreibt! 3. Nun legen wir eine neue Linux-Partition an: Befehl (m für Hilfe): n Befehl Aktion e Erweiterte Partition p Primäre Partition (1-4) p Partitionsnummer (1-4): 1 Erster Zylinder (1-1021) [Standardwert: 1]: 1 Letzter Zylinder oder +Größe, +GrößeK oder +GrößeM (1-1021) [Standardwert: 1021]: +900M Befehl (m für Hilfe): p Festplatte /dev/sda: 64 Köpfe, 32 Sektoren, 1021 Zylinder Einheiten: Zylinder mit 2048 * 512 Bytes Gerät Booten Anfang Ende Blöcke ID Dateisystemtyp /dev/sda1 1 901 922608 83 Linux Mit dem n-befehl wird eine neue Partition angelegt. Da bis zu vier primäre Partitionen möglich sind, nehmen wir eine primäre Partition mit p. Wir können dann die Partitionsgrenze angeben. Die Platte besteht laut Ausgabe aus 1021 Zylindern. Unsere Partition soll am Anfang der Platte, also bei Zylinder 1 anfangen. Das Ende geben wir nun in MB relativ zum Partitionsanfang an: +900M besagt, daß der Endzylinder so berechnet werden soll, daß die Partition etwa 900MB groß wird. Alternativ können wir aber auch eine Zylindernummer angeben. Als Resultat entstand eine Partition vom Typ 83, eine reinrassige Linux-Partition. 4. Nun legen wir unsere Swap-Partition an: Sie soll den Rest in Anspruch nehmen, deswegen geben wir die Partitionsgrenzen als Zylindernummern an: 98

6.1 Partitionierung mit fdisk Befehl (m für Hilfe): n Befehl Aktion e Erweiterte Partition p Primäre Partition (1-4) p Partitionsnummer (1-4): 2 Erster Zylinder (902-1021) [Standardwert: 902]: 902 Letzter Zylinder oder +Größe, +GrößeK oder +GrößeM (902-1021) [Standardwert: 1021]: 1021 Befehl (m für Hilfe): p Festplatte /dev/sda: 64 Köpfe, 32 Sektoren, 1021 Zylinder Einheiten: Zylinder mit 2048 * 512 Bytes Gerät Booten Anfang Ende Blöcke ID Dateisystemtyp /dev/sda1 1 901 922608 83 Linux /dev/sda2 902 1021 122880 83 Linux 5. Schließlich müssen wir noch den Partitionstyp auf Nummer 82 setzen, um die Partition als Auslagerungspartition zu markieren. Befehl (m für Hilfe): t Partitionsnummer (1-4): 2 Hexadezimalcode (L eingeben, um eine Liste anzuzeigen): L 0 Leer... 5c Priam Edisk a5 BSD/386 1 FAT12... 61 SpeedStor a6 OpenBSD 2 XENIX root... 63 GNU HURD / SysV a7 NeXTSTEP 3 XENIX usr... 64 Novell Netware b7 BSDI-Dateisyste 4 FAT16 <32M... 65 Novell Netware b8 BSDI-Auslagerun 5 Erweiterte... 70 DiskSecure Mult c1 DRDOS/sec (FAT- 6 FAT16... 75 PC/IX c4 DRDOS/sec (FAT- 7 HPFS/NTFS... 80 Altes Minix c6 DRDOS/sec (FAT- 8 AIX... 81 Minix / altes L c7 Syrinx 9 AIX bootfähig... 82 Linux (Auslager db CP/M / CTOS /. a OS/2 Bootmanage... 83 Linux e1 DOS-Zugriff b Win95 FAT32... 84 OS/2 verst. Lau e3 DOS R/O c Win95 FAT32 (LB... 85 Linux erweitert e4 SpeedStor e Win95 FAT16 (LB... 86 NTFS-Datenträge eb BeOS-Dateisyste f Win95 Erw. (LBA... 87 NTFS-Datenträge f1 SpeedStor 10 OPUS... 8e Linux LVM f4 SpeedStor 99

Aufbau und Management des Dateisystems 11 Verst. FAT12... 93 Amoeba f2 DOS sekundär 12 Compaq Diagnost... 94 Amoeba BBT fd Linux-RAID, aut 14 Verst. FAT16 <3... 9f BSD/OS fe LANstep 16 Verst. FAT16... a0 IBM Thinkpad-Sc ff BBT 17 Verst.... HPFS/NTF Hexadezimalcode (L eingeben, um eine Liste anzuzeigen): 82 Der Dateisystemtyp der Partition 2 ist nun 82 (Linux (Auslagerung)) 6. Schließlich schreiben wir die Partitionstabelle auf Platte. Befehl (m für Hilfe): w Die Partitionstabelle wurde geändert! ioctl() wird aufgerufen, um die Partitionstabelle erneut zu lesen. WARNUNG: Wenn Sie DOS 6.x-Partitionen angelegt oder geändert haben, finden Sie weitere Informationen in der Handbuchseite für fdisk (Befehl: man fdisk ). Datenträger werden synchronisiert. Distributions-Spezifische Tools für des Partitionieren Unter Fedora/RedHat- und SuSE-Linux gibt es auch komfortable grafische Tools für das Partitionieren der Festplatte. Unter Fedora/RedHat verwendet man während der Installation den Disk-Druid. SuSE liefert ein YaST-Modul. Bei YaST findet sich dieses unter System Partitionieren. 6.2 Das Dateisystem 6.2.1 Bestandteile eines Dateisystems Lars Wirzenius (s. Literaturliste) definiert ein Filesystem als die Methoden und Datenstrukturen, die ein Betriebssystem benutzt, um die Dateien auf einer Platte oder Partition zu verwalten, also die Art und Weise, durch welche die Dateien auf der Platte organisiert sind. Linux enthält standardmäßig bereits mehrere Module, die den Zugriff auf verschiedene Dateisysteme aus anderen Betriebssystemen erlauben und ist dadurch sehr flexibel. Für den normalen Anwender bleibt es i. d. R. völlig transparent, ob die Datei, die er gerade bearbeitet, auf einer lokalen Linux-Partition oder etwa auf einem Server im Netzwerk liegt. Dies wird durch ein sogenanntes Virtuelles Filesystem erreicht, eine Schnittstelle, die dem Benutzer (und den Anwendungsprogrammen) sämtliche eingebundenen Medien in einem einzigen Dateibaum präsentiert. 100

6.2 Das Dateisystem Unterhalb der Filesystemtreiber liegt der Buffer Cache, der sämtliche I/O-Anforderungen puffert und so für eine bessere Performance sorgt.! Achtung: Wegen des Buffer Cache darf ein Linux-System niemals einfach ausgeschaltet werden, da z. B. Daten, die sich noch im Schreibpuffer befinden, dann verloren gehen können. Dateisysteme unter Linux Shell/Applikationen msdos VFS ext2 iso9660 Buffer Cache nfs Gerätetreiber Hardware 6.2.2 Von Linux unterstützte Dateisysteme Hier einige der wichtigsten von Linux unterstützten Dateisysteme. Der Zugriff auf diese (bereits bestehenden) Dateisysteme erfolgt über das mount-kommando (s. Abschnitt 6.3). Allerdings lassen sich einige dieser Systeme unter Linux auch erzeugen. minix: Dies ist eigentlich ein veraltetes Dateisystem, welches noch aus der Zeit vor Linux stammt, als es bereits Unix-ähnliche Systeme für PCs gab. Es wurde bei den ersten Linux-Versionen verwendet, und ab und zu auch heute noch, z. B. für Bootdisketten. ext2: Das Second Extended File System ist das Standardfilesystem unter Linux. Es ähnelt dem Berkeley File System, bietet aber einige nützliche Erweiterungen wie etwa das Setzen von Dateiattributen. 101

Aufbau und Management des Dateisystems ext3: Eine Weiterentwicklung von ext2, welche um Journaling erweitert wurde (schnelle Wiederherstellung bei Ausfall). Ansonsten ist es vollständig abwärtskompatibel zu ext2. Es ist daher möglich, aus einer bestehenden ext2-partition im Handumdrehen eine ext3-partition zu machen. reiserfs Ein von Hans Reiser entwickeltes alternatives Dateisystem. Die Datenorganisation baut auf schnellen B-Trees auf und es ist Journaling-fähig, was den unliebsame Filesystem-Checks fast überflüssig macht. Es ist derzeit stabil und im Produktionsumfeld einsetzbar. xfs, jfs von SGI und IBM entwickelte Journaling-Dateisysteme für den Einsatz im Unternehmensumfeld. sysv, bsd: Diese erlauben den Zugriff auch auf Medien, die unter System V oder Berkeley Systemen erstellt wurden. ufs Das UNIX-Filesystem. Es wird bei vielen UNIX-Abkömmlingen wie zum Beispiel Solaris verwendet. msdos: Zugriff auf DOS-FAT16-Partitionen vfat: Zugriff auf DOS-FAT16 und FAT32-Partitionen umsdos: Erweiterung des MS-DOS-Filesystemtreibers. Dieser erlaubt die Verwendung langer Dateinamen, von Dateirechten u. ä. auf einer DOS-Partition. Dieses Dateisystem wird gerne für Testinstallationen verwendet, da man ein bestehendes DOS-System nicht erst umpartitionieren muß. iso9660: Standard-CD-ROM-Dateisystem incl. Rock Ridge Extensions. hpfs: Für OS/2-Partitionen ntfs: Für Partitionen mit Windows-NT-Filesystem nfs: Netzwerkfilesystem; erlaubt den Zugriff auf freigegebene Verzeichnisse anderer Rechner über das Netzwerk. proc: Dies ist ein Pseudo-Filesystem (belegt keinerlei Plattenplatz), welches die Darstellung von Prozessen und einiger Systeminterna in Dateiform erlaubt, z. B. zeigt cat /proc/filesystems, welche Filesystemtreiber geladen sind, oder cat /proc/version liefert die aktuelle Kernelversion. Im Folgenden werden noch einige der wesentlichen Eigenschaften und grundlegenden Strukturen des ext2-filesystems erläutert: Im Gegensatz zur File Allocation Table (FAT) unter DOS, die, wie der Name schon sagt, lediglich eine Tabelle der Dateibelegung darstellt, wird durch die Formatierung mit dem ext2-filesystem die Partition in Blockgruppen aufgeteilt: 102

6.2 Das Dateisystem Bootblock Blockgruppe 1 Blockgruppe 2 Jede dieser Blockgruppen enthält die gleiche Struktur: Superblock FS Descriptors Inode Bitmap Block Bitmap... Blockgruppe n Inode Table Data Blocks Der Superblock enthält wesentliche Informationen über die Struktur selbst und über das komplette Filesystem (z.b. wieviele Gruppen es gibt, und wie oft dieses Filesystem bereits montiert wurde), dann folgt eine Beschreibung und Verwaltungsdaten der jeweiligen Gruppen und die Block- bzw. Inode-Bitmap. Dies sind Tabellen, in denen festgehalten ist, welche Datenblöcke und Inodes auf der Partition benutzt oder frei sind. Schließlich folgen die Inode-Tabelle (alle Inodes der Gruppe) und die Datenblöcke in der jeweiligen Gruppe. (Fast) Jede Gruppe enthält also eine Kopie des Superblocks mit den wesentlichen Informationen über das Filesystem, was erheblich zur Sicherheit des Filesystems beiträgt. Beispiel: Suchen Sie sich mit df -h eine ext2/3-partition und lassen Sie sich die Dateisystemstruktur mit dem Kommando dumpe2fs Partition anzeigen. Versuchen Sie dabei die gerade erläuterte Struktur wiederzufinden (Superblock, Blockgruppen, etc.). In welchen Blockgruppen können Sie Kopien des Superblocks entdecken? Was aber ist ein Inode? Streng genommen besteht eine Datei unter Linux/Unix aus zwei Teilen: dem Dateikopf und den Datenblöcken. Der Dateikopf heißt Inode und enthält folgende Angaben über die Datei: Die Art der Datei (reguläre Datei, Verzeichnis,...) Dateieigentümer Größe der Datei in Byte Datum des letzten Zugriffs (atime), der letzten Änderung der Datei (mtime) und der letzten Änderung der Dateiattribute (ctime) Löschdatum ID der Dateigruppe Anzahl der Hardlinks Anzahl der belegten Datenblöcke Dateiattribute (siehe chattr(1)) 103

Aufbau und Management des Dateisystems Verweise auf die Datenblöcke Dateischutz Sonstiges Dateiart UID Dateigröße Zeitstempel GID Linkzähler Blockzähler Attribute Dateirechte 12 direkte Blockzeiger 1 einfach indirekt Aufbau einer i node Datenblock Datenblock Datenblock... Zeigerblock Datenblock Datenblock Datenblock... Datenblock Datenblock Datenblock... 1 doppelt indirekt 1 dreifach indirekt Zeigerblock Zeigerblock Zeigerblock Datenblock Datenblock Datenblock... Vereinfachte schematische Darstellung der Inode-Struktur des ext2-filesystems Die ersten 12 Verweise auf Datenblöcke zeigen direkt auf solche, dann folgt ein Verweis auf einen Verweis, der auf Datenblöcke zeigt, dann ein zweifacher, dann ein dreifacher solcher Verweis. Die Datenstruktur ist somit sehr komplex, was z. B. das Restaurieren einer gelöschten Datei (ohne zusätzliche Maßnahmen) oder eine Defragmentierung nahezu unmöglich macht. Aber das ext2-filesystem ist so intelligent aufgebaut, daß eine Fragmentierung fast gar nicht erst auftritt, sofern der freie Platz auf einer Partition nicht unter 10% beträgt. Dies kann man z. B. mit dem Kommando df ( disk free ) überprüfen: # df Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda5 866139 750595 70796 91% / /dev/hda5 3811375 2986697 627482 83% /kit 104

6.2 Das Dateisystem Ein Verzeichnis ist eine spezielle Datei, die eigentlich nur beschreibt, welcher Dateiname zu welcher Inode gehört. Dadurch ist es z. B. möglich, mit einem zweiten Namen auf dieselbe Inode zu verweisen (Hardlink). Die Directories untereinander sind dadurch veknüpft, das jedes Verzeichnis sich selber unter dem Namen. und das übergeordnete Verzeichnis unter dem Namen.. enthält. Unterverzeichnisse sind ebenfalls mit Namen und Inode-Nummer enthalten. 6.2.3 Erstellen eines Dateisystems Das Formatieren einer Partition unter Linux ist gleichbedeutend mit der Erstellung eines Filesystems auf dieser Partition. Da standardmäßig das ext2-filesystem verwendet wird, heißt das zugehörige Kommando mke2fs (bzw. allgemeiner mkfs). Je nach geplanter Verwendung des Filesystems läßt sich, durch geeignete Parameter, die Performance verbessern. (Bei einer Standard-Installation werden natürlich auch immer nur die Standardwerte verwendet.) Die wichtigsten Optionen von mke2fs (n bezeichnet darin die entsprechenden Zahlenwerte): -b nnnn Bestimmt die Blockgröße in n Byte (zulässige Werte sind 1024, 2048 und 4096) -c Vor dem Erstellen des Filesystems wird die Partition auf defekte Blöcke untersucht. -i nnn Legt die Inode-Dichte fest (n Bytes pro Inode). Standardmäßig wird für je 4096 Byte eine Inode angelegt. -m n Legt fest, wieviel Prozent des Filesystems als eiserne Reserve für den Superuser root zur Verfügung gestellt werden. Dieser Wert kann auch mit dem Kommando tune2fs verändert werden. Beispiel: Ein ext2-filesystem soll auf einer Partition erstellt werden. Dabei werden für root 3% der Partitionsgröße reserviert. Die Blockgröße soll 2048 Byte betragen. Bei der Erstellung der Filesystems soll nach fehlerhaften Blöcken gesucht werden. # mke2fs -m 3 -b 2048 -c /dev/sda6 mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Linux ext2 filesystem format Filesystem label= 80320 inodes, 160634 blocks 4819 blocks (3.00%) reserved for the super user 105

Aufbau und Management des Dateisystems First data block=0 Block size=2048 (log=1) Fragment size=2048 (log=1) 10 block groups 16384 blocks per group, 16384 fragments per group 8032 inodes per group Superblock backups stored on blocks: 16384, 32768, 49152, 65536, 81920, 98304, 114688, 131072, 147456 Checking for bad blocks (read-only test): 0/160634 2960/160634 5664/160634 7808/160634 10192/160634 12864/160634 15568/160634... 155360/160634 157792/160634 160192/160634 done Writing inode tables: 0/10 1/10 2/10 3/10 4/10 5/10 6/10 7/10 8/10 9/10 done Writing superblocks and filesystem accounting information: done Beispiel: Eine Unix-formatierte (ext2-filesystem) Diskette soll erstellt werden. Da- bei soll der komplette Bereich für die Anwender zur Verfügung stehen. Der Labelname wird mit Daten angegeben. # mke2fs -m 0 -b 2048 -c -L DATEN /dev/fd0 mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Linux ext2 filesystem format Filesystem label=daten 368 inodes, 720 blocks 0 blocks (0.00%) reserved for the super user First data block=0 Block size=2048 (log=1) Fragment size=2048 (log=1) 1 block group 16384 blocks per group, 16384 fragments per group Writing inode tables: done 106

6.2 Das Dateisystem Writing superblocks and filesystem accounting information: done Z! Hinweis: Damit ein Filesystem auf eine Diskette erfolgreich übertragen werden kann, sollte diese vorher mit dem Kommando fdformat low-level-formatiert werden. Achtung: Eine mit einem Filesystem versehene Diskette muß wie eine Festplatte montiert werden (s. nächstes Kapitel). Sie darf dann nicht einfach aus dem Laufwerk herausgenommen werden. In der Praxis wird man deshalb unter Linux oft einfach die mtools zum Benutzen DOS-formatierter Disketten verwenden oder die Diskette direkt mit tar beschreiben. Tip: Informationen über ein bestehendes ext2-filesystem liefert das Kommando dumpe2fs. Aktuelle Entwicklungen: Auch unter Linux stehen mehrere Journaling File Systems zur Verfügung. So hat IBM den Quellcode seines JFS unter die GPL gestellt und ein Entwicklerteam für Linux bereitgestellt. JFS für Linux ist inzwischen fertiggestellt und kann eingesetzt werden. SuSE entwickelt zusammen mit Hans Reiser das Journaling Reiser Filesystem das inzwischen ebenfalls stabil ist und unter Su- SE standardmäßig eingesetzt wird. Fedora/RedHat setzt hingegen eher auf ext3, eine Weiterentwicklung des Linux-Standarddateisystems ext2 mit Journal. Journaling Filesysteme werden bisher bei Serverbetriebssystemen eingesetzt. Beispiele sind das Windows NTFS und das Compaq Tru64 UNIX Advanced Filesystem. Bei einem Journaling Filesystem werden alle Änderungen am Dateisystem mitprotokolliert, so daß im Falle eines Absturzes der genaue Zustand rekonstruiert werden kann. Dadurch entfällt der insbesondere bei großen Platten sehr zeitraubende Filesystem-Check. Sofern vom laufenden Kernel unterstützt, kann man auch diese Dateisysteme mit mkfs erzeugen: mkfs.ext2 Ein ext2-dateisystem erzeugen. mkfs.ext3 Ein ext3-dateisystem erzeugen. mkfs.reiserfs Ein ReiserFS-Dateisystem erzeugen. mkfs.xfs Ein XFS-Dateisystem erzeugen. mkfs.vfat Ein Microsoft FAT-Dateisystem erzeugen. Mit dem Parameter -F kann die FAT-Größe angegeben werden, 12 für 12 Bit, 16 für 16 Bit und 32 für 32 Bit, 107

Aufbau und Management des Dateisystems wobei ein Wert zwischen 12 und 16 gewählt wird, wenn man nichts angibt. Für FAT32 muß die Option -F 32 also explizit gesetzt werden. 6.2.4 Erstellen eines Swap-Bereiches Manchmal reicht der physische Arbeitsspeicher für die laufenden Prozesse nicht mehr aus. Dabei gibt es häufig Prozesse die ihren Ablauf unterbrechen müssen, da Sie erst auf die Ausführung eines anderen Prozesses warten müssen und solange schlafen. Solche schlafenden Prozesse kann man bei hoher Systemlast in einen speziellen Bereich auf der Festplatte auslagern der Swap-Speicher genannt wird, um im physischen Arbeitsspeicher Platz für andere Prozesse zu schaffen. Damit wird der Arbeitsspeicher scheinbar vergrößert, man spricht daher auch von virtuellem Arbeitsspeicher. Dabei ist der Arbeitsspeicher in Speicherseiten organisiert und so muß ein Prozess nicht als ganzes, sondern er kann Seitenweise ausgelagert werden. Wacht ein ausgelagerter Prozess wieder auf, merkt man das häufig an der längeren Reaktionszeit. Festplattenspeicher ist leider bedeutend langsamer als physischer Arbeitsspeicher. Um wenigstens nicht ganz so langsam zu sein wie beim Lesen und Schreiben von herkömmlichen Dateien auf die Festplatte, ist Swap-Speicher anders aufgebaut als herkömmliche Dateisysteme. Speicherseiten müssen im Swap-Speicher zusammenhängend abgelegt werden können, während in anderen Dateisystemen Dateien durchaus in mehrere Blöcke zerteilt auf verschiedene Orte der Festplatte verteilt werden. Also benötigen Swap-Partitionen ein spezielles Format. Unter Linux lassen sich aber auch spezielle Dateien als Swap-Speicher verwenden. Solche Swap-Dateien sollten aber nur für kurzfristig erhöhten Swap-Bedarf eingesetzt werden, da Swap-Partitionen performanter sind. Einen Swap-Bereich erstellen Wir wollen nun /dev/sda2 als Swap-Partition formatieren. Dazu verwenden wir das Programm mkswap: Beispiel: # mkswap -c /dev/sda2 Setting up swapspace version 1, size =... Nun ist /dev/sda2 als Swap-Partition formatiert. Das Programm mkswap hat die folgende Syntax: Die Syntax von mkswap: 108

6.2 Das Dateisystem mkswap [-c] [-vn ] [-f] [-p PSZ] [-L label] device [size] Meist ist es ratsam, den Befehl wie eben gezeigt in der einfachsten Variante zu verwenden. Insbesondere benötigt mkswap die Angabe der Größe (size) inzwischen nicht mehr, weder bei Partitionen noch bei Swap-Dateien. Geben Sie die Größe also lieber nicht an, denn ein kleiner Tippfehler könnte zur Zerstörung von Daten führen. Die Optionen von mkswap: -c: Das Geräte (Device) auf defekte Blöcke untersuchen (falls es sich um ein Block- Device handelt). -vn : Neues (-v1) oder altes (-v0) Swap-Format verwenden. Standard ist das neue Format, das alte muß nur dann eingesetzt werden wenn ein Linux-Kernel älter als 2.1.217 auf den Swap-Bereich zugreifen muß, oder wenn die Seitengröße kleiner ist als 2048. -f: Den Befehl selbst dann ausführen, wenn mkswap ihn mit Fehlermeldung abbricht. Die Manpage man mkswap beschreibt einen Ausnahmefall in dem man -f benötigt. Üblicherweise sollte man aber die Finger davon lassen. -p PSZ: Die Größe der Speicherseiten angeben. Dies sollte man normalerweise nicht tun, da mkswap außer in wenigen unüblichen Konfigurationen die Seitengröße zuverlässig selbst ermittelt. -L label: Nur für das neue Swap Format: hier kann ein Labelname für die Swap- Partition angegeben werden, der mit swapon anstelle des Gerätenamens verwendet werden kann. device: Die Swap-Partition oder Datei angeben. size: Die Größe des Swap-Bereiches angeben. Das sollte man aber besser sein lassen, die Option gibt es nur noch der Rückwärtskompatibilität wegen. Nun haben wir also eine Partition als Swap-Partition formatiert. Um eine Datei als Swap-Bereich zu formatieren muss die Datei auf spezielle Weise erstellt werden: # dd if=/dev/zero of=/dev/swapdatei bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB) copied, 0.252041 seconds, 41.6 MB/s 109

Aufbau und Management des Dateisystems dd kopiert und konvertiert Dateien abhängig von den angegebenen Parametern. In diesem Fall ist als Quelle (if=in-file) die spezielle Datei /dev/zero angegeben, die auf jeden Lesezugriff den Wert 0 liefert. Ziel (of=out-file) ist unsere neu zu erstellende Swap-Datei. bs gibt die Größe der zu lesenden und zu schreibenden Blöcke an, count deren Anzahl. (Mehr zu dd unter: man dd.) Wir erzeugen also die Datei /dev/swapdatei die vollständig aus Nullen besteht und 10MB groß ist. Achtung: Eine mit cp kopierte Datei darf niemals als Swap-Datei verwendet wer-! den, da sie Löcher ( Holes ) enthalten kann und Speicherseiten damit nicht zusammenhängend abgelegt werden können. Fehlfunktionen und Datenverluste können daraus resultieren. Erstellen Sie Swap-Dateien wie eben gezeigt immer als neue Datei. Hat man die Datei erzeugt, sollte man vor dem Formatieren unbedingt den Befehl sync ausführen um sicherzustellen, daß die Datei auch physisch auf die Festplatte geschrieben wird. Außerdem sollte nur root Lese und Schreibrecht haben: Beispiel: # chmod 0600 /dev/swapdatei # sync # mkswap -c /dev/swapdatei Setting up swapspace version 1, size = 10481 kb Das Einbinden und Herausnehmen eines Swap-Bereiches geschieht mit den Befehlen swapon und swapoff. Wir können nun /dev/sda2 und /dev/swapdatei wie folgt Einbinden: Beispiel: # swapon /dev/sda2 # swapon /dev/swapdatei Das Herausnehmen geschieht analog: Beispiel: # swapoff /dev/sda2 # swapoff /dev/swapdatei 110

6.3 Mounten Normalerweise geschieht das Einbinden und Herausnehmen aber automatisch. Dazu werden Swap-Partitionen (und ggf. auch Swap-Dateien) in die Datei /etc/fstab eingetragen, was später noch erläutert wird. Der Befehl swapon -a bindet alle Swap-Bereiche ein die in /etc/fstab stehen. swapon -a wird üblicherweise beim Booten von einem Script zur Systeminitialisierung aufgerufen. Um diese Swap-Bereiche wieder herauszunehmen, wird swapoff -a ausgeführt. 6.3 Mounten Nachdem man nun die Partitionen mit einem Filesystem versehen hat, muß man diese zur Benutzung in den Dateibaum einhängen. Dazu dient das Kommando mount. 6.3.1 Manuelles Mounten mount Die Syntax des Kommandos mount ist: mount [Option] [Device] [Mount-Point] Das Device ist dabei der Device-Name der Partition, z.b. /dev/hda5; bei einem NFS- Mount wird der Name des freigebenden Rechners vorangestellt und nicht der dortige Gerätename, sondern das freigegebene Verzeichnis, z. B. mount master:/remotedir /localdir Der Mount-Point ist ein beliebiges, bereits existierendes Verzeichnis. Darin evtl. enthaltene Dateien sind solange nicht mehr sichtbar, bis das Filesystem wieder heruntergenommen wird. Für temporäre Zwecke wird i.a. der Mount-Point /mnt verwendet. mount ohne Option zeigt alle zur Zeit eingehängten Filesysteme. Diese Liste wird intern in der Datei /etc/mtab verwaltet und immer dann verändert, wenn mit den Kommandos mount bzw. umount Dateisysteme eingehängt bzw. ausgehängt werden. Das Format der Datei entspricht im Übrigen genau dem der weiter unter beschriebenen /etc/fstab. Wichtige Optionen des mount-befehls: -a Alle in der Datei /etc/fstab eingetragenen Filesysteme werden montiert -r Das Filesystem wird readonly eingehängt. In diesem Falle kann nicht einmal der Superuser dort schreiben. Bei CD-ROM wird diese Option automatisch benutzt. 111

Aufbau und Management des Dateisystems -t fstyp Hiemit wird der Type des Filesystems angegeben, z.b. ntfs, vfat. Der Default ist iso9660. Aber auch ext2 braucht nicht extra genannt zu werden, da das mount-kommando zunächst den Superblock nach der Magic Number des Filesystems durchsucht. Einige der möglichen Filesystemtypen siehe Abschnitt: von Linux unterstützte Dateisysteme. -o param Erlaubt die Angabe zusätzliche Parameter, z.b. -o nosuid verhindert die Ausführung von Programmen mit SUID-Bit. Manche Filesystemtreiber haben auch noch eigene Optionen, z.b. iso9660, nfs. Ausführliche Angaben findet man im Online-Manual, den Man-Pages. 6.3.2 Automatisches Mounten beim Hochfahren des Systems Beim Hochfahren des System sollen normalerweise bestimmte Partitionen automatisch eingehängt werden. Als Konfigurationsdatei hierfür und für den mount-befehl dient die Datei /etc/fstab. Auch die Swap-Partition(en) werden hier eingetragen. (Im Beispiel wird auch eine Swap-Datei eingebunden. In der Praxis sollte man Swap- Dateien aber nur als kurzfristige Abhilfe verwenden, ein automatisches Einbinden per /etc/fstab ist dann für eine Swap-Datei üblicherweise nicht nötig.) Die Datei /etc/fstab /dev/sda2 swap swap defaults 0 0 /dev/swapdatei swap swap defaults 0 0 /dev/sda5 / ext2 defaults 1 1 /dev/hda5 /kit ext2 defaults 1 2 /dev/hdc /cdrom iso9660 ro,noauto,user 0 0 /dev/fd0 /floppy auto noauto,user 0 0 none /proc proc defaults 0 0 Aufbau der Datei /etc/fstab: 1. Feld: Gerätename; bei NFS auch den Namen des freigebenden Rechners 2. Feld: Mount-Point 3. Feld: Typ des Filesystems 4. Feld: Zugriffmodi und Parameter z.b. ro für read-only, noauto verhindert das automatische Mounten beim Hochfahren, user erlaubt jedem, nicht nur root, das Gerät zu mounten. 112

6.4 Filesystem-Check 5. Feld: Wird von dump verwendet, um zu ermitteln, ob das Dateisystem gesichert werden soll (1) oder nicht (0). 6. Feld: Reihenfolge der logischen Prüfung der Filesysteme beim Hochfahren: 0 für Dateisysteme, die nicht überprüft werden sollen (z.b. NFS, nicht-linux-filesysteme und Swap-Bereiche), 1 für die Root Partition, 2 für andere (im Falle mehrerer Platten erfolgt eine parallele Prüfung). Z Hinweis: Auf die sinnvolle Reihenfolge in der /etc/fstab ist unbedingt zu achten! Ist ein Dateisystem in der Datei /etc/fstab eingetragen, so genügt es, beim mount- Befehl entweder den Gerätenamen oder den Mountpoint anzugeben. Alle anderen Informationen liest mount dann aus der Datei. Beispiele: mount /floppy mount /dev/hdc 6.3.3 Herausnehmen eines Filesystems Um ein montiertes Filesystem wieder aus dem Dateibaum zu entfernen, verwendet man den Befehl umount. umount Mount-Point z. B. umount /floppy oder umount Device z. B. umount /dev/sda6 umount -a versucht, alle momentan montierten Filesysteme (aus /etc/mtab) zu entfernen. Die häufigste hierbei vorkommende Fehlermeldung device is busy wird in den meisten Fällen dadurch verursacht, daß noch jemand auf diesem Device arbeitet oder schlichtweg in einem Verzeichnis auf diesem Filesystem sitzt. Ist man selber der Verursacher, so läßt sich dies leicht beheben. Auf einem echten Multiuser-System kann der Superuser nur versuchen, den/die betreffenden Benutzer ausfindig zu machen und zur Freigabe zu bewegen... Schlimmstensfalls muß das System neu gestartet werden. Tip: Die Programme fuser(1) und lsof können bei der Suche nach blockierenden Benutzern hilfreich sein. 6.4 Filesystem-Check Da sämtliche I/O-Operationen durch den Buffer Cache laufen, ist im Falle eines unkontrollierten Entfernens (z. B. bei Stromausfall) eines Filesystems nicht sichergestellt, daß wirklich auch alle Daten auf dem Medium geschrieben wurden. 113

Aufbau und Management des Dateisystems Intern ist der Puffer so eingestellt, daß alle 30 Sekunden die Daten zurückgeschrieben werden. Auch beim umount und beim Herunterfahren des Systems wird der Puffer geflusht, und es wird ein clean flag im Filesystem gesetzt. Fehlt dieses Flag jedoch, geht Linux davon aus, daß das Dateisystem nicht ordnungsgemäß entfernt wurde, und daß demzufolge Daten inkonsistent sein können. Bevor man dieses Filesystem wieder mounten kann, muß eine logische Überprüfung der Datenstrukturen erfolgen. Eine solche logische Überprüfung erfolgt bei Linux auch zwingend, wenn ein bestimmtes Limit, der mount count, erreicht ist. Manuell läßt sich der Puffer mit dem Befehl sync zurückschreiben, allerdings warnt Linus Torvalds ausdrücklich davor, eine Maschine nach einem sync-befehl einfach auszuschalten. Beim Hochfahren des Systems geschieht diese Überprüfung automatisch; das verwendete Kommando heißt e2fsck (allgemein fsck) und prüft sowohl ext2 als auch ext3 Dateisysteme. e2fsck kann vielerlei Probleme lösen: Inodes, für die es keinen Verzeichniseintrag mehr gibt (unreferenced inodes). Diese werden dann im Verzeichnis lost+found auf der Ebene des jeweiligen Mount-Points hinterlegt. falsche Link-Zähler im Inode freie Blöcke, die nicht in der Freiliste (block bitmap) stehen Blöcke in der Freiliste, die auch als Datenblöcke ausgewiesen werden nicht lesbarer oder inkorrekter Superblock Datenblöcke, die von mehreren Dateien beansprucht werden. (In diesem Falle werden die betroffenen Blöcke einfach dupliziert und neu zugewiesen. Man sollte anschließend diese Dateien genau untersuchen, da i. d. R. ja nur eine Datei diese Daten wirklich enthält und die anderen wahrscheinlich unbrauchbar sind.) Nicht behebbar sind aber z. B. : Adressen von Datenblöcken, die außerhalb des Filesystems liegen unlesbare Inodes (diese können evtl. mit der Option -c als bad blocks markiert werden) Wichtige Optionen von e2fsck: 114

6.4 Filesystem-Check -y Auf alle Fragen wird immer mit yes geantwortet -n Auf alle Fragen wird immer mit no geantwortet -f Filesystem Check wird erzwungen, auch wenn es in Ordnung zu sein scheint -p preen : Einige Inkonsistenzen werden automatisch, d.h. ohne Nachfrage korrigiert. -b# Erlaubt, es die Blocknummer einer der Kopien des Superblocks anzugeben (# steht für die Nummer), falls dieser korrupt ist; die meisten Filesysteme haben Kopien des Superblocks an den Blockadressen 8193, 16385, usw. z. B. e2fsck -b 8193 Tip: Das Kommando dumpe2fs zeigt tiefergehende Informationen über ein Filesystem, aus denen sich etwa die Blocknummern der Superblock-Kopien ermitteln lassen. tune2fs erlaubt das Verändern einiger Filesystemwerte, wie z.b. die Nachrüstung eines Journals, um so ein ext2 in ein ext3-dateisystem zu konvertieren oder auch umgekehrt. debugfs erlaubt tiefgreifende Änderungen an ext2 Dateisystemen. Benutzungsfehler können im schlimmsten Fall zu Datenverlust führen und ein Dateisystem unbrauchbar machen. Andere Dateisysteme können mit folgenden Befehlen überprüft werden: reiserfsck ReiserFS Dateisysteme überprüfen. fsck.xfs XFS Dateisysteme überprüfen. fsck.jfs JFS Dateisysteme überprüfen. fsck.minix Minix Dateisysteme überprüfen. fsck.msdos DOS-FAT Dateisysteme überprüfen. fsck.vfat FAT Dateisysteme überprüfen. 115

Aufbau und Management des Dateisystems 116

6.5 Übungen 6.5 Übungen 1. Überprüfen Sie die Partitionstabellen Ihres Rechners: Welche Arten von Festplatten sind eingebaut? Wie ist die momentane Aufteilung? Gibt es noch Platz für weitere Partitionen? Wenn ja, dann legen Sie eine solche an, versehen diese mit einem ext2-filesystem und richten das System so ein, daß diese Partition automatisch beim Systemstart immer wieder an eine von Ihnen gewünschte Stelle eingehängt wird. 2. (a) Richten Sie ein ext2-filesystem mit normaler Blockgröße, aber ohne reservierten Platz für den Superuser auf einer Diskette ein. (b) Hängen Sie die Diskette ins Verzeichnis /mnt ein und erzeugen Sie einige Dateien und Unterverzeichnisse. (c) Editieren Sie eine Datei und nehmen Sie, ohne den Editor zu beenden oder die Änderungen komplett zu speichern, die Diskette heraus. (d) Der mount-befehl zeigt die Diskette immer noch als eingehängt an. Können Sie weiterhin in /mnt arbeiten? Wenn ja, warum? Geben Sie nun erst den entsprechenden umount-befehl (Fehlermeldungen werden übrigens auf der virtuellen Konsole 10 angezeigt) (e) Lassen Sie einen Filesystem-Check über die Diskette laufen. 3. Für Fortgeschrittene: Starten Sie das Programm debugfs -w /dev/fd0u1440 (Hinweis für den Trainer: nötigenfalls das Paket e2fsprogs/ext2fs installieren) Wechseln Sie mit cd in ein Unterverzeichnis und geben Sie ein: ls. Dann löschen Sie eine der angezeigten Dateien mit dem Befehl: unlink filename Verlassen Sie das Programm mit q (quit). Führen Sie nun einen Filesystem-Check aus und versuchen Sie, die Originaldatei unter Ihrem alten Namen in Ihrem alten Verzeichnis wiederherzustellen. 4. Wenn noch genügend Zeit ist: Informieren Sie sich anhand der Online-Hilfe über die verschiedenen erwähnten Hilfsprogramme und testen Sie diese aus (z.b. read-only mount auf der Diskette) 117

Aufbau und Management des Dateisystems 6.6 Lösungen 1. (a) Welche Festplatten sind eingebaut: Alle Partitionen bekommt man mit # cat /proc/partitions Weitere Informationen erhält man respektive mit # cat /proc/scsi/scsi oder im Verzeichnis /proc/ide/hdan/ (b) Momentane Aufteilung: # fdisk -l /dev/platte (c) Neue Partition anlegen: # fdisk /dev/hda Command (m for help): p Disk /dev/hda: 10 heads, 17 sectors, 980 cylinders Units = cylinders of 170 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 69 5856+ 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (70-980, default 70): Using default value 70 Last cylinder or +size or +sizem or +sizek (70-980, default 980): Using default value 980 Command (m for help): p Disk /dev/hda: 10 heads, 17 sectors, 980 cylinders Units = cylinders of 170 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 69 5856+ 83 Linux /dev/hda2 70 980 77435 83 Linux 118

6.6 Lösungen Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. Re-read table failed with error 16: Device or resource busy. Reboot your system to ensure the partition table is updated. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. # mkdir /a # echo "/dev/hda2 /a ext2 defaults 0 0" >> /etc/fstab # mke2fs /dev/hda2 2. (a) # mke2fs -m 0 /dev/fd0 mke2fs 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 184 inodes, 1440 blocks 0 blocks (0.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 184 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done (b) # mount /dev/fd0 /mnt # touch foo bar # mkdir -p verz/uverz1/uverz2 (c) # ed foo 0 a Hallo Welt! Dies ist der Editor ed. <Diskette wird herausgenommen> q 119

Aufbau und Management des Dateisystems 120? q (d) # mount /dev/md0 on / type ext2 (rw) none on /proc type proc (rw) /dev/hda1 on /boot type ext2 (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) /dev/fd0 on /mnt type ext2 (rw) # umount /mnt # mount /dev/md0 on / type ext2 (rw) none on /proc type proc (rw) /dev/hda1 on /boot type ext2 (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) (e) # e2fsck /dev/fd0 e2fsck 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09 /dev/fd0 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/fd0: 11/184 files (0.0% non-contiguous), 41/1440 blocks # ls /mnt/ cdrom dos floppy # ls /mnt/floppy/ # mount /dev/fd0 /mnt # ls /mnt/ lost+found 3. # mount /dev/fd0 /mnt # cd /mnt # mkdir verz # cd verz/ # echo Hallo Welt > hallo # ls hallo # cd # umount /mnt/ # debugfs -w /dev/fd0 debugfs 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09 debugfs: ls 2 (12). 2 (12).. 11 (20) lost+found 12 (980) verz

6.6 Lösungen debugfs: cd verz debugfs: ls 12 (12). 2 (12).. 13 (1000) hallo debugfs: unlink hallo debugfs: q # e2fsck -f /dev/fd0 e2fsck 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Unattached inode 13 Connect to /lost+found<y>? yes Inode 13 ref count is 2, should be 1. Fix<y>? yes Pass 5: Checking group summary information /dev/fd0: ***** FILE SYSTEM WAS MODIFIED ***** /dev/fd0: 13/184 files (0.0% non-contiguous), 43/1440 blocks # mount /dev/fd0 /mnt/ # cd /mnt/ # ls lost+found verz # cd verz/ [root@johannes verz]# ls # mv../lost+found/*. # ls #13 # mv "#13" hello # cat hello Hallo Welt 121