linux:arbeiten-mit-images

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:arbeiten-mit-images [2011/03/02 02:35] stlinux:arbeiten-mit-images [2021/10/15 10:42] (aktuell) st
Zeile 1: Zeile 1:
 +====== Arbeiten mit Images ======
  
 +Images (auch: Container, Abbilder genannt) sind eine einfache und flexible Möglichkeit Blockorientiert in einer Datei zu arbeiten. Typischerweise nutzt man diese Möglichkeit beim [[linux:Backup]], zu Testzwecken, der [[forensische Analyse|forensischen Analyse]] und in der [[software:Virtualisierung]]. 
 +
 +  * Image erzeugen (Größe 1G ): <code bash>dd if=/dev/zero of=image1G.img bs=1024000 count=1024</code>
 +  * Image erzeugen (als **sparse-Datei** = wachsende Dateien die nicht voll zugewiesen sind) z.B. einer Datei mit 128 GB:<code bash>dd if=/dev/zero of=filename.img bs=1k seek=128M count=1</code>
 +  * Image vergrößern (um 1G ): <code bash>dd if=/dev/zero bs=1024000 count=1024 >> image2G.img</code>
 +  * manche Operationen können auch direkt auf der Image-Datei ausgeführt werden:
 +    * ext3 Dateisystem anlegen: <code bash>mkfs.ext3 Image.img</code>
 +    * Dateisystemcheck: <code bash>e2fsck Image.img</code>
 +
 +===== Besonderheiten bei Anpassung von Partitionen und Dateisystemen =====
 +
 +**GPT-Datenträger**: Die Vergrößerung führt dazu das der Backup-GPT nicht mehr am Ende des Gerätes ist sondern irgendwo in der mitte ist. Außerdem stimmt die Größe des Datenträgers (logischerweise) nicht mehr.
 +Gparted kann das fixen und ist auch sonst komfortabel bei der Anpassung von Dateisystemen.
 +
 +===== loop devices =====
 +
 +  * nächstes freie Gerät anzeigen: <code bash>sudo losetup -f</code>
 +  * **Image direkt mounten** (ohne ein device mit ''losetup'' anzulegen):<code bash>sudo mount -t ext3 Image.img /media/IMAGE -o loop </code>
 +  * Datei ''Image.img'' als Gerät ''/dev/loop0'' einrichten: <code bash>losetup /dev/loop0 Image.img</code>
 +  * Gerätedatei entfernen: <code bash>losetup -d /dev/loop0</code>
 +
 +  * **Partitionen**: Die /dev/loop?-Geräte kennen keine Partitionierung, daher kann immer nur auf eine Partition zugegriffen werden.
 +    * root@linux# sfdisk -d image<file># Partitionstabelle von /tmp/image
 +unit: sectors
 +
 +/tmp/image1 : start=       32, size=    20448, Id=83, bootable
 +[..]</file>da die Angaben in Blöcken á 512 Byte sind, kann der Startbereich (-> offset) und das Größenlimit berechnet werden:<code bash>echo $((32 * 512)) $((20448 * 512))</code>mit diesen Angaben wird mount gefüttert:<code bash>mount -o loop,offset=16384,sizelimit=10469376 image /media/image</code>
 +  * **maximale Anzahl von Images** (mit loop) **bereits gemounted**:
 +    * **Lösung mit Neustart**: In der ''/etc/modules'' anhängen:<file>loop max_loop=64</file> nach einem Neustart können 64 Images (bzw. loop-Devices) benutzt werden
 +    * **Lösung ohne Neustart** (sofort Modul "loop" neu laden):<code bash>rmmod loop
 +modprobe loop</code>
 +      * beim laden vom [[xen:Xen]]: <code bash>sudo nano /etc/modprobe.d/xen</code>mit dem folgenden Inhalt:<file>options loop max_loop=64</file>
 +
 +
 +===== qcow2 Images resizen =====
 +
 +Qcow2-Image um 10G vergrößern (funktioniert nur wenn keine snapshots existieren!): <code bash>qemu-img resize /path/to/image.qcow2 +10G</code>((qemu-img befindet sich im Paket ''qemu-utils''))
 +Anschließend muss im System die Partion vergrößert bzw. eine neue angelegt werden (um diese z.B. in ein LVM aufzunehmen).
 +
 +
 +
 +===== qcow2 Images zu raw konvertieren =====
 +
 +<code bash>qemu-img convert disk.qcow2 -O raw disk.img</code>((qemu-img befindet sich im Paket ''qemu-utils''))