Linux
Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm
Hochschule Harz
FB Automatisierung und Informatik
mwilhelm@hs-harz.de
http://www.miwilhelm.de
Raum 2.202
Tel. 03943 / 659 338
Inhalt
1. Einführung, Literatur, Begriffe 2. Installation
3. Konsolen-Befehle, Shell, Manual
4. Komplexe Befehle (grep, find, tar, sed, cron, netcat) 5. C-Programmierung (C, IO, Thread, make)
6. Python (Sprache)
7. Python (GUI)
Logische Dateisysteme von Ubuntu
Linux-Dateisysteme ext2
• Lange Zeit war ext2 das einzig ernsthaft nutzbare Linux-Dateisystem. Es ist sehr stabil, da es seit 1993 für Linux entwickelt und korrigiert wird. Ext2 enthält keine Journal-Funktion und muss ohne Binärbaum auskommen, was bedeutet, dass routinemäßige
Dateisystemchecks beim Booten sehr zeitaufwändig sein können. Es gibt mittlerweile eine Auswahl an journalisierenden Dateisystemen neuerer Generation, die die
Konsistenzchecks sehr schnell erledigen und dadurch im Vergleich mit den nicht- journalisierenden Gegenstücken vorzuziehen sind. Journalisierende Dateisysteme verhindern lange Verzögerungen beim Booten, wenn sich das Dateisystem in einem inkonsistenten Zustand befindet.
ext3
• ext3 ist die journalisierende Weiterentwicklung des ext2-Dateisystems, die Metadaten- Journaling für schnelle Wiederherstellung, sowie andere verbesserte Journaling Modi wie
"full data"- und "ordered data"-Journaling unterstützt. ext3 ist rückwärtskompatibel zu ext2 und durch die konstante Entwicklung ein sehr verlässliches Dateisystem. Es hat eine zusätzliche B-Baum-Indexierungsoption, die in fast allen Situationen hohe Leistung
ermöglicht. Man kann diese Indexierung aktivieren, indem man die Option -O dir_index zum Befehl mke2fs hinzufügt. ext3 ist die übliche Wahl, wenn es darum geht, ein
zuverlässiges Linux aufzusetzen und die Geschwindigkeit des Dateisystems nicht entscheidend ist.
Linux-Dateisysteme
•reiserfs
•ReiserFS ist ein B*-tree basierendes Dateisystem mit einer guten Leistung und überholt sowohl ext2 und ext3 im Umgang mit kleinen Dateien (kleiner als 4 KB) oftmals mit einem Faktor von 10x-15x. ReiserFS skaliert extrem gut und hat Metadata-Journaling.
Seit Kernel 2.4.18+ ist ReiserFS stabil und sowohl als Dateisystem für generelle
Anwendungen, als auch für extreme Fälle wie große Dateisysteme, den Gebrauch mit vielen kleinen Dateien, den Gebrauch mit sehr großen Dateien und Verzeichnissen mit tausenden von Dateien brauchbar. Unglücklicherweise gibt es immer noch einige
Probleme mit ReiserFS auf der PowerPC-Architektur.
•xfs
•XFS ist ein Dateisystem mit Metadata-Journaling, das mit einem robusten Feature-Set kommt und auf Skalierbarkeit ausgelegt ist. Den Einsatz dieses Dateisystems sollte man nur auf Linux-Systemen mit High-End SCSI und/oder Fibre Channel Storage und einer redundanten Stromversorgung empfehlen. Da XFS aggressiv vom RAM gebraucht macht, können unsachgemäß gestaltete Programme (solche die keine
Vorsichtsmaßnahmen treffen, wenn sie auf die Festplatte schreiben und davon gibt es einige) dazu führen, dass eine ganze Menge Daten verloren gehen, wenn das System unerwartet ausfällt. Achtung: Es kann von GRUB vor Version 0.91 nicht erkannt werden.
3
Linux-Dateisysteme: jfs
•
JFS ist in journalisierendes Dateisystem mit modernen
Eigenschaften wie Extents und Onlinedefragmentierung, das aus IBMs UNIX-Derivat AIX stammt. Für das ebenfalls von IBM veröffentlichte Betriebssystem OS/2 wurde eine neue Generation des JFS entwickelt und im Jahr 2000 vorgestellt. Dieses JFS
stellt eine Neu-Implementation des JFS dar, da der "historische"
JFS-Code stark an die pSeries-Architektur angelehnt ist (OS/2 läuft auf x86-Computern). Dieser neue JFS-Code wurde in AIX 5.1 als JFS2 importiert und 2002 von IBM unter der GNU
General Public License freigegeben. Vor einiger Zeit hat das Linuxmagazin in einen Leistungsvergleich mit den
Dateisystemen Ext 2/3, JFS, ReiserFS und XFS festgestellt, dass
JFS bei geringster CPU-Belastung eine ausgewogene Leistung
über alle Anwendungsbereiche liefert.
Eigenschaften ext3
Vorteile / Eigenschaften
− 32 Bit: 16 TeraByte bei 4kB Cluster, (Server, Raid?)
− ein Journalsystem
• Umbenennen wird vermerkt
• Neue Dateien werden zwischengespeichert
• Das Journalsystem garantiert einen konsistenten Zustand
• Das Journalsystem garantiert keinen korrekten Zustand
− H-Baum-Verzeichnisindizes (Htree)
− Online-Veränderung der Dateisystemgröße
− Länge einer Pfad/Datei
• 255 Zeichen
Eigenschaften ext3
Nachteile
− Das Journalsystem garantiert keinen korrekten Zustand
• Es kann der alte Zustand vorhanden sein.
− Das Journalsystem kosten Zeit, mehr Zugriffe und Speicher
− Ext3 ist langsamer als andere Journaling-Dateisysteme (XFS,JFS)
− ext3 überschreibt bei Löschvorgängen die Block-Pointer mit Nullen
− Dies erschwert ein Wiederherstellen gelöschter Dateien
− Maximal 31998 Unterverzeichnisse
− Maximale Größe einer Datei:
• 16 GB bis 2 TB
− Maximale Anzahl von Dateien und Verzeichnissen
• n = Partitiongröße / 2
13− Zeitstempel: Sekunden
− Datumsbereich ?
• 13.12.1901 bis 19.01.2038
Verweis auf Datenblöcke
1. Block
8. Block 9. Block 10. Block
3. Block 2. Block
2x indiz. Block 1x indiz. Block
Cluster
Cluster Cluster 0. Block
255
0. Block 0. Block
Verweis auf Datenblöcke
1. Block
8. Block 9. Block 10. Block
3x indiz. Block 3. Block 2. Block
2x indiz. Block 1x indiz. Block
Cluster 0. Block
255
Cluster
Cluster
Cluster
255 255
255 255 255
0. Block 0. Block
0. Block 0. Block 0. Block
Eigenschaften ext4
Vorteile / Eigenschaften
− 48 Bit: Exbibyte (EiB), 1 152 921 504 606 846 976 Byte
• 1.073.741.824 Gigabyte, 1.048.576 TeraByte, 1 Exabyte
− Hat extents, Bereiche für Teile der Dateien: 12 Bit = 128 MB
• (Start, Anz. Cluster, ??)
− Keine Begrenzung bezüglich der Größe der Datei
− Keine Begrenzung bezüglich der Anzahl Unterverzeichnisse
− Datum: 14.12.1901 bis 25.04.2514
− Kein Löschen der Blöcke, Bit zeigt an, es ist LEER
− persistent preallocation: createFile(100000000);
− delayed allocation: Erste schreiben, wenn alles da ist
• Kaum Defragmentierung
− Integrierte Verschlüssung
− Journal mit Checksumme
Eigenschaften ext4
Nachteile
− Das Journalsystem garantiert keinen korrekten Zustand
− Das Journalsystem kosten Zeit, mehr Zugriffe und Speicher
− Extents maximal 128 Mbyte, 16 Bit à 4 kB
− Datei maximal 16 TeraByte: 2
32à 4 kB
− Dies erschwert ein Wiederherstellen gelöschter Dateien
− Maximale Anzahl von Dateien und Verzeichnissen
• n = Partitiongröße / 2
13− Zeitstempel: Nanosekunden
− delayed allocation: Erste schreiben, wenn alles da ist
− 0-Byte-Problem
• Probleme beim temp-write/rename (Datei noch leer)
• Probleme beim write/truncate (Datei noch leer)
− Schlechte Performance durch Write Barriers
Verweis auf Datenblöcke
Eigenschaften btrfs (Butter FS, Butterface FS, Better FS)
Vorteile / Eigenschaften
− Ähnlich wie ZFS (Sum, Oracle)
− integriertes RAID
− Volume-Management (Logische Partion, die änderbar sind, LVM)
− Prüfsummenbasierten Schutz vor Datenübertragungsfehlern
− Copy-on-Write, ein Verfahren, bei dem eine Kopie erst dann „real“
angefertigt wird, sobald sie von einem der Beteiligten verändert wird.
− erweiterter Speicherbereich (2
64Byte)
− effizientes Speichern von kleinen Dateien und Ordnern
− dynamische Inodes
− Schnappschüsse
− mehrere Wurzelverzeichnisse (Subvolume)
− Datenkompression
− Dateisystemüberprüfung und Defragmentierung zur Laufzeit
− effiziente interne inkrementelle Datensicherung
Ext3:
− Für 500 MB benötigt Ext3 eine halbe Megabyte über die Platte verstreuter 32-bittiger Blocknummern
Ext4
− Vorteile von Extents:
− Sie verringern den Verwaltungs-Overhead bei großen
Dateien – eine 500-MByte-Datei lässt sich mit vier Extents
à 12 Byte im Inode effizient verwalten.
Anzahl Datenblöcke: 128.000
1. Block
8. Block 9. Block 10. Block
3x indiz. Block 3. Block 2. Block
2x indiz. Block 1x indiz. Block
Cluster
0. Block
255
Cluster
0. Stufe
10 Clusteradresse
1. Stufe
1+256 Verwaltung
256 Clusteradresse
Verweis auf Datenblöcke
1. Block
8. Block 9. Block 10. Block
3x indiz. Block 3. Block 2. Block
2x indiz. Block 1x indiz. Block
Cluster
255 255
0. Block 0. Block
Cluster
255 0. Block
2. Stufe
1+256+65536 Verwaltung
65536 Clusteradresse
Verweis auf Datenblöcke
1. Block
8. Block 9. Block 10. Block
3x indiz. Block 3. Block 2. Block
2x indiz. Block 1x indiz. Block
Cluster
255
255 0. Block
0. Block
0. Block
255 0. Block
Cluster Cluster
255 0. Block
3. Stufe
1+1+256+65536
65536 Clusteradresse
Software-Installation
SUSE
−
YaST und YaST2
Yellow Dog
−