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 FB Automatisierung und Informatik: Linux 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) FB Automatisierung und Informatik: Linux 2 1
Logische Dateisysteme von Ubuntu FB Automatisierung und Informatik: Linux 3 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 nichtjournalisierenden 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. FB Automatisierung und Informatik: Linux 4 2
Linux-Dateisysteme reiserfs 3 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. FB Automatisierung und Informatik: Linux 5 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. FB Automatisierung und Informatik: Linux 6 3
Eigenschaften ext3 Vorteile / Eigenschaften 32 Bit: 16 TeraByte bei 4kB, (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 Zeichen FB Automatisierung und Informatik: Linux 7 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 FB Automatisierung und Informatik: Linux 8 4
Verweis auf Datenblöcke 1. Block 2. Block 3. Block 8. Block 9. Block 1 1x indiz. Block 2x indiz. Block 3x indiz. Block FB Automatisierung und Informatik: Linux 9 Verweis auf Datenblöcke 1. Block 2. Block 3. Block 8. Block 9. Block 1 1x indiz. Block 2x indiz. Block 3x indiz. Block FB Automatisierung und Informatik: Linux 10 5
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.,??) 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 unterstützt ATA Trim für SSDs: FB Automatisierung und Informatik: Linux 11 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 à la Datenbank (alles oder nichts) FB Automatisierung und Informatik: Linux 12 6
Verweis auf Datenblöcke http://www.heise.de/open/artikel/das-linux-dateisystem-ext4-221262.html FB Automatisierung und Informatik: Linux 13 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 64 Byte) 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 FB Automatisierung und Informatik: Linux 14 7
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. FB Automatisierung und Informatik: Linux 15 Anzahl Datenblöcke: 128.000 1. Block 2. Block 3. Block 0. Stufe 10 adresse 8. Block 9. Block 1 1x indiz. Block 2x indiz. Block 3x indiz. Block 1. Stufe 1+256 Verwaltung 256 adresse FB Automatisierung und Informatik: Linux 16 8
Verweis auf Datenblöcke 1. Block 2. Block 3. Block 8. Block 9. Block 1 1x indiz. Block 2x indiz. Block 3x indiz. Block 2. Stufe 1+256+65536 Verwaltung 65536 adresse FB Automatisierung und Informatik: Linux 17 Verweis auf Datenblöcke 1. Block 2. Block 3. Block 8. Block 9. Block 1 1x indiz. Block 2x indiz. Block 3x indiz. Block 3. Stufe 1+1+256+65536 65536 adresse FB Automatisierung und Informatik: Linux 18 9
Software-Installation SUSE YaST und YaST2 Yellow Dog rpm FB Automatisierung und Informatik: Linux 19 opensuse: KDE mit YaST und YaST2 FB Automatisierung und Informatik: Linux 20 10
RPM Package Manager RPM ist eine umfangreiche Software für: Install packages Remove packages Upgrade packages Verify packages Optionen -i -v -h -u -e install verbose update deinstallieren https://www.linux.com/learn/docs/ldp/707-rpm-howto FB Automatisierung und Informatik: Linux 21 RPM Beispiele Install rpm -i msoffice.rpm Install packages Installation ohne Meldung rpm -ivh msoffice.rpm Install packages Installation mit detaillierter Meldung Update rpm -Fvh msoffice.rpm Update packages Update ohne Meldung rpm -Uvh msoffice.rpm Install or Update packages Update oder Installation mit detaillierter Meldung FB Automatisierung und Informatik: Linux 22 11
RPM Beispiele Deinstallation rpm -e msoffice.rpm Deinstall packages Deinstallation ohne Meldung rpm -evh msoffice.rpm Deinstall packages Deinstallation mit detaillierter Meldung Abhängigkeit rpm -qr msoffice.rpm Bestimme Abhängigkeit eines Paketes rpm -qpr msoffice.rpm Bestimme Abhängigkeit einer rpm-datei FB Automatisierung und Informatik: Linux 23 12