cloop - a transparently decompressing block device

Ähnliche Dokumente
KNOPPIX GNU/Linux ohne Installation

PVFS (Parallel Virtual File System)

10 Jahre KNOPPIX KNOPPIX. Live GNU/Linux System. Schwarz: Transparent, CD Hintergrundfarbe (silber) bei Zweifarbdruck, sonst schwarz.

Knoppix-Remastering Workshop

KNOPPIX GNU/Linux ohne Installation

Knoppix Micro-Remastering

Linux Grundlagen. Wolfgang Scheicher. 20. Mai 2006

Knoppix-Remastering Knoppix-Remastering. Christian Perle, secunet Security Networks AG, NL Dresden 1

VMWare 3.0. Vmware Installation: - Install VMWARE. - c:\ Programme \ VMWARE. - CD Autorun disable / ja

Debian Pakete bauen. Eine kurze Einführung. Sebastian Harl. 12. März

Dateisystem 1, Suchpfad, Befehlstypen

Merkblatt System-C Installation Linux

Linux Prinzipien und Programmierung

Network-Attached Storage mit FreeNAS

Verschlüsselte Dateisysteme unter Linux

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1

OFS: Ein allgemeines Offline-Dateisystem auf Basis von FUSE

Linux Administration: Dateisystem, Benutzer, Rechte,... Folie 1 von 14

GNU Assembler & GCC. Eine virtuelle Maschine aufsetzen. Zunächst muss eine neue virtuelle Maschine erstellt werden.

Linux Paging, Caching und Swapping

Aufbau eines Kernelmoduls

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

1 LINUX-CHEATSHEET (symbolischer Name localhost ) ist der jeweils aktuelle

Installationsanleitung Lernwerkstatt 7 auf Ubuntu/Kubuntu 8.04 (Hardy Heron)

Redo Backup and Recovery Instructions

Grundlagen zu VirtualBox. am Beispiel von VirtualBox 5 von Dirk Burkert

Wie groß ist die Page Table?

Konzepte von Betriebssystemkomponenten. Gerätetreiber. Mario Körner

U1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar

LVM und ZFS reloaded

Virtualisierung mit Virtualbox

SLT Schwabacher Linuxtage 2009 Herzlich willkommen. Peter Botschafter / sudo

Securepoint Security Systems

Dokumentation CanFox API

Archivieren und Komprimieren, SSH

Infrastruktur im Wandel

Linux gefahrlos testen

Was ist Linux im Vergleich zu Windows, Folie 1 von 13

Hello World! Eine Einführung in das Programmieren Das erste Programm

Android. Enrico & Sebi

Docker. Grundlagen SaarCamp 2016 Nico Maas

Freiberuflicher IT-Berater Schwerpunkte: Unix, Oracle, Netzwerk. Dipl.-Inform. Joachim Jäckel

Freispeicherverwaltung

Xen mit virtueller Maschine auf Debian installieren

RFID RC522. Ausgabe Copyright by Joy-IT 1

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

LINUX 4U Das professionelle

Initramfs - The initial RAM filesystem

am besten erst den ganzen Abschnitt lesen, besonders das mit dem patch!

Thema: Umgang mit ISO-Images

Inhaltsverzeichnis Erste Schritte Grundprinzipien in Linux

Bibliotheks-basierte Virtualisierung

Die Shell - Das Vorspiel

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

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

Fedora 24 Workstation Installation

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

Docker. Softwaretest, Testautomatisierung und -management. Nico Maas. Grundlagen. Saar 2017

Linux System Administration Inhouse Training

File Carving Grundlagen und neue Techniken.

BASIC Tutorial für Anfänger

Linux Installation. PC-Treff-BB. Ubuntu 15.10

Treiber Kernel und Module bauen

Docker. Grundlagen Workshop Trier Tech Talk Conference, Nico Maas

Linutronix - Wir verbinden Welten. Open Source Software in der Industrie. Firmenvorstellung

Transkript:

cloop - a transparently decompressing block device Klaus Knopper KNOPPER.NET in cooperation with LinuxTag e.v. Build date: 10.3.2002

Zusammenfassung cloop - Compressed Loopback Device - ist ein ursprünglich von Paul Rusty Russel (Author of ipchains & iptables) für Linuxcare geschriebenes, auf loop.c von Kernel 2.2 basierendes Blockdevice, das das transparente Lesen blockweise komprimierter Images erlaubt. Das Modul wurde von Klaus Knopper auf Kernel 2.4 portiert und mit diversen Erweiterungen für das komprimierte Dateisystem für die KNOPPIX- CD versehen (wird jedoch auch von anderen Projekten wie der LNX-BBC verwendet). Durch die transparente Kompression können auf einer Standard 650MB-CD bis zu 2 Gigabyte an lauffähiger Software und Dokumentation installiert werden. Folie 1

cloop Features Block-Device (Major 240, Minor 0), weitestgehend Dateisystem-unabhängig (Host- und Guest-Dateisystem), reines Modul, wird aus dem Quelltext für den jeweiligen Kernel gebaut, kein Kernel-Patch erforderlich [2], gzip/zlib-blockkompression, in der aktuellen Version (0.63) sehr Lesefehlertolerant, Kernel 2.2 und 2.4-tauglich (per #ifdef), cloop-modul & Utilities: GPL, libz/gzip: LGPL [3]. Folie 2

Dateisystem und Blockdevice-Layer Datei Datei Datei Verzeichnis Virtuelles Dateisystem (VFS) Blockdevice (Gerätedatei) Physikalische Schicht (Hardware) oder: Emulation (Loop) Folie 3

Übersetzen make KERNEL DIR=/usr/src/linux-2.4.18 Liest Kernel-Optionen aus autoconf.h und setzt ggf. SMP-Option. übersetzt zlib-1.3 statisch, übersetzt compressed loop.c und Utilities, erzeugt Binaries create compressed fs und extract compressed fs bindet zlib mit compressed loop.o zu cloop.o. Folie 4

Übersetzen (Debian-Paket) apt-get source cloop cd cloop-0.63 :> knoppix fakeroot dpkg-buildpackage Folie 5

Installieren mknod -m 444 /dev/cloop b 240 0 install -m 755 cloop.o \ /lib/modules/`uname -r`/kernel/drivers/block/ install -m 755 *compressed fs /usr/sbin/ Debian: dpkg -i../cloop-utils 0.63-2 i386.deb dpkg -i../cloop-module 0.63-2 i386.deb dpkg -i../cloop-src 0.63-2 all.deb Folie 6

Image erzeugen mkisofs -r -l datadir \ create compressed fs - 65536 > isoimg.z Achtung: create compressed fs hält das komplette komprimierte Image bis zur vollständigen Abarbeitung und Schreiben der Header im virtuellen Speicher, damit es als PIPE (z.b. für cdrecord) verwendet werden kann. Für ausreichend SWAP sorgen! Folie 7

Anwenden (1) Z.B. bei KNOPPIX [1] in linuxrc: insmod cloop.o file=/cdrom/knoppix/knoppix mount -r /dev/cloop /mnt/knoppix Folie 8

Anwenden (2) knopper@koffer: /cloop-chemnitz2002$ df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda1 104412 97208 7204 94% / /dev/hda5 2562252 1520304 1041948 60% /usr... /dev/cloop 1848152 1848152 0 100% /mnt/knoppix -rw-r--r-- 1 knopper users 11776 Feb 13 19:52 powerslide. knopper@koffer: /cloop-chemnitz2002$ ls -l /mnt/knoppix/ drwxr-xr-x 2 knopper users 2880 Mar 10 02:42 slides -rwxr-xr-x 1 knopper users 57 Mar 9 04:26 start.sh drwxr-xr-x 2 knopper users 112 Mar 7 01:39 style drwxr-xr-x 2 knopper users 168 Mar 8 15:11 templates... Folie 9

Performance-Tuning (1) iso9660 mit Rockridge (-R), evtl. abgeschalteten Kompatibilitätsflags (-U) ist ein leseoptimiertes Dateisystem, welches als Gast-Dateisystem einen sehr schnellen Zugriff bietet. Durch den Blockdevice-Cache werden dekomprimierte Blöcke im RAM gehalten, während (v.a. bei Kernel 2.4.x) durch geeignete Mapping-Routinen doppeltes Caching der komprimierten Blöcke vermieden wird. Der zuletzt gelesene komprimierte Block wird Modul-intern vollständig gecacht Vermeiden von unnötigen physikalischen Lesevorgängen. Folie 10

Performance-Tuning (2) Die Dateien sind für KNOPPIX in einer mkisofs.sortlist mit Lese-Timestamp vorsortiert, so dass sie einigermaßen in der richtigen Reihenfolge physikalisch auf der CD vorhanden sind und am Stück gelesen werden können Reduzierung der Laserabtasterkopfbewegung. Höherer gzip-kompressionsfaktor: bringt bei 64k- Blöcken nichts. bzip2 statt gzip: Komprimiert eine CD mit gemischten Daten durchschnittlich ca. 5% besser, ist aber beim Dekomprimieren Faktor 4 langsamer als der gzip-algorithmus. Folie 11

Komprimiertes Image - Format Alle Nummern und Pointer in network byte order: 1. 128 Bytes Header mit kleinem Shellskript als Selbst-Lader (insmod cloop.o file=/path/to/image), 2. Header mit Information uncompressed Blocksize und Anzahl der Blöcke, 3. Block Index: (a) Adresse des ersten komprimierten Blocks der Datei, (b) Adresse des 2. komprimierten Blocks der Datei, (c)... (d) end-of-file Adresse. 4. Daten: (a) Komprimierter Block # 1, (b) Komprimierter Block # 2, (c)... Folie 12

Geplante Erweiterungen Unterstützung von Mehrfach-Loops (evtl. mit Hilfe von losetup-ioctl()s). Optimierung des Blockindex-Suchalgorithmus, redundanten Code entfernen. Schreibunterstützung: Problematisch, da komprimierte Blockgröße variabel und Löschen von Blocks nicht möglich (gehört eigentlich in den VFS- Layer). Dekompressor in Assembler für häufigste Architekturen. devfs-unterstützung. Folie 13

Links [1] http://www.knoppix.de/ Abkürzungs-URL zur KNOPPIX-CD. [2] http://www.knopper.net/knoppix/sources/ Sourcen von cloop. [3] http://www.gnu.org/ Homepage der GNU-Software und der GPL. [4] http://www.lnx-bbc.org/ Homepage des Linux-Bootable-Businesscard Projekt. [5] Kontakt/ Entwickler-Liste: cloop@knopper.net debian-knoppix@linuxtag.org Folie 14