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 Backup, zu Testzwecken, der forensischen Analyse und in der Virtualisierung.
- Image erzeugen (Größe 1G ):
dd if=/dev/zero of=image1G.img bs=1024000 count=1024
- Image erzeugen (als sparse-Datei = wachsende Dateien die nicht voll zugewiesen sind) z.B. einer Datei mit 128 GB:
dd if=/dev/zero of=filename.img bs=1k seek=128M count=1
- Image vergrößern (um 1G ):
dd if=/dev/zero bs=1024000 count=1024 >> image2G.img
- manche Operationen können auch direkt auf der Image-Datei ausgeführt werden:
- ext3 Dateisystem anlegen:
mkfs.ext3 Image.img
- Dateisystemcheck:
e2fsck Image.img
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:
sudo losetup -f
- Image direkt mounten (ohne ein device mit
losetup
anzulegen):sudo mount -t ext3 Image.img /media/IMAGE -o loop
- Datei
Image.img
als Gerät/dev/loop0
einrichten:losetup /dev/loop0 Image.img
- Gerätedatei entfernen:
losetup -d /dev/loop0
- Partitionen: Die /dev/loop?-Geräte kennen keine Partitionierung, daher kann immer nur auf eine Partition zugegriffen werden.
- root@linux# sfdisk -d image
# Partitionstabelle von /tmp/image unit: sectors /tmp/image1 : start= 32, size= 20448, Id=83, bootable [..]
da die Angaben in Blöcken á 512 Byte sind, kann der Startbereich (→ offset) und das Größenlimit berechnet werden:
echo $((32 * 512)) $((20448 * 512))
mit diesen Angaben wird mount gefüttert:
mount -o loop,offset=16384,sizelimit=10469376 image /media/image
- maximale Anzahl von Images (mit loop) bereits gemounted:
- Lösung mit Neustart: In der
/etc/modules
anhängen:loop max_loop=64
nach einem Neustart können 64 Images (bzw. loop-Devices) benutzt werden
- Lösung ohne Neustart (sofort Modul „loop“ neu laden):
rmmod loop modprobe loop
- beim laden vom Xen:
sudo nano /etc/modprobe.d/xen
mit dem folgenden Inhalt:
options loop max_loop=64
qcow2 Images resizen
Qcow2-Image um 10G vergrößern (funktioniert nur wenn keine snapshots existieren!):
qemu-img resize /path/to/image.qcow2 +10G
1) 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
qemu-img convert disk.qcow2 -O raw disk.img