GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Mounten mehrerer img-Dateien als Single-Loop-Gerät

Ich glaube nicht, dass Sie es an Ort und Stelle tun können, aber wenn Sie genug Platz haben, sollte dies funktionieren:

# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k

# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01

# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1

# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>

# Mount the new filesystem
mount /dev/md0 /mnt

Sie können nicht einfach ein RAID-Array aus den Originaldateien erstellen, da die RAID-Festplatten einen bestimmten Header haben, in dem die Anzahl der Festplatten, das RAID-Level usw. gespeichert sind. Wenn Sie dies tun, wird dieser Teil Ihrer Originaldateien überschrieben.

Sie können den mdadm --build verwenden um ein Array ohne Metadaten zu erstellen, aber dann sollten Sie wirklich zuerst ein Backup machen. Oder wenn Read-Only-Mount ausreicht:

losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt

Warum willst du das tun? Wenn Ihr Dateisystem keine Dateien mit>4 GB verarbeiten kann, sollten Sie einfach zu einem vernünftigen wechseln.


Um ein geteiltes Disk-Image (oder Partitions-Image) zu mounten, sollten Sie affuse verwenden aus den afftools, die derzeit hier gepflegt werden:https://github.com/sshock/AFFLIBv3

Wenn Sie also eine Datei haben, teilen Sie sie in mehrere Unterdateien auf test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009

dann können Sie mit affuse virtuell mitmachen

# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw

(dies fasst alle Dateien zusammen, beginnend mit Datei 000, dann 001, 002, …)

Und mounten Sie dann das Image

mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test

Die Verwendung wird hier beschrieben und einige Beispiele hier. Eine Manpage ist auch nach dem Kompilieren und Installieren oder hier verfügbar.

PS:Für mich affuse funktionierte nur, wenn die aufgeteilten Dateien eine Größe hatten, die ein Vielfaches von 512 Bytes war.


Linux
  1. Importieren Sie mehrere SQL-Dateien in MySQL

  2. So komprimieren Sie mehrere Dateien unter Linux

  3. Linux – Kann ein einzelner Benutzer mehrere Crontab-Dateien haben?

  4. Mehrere glibc-Bibliotheken auf einem einzigen Host

  5. Dauerschleifengerät?

Umbenennungsbefehl in Linux (Mehrere Dateien umbenennen)

So erstellen Sie ein virtuelles Blockgerät (Loop-Gerät/Dateisystem) in Linux

Verwenden Sie ein Gerät über SSH?

Was ist ein Loop-Gerät bei der Montage?

Erstellen von RAID-Arrays auf Dateien anstelle von Blockgeräten

Tail mehrere entfernte Dateien