GNU/Linux >> Linux Esercitazione >  >> Linux

Montaggio di più file img come dispositivo a loop singolo

Non penso che tu possa farlo sul posto, ma se hai abbastanza spazio dovrebbe funzionare:

# 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

Non puoi semplicemente creare un array RAID dai file originali perché i dischi RAID hanno un'intestazione specifica in cui è memorizzato il numero di dischi, il livello RAID, ecc. Se lo fai, quella parte dei tuoi file originali verrà sovrascritta.

Puoi usare il mdadm --build per creare un array senza metadati, ma prima dovresti davvero fare un backup. O se il montaggio in sola lettura è sufficiente:

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

Perchè vuoi fare questo? Se il tuo filesystem non è in grado di gestire file>4GB, dovresti semplicemente passare a uno sano.


Per montare un'immagine del disco divisa (o un'immagine della partizione) dovresti usare affuse dagli afftools che sono attualmente mantenuti qui:https://github.com/sshock/AFFLIBv3

Quindi, se hai un file, suddividilo in diversi sottofile 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

poi puoi unirti a loro virtualmente con affuse

# 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

(questo combina tutti i file insieme a partire dal file 000, quindi 001, 002, …)

E poi monta l'immagine

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

L'utilizzo è descritto qui e alcuni esempi qui. Una manpage è disponibile anche dopo la compilazione e l'installazione, o qui.

PS:Per me affuse funzionava solo se i file divisi avevano una dimensione che era un multiplo di 512 byte.


Linux
  1. Importa più file SQL in MySQL

  2. Come rinominare più file usando Trova?

  3. Dd:file di input multipli?

  4. Linux:un singolo utente può avere più file Crontab?

  5. Utilizzare un dispositivo su SSH?

Rinomina comando in Linux (rinomina più file)

Come rinominare più file in un singolo comando o script in Unix??

Come creare un dispositivo a blocchi virtuali (dispositivo di loop/filesystem) in Linux

Più librerie glibc su un singolo host

Che cos'è un dispositivo loop durante il montaggio?

Montaggio di più dispositivi in ​​un singolo punto di montaggio su Linux