Montare più file img come dispositivo single loop


19

C'è un modo per prendere un file img del disco che è suddiviso in parti e montarlo come un dispositivo a loop singolo?


1
Come è rotto? Che formato è? Potrebbe esserci un po 'di miccia per questo, se si tratta di un formato speciale, ma sospetto che la risposta sia di metterli insieme!
Caleb,

Sono limitato dal formato del dispositivo ai file che sono meno i 4 concerti. Ho accesso root al dispositivo. C'è qualcosa che posso con LVM
MageProspero,

Risposte:


16

Non penso che tu possa farlo sul posto, ma se hai abbastanza spazio questo 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 è possibile semplicemente creare un array RAID dai file originali poiché 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.

È possibile utilizzare il mdadm --buildper creare un array senza metadati, ma è necessario prima effettuare un backup. O se è sufficiente il montaggio in sola lettura:

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.


Potrebbe essere in grado di farlo anche con Device Mapper, ma quanto sopra è più facile.
Wodin,

Ci scusiamo per aver impiegato così tanto tempo ad accettare, ottima risposta. Non lo farei in circostanze normali, è più una domanda sulla modalità avventura.
MageProspero,

2
Probabilmente si desidera utilizzare truncateinvece ddche in quanto è molto più veloce (non esegue la scrittura effettiva su FS ma alloca solo gli inode e contrassegna il file come contenente solo il foro).
Maciej Piechotka,

Bello. Non lo sapevo.
stribika,

Per esperienza, se si utilizzano backup basati su cloud di grande capacità o soluzioni di sincronizzazione come CrashPlan o Google Drive a pagamento, è un'ottima, molto buona idea utilizzare piccoli file divisi anziché un singolo file enorme. In caso di download non riuscito del file, dovrai scaricare nuovamente, per esempio, 1 GB invece dell'intera cosa da 100 GB.
RAKK,

3

Per montare un'immagine del disco divisa (o immagine della partizione) è necessario utilizzare affusedagli afftools che sono attualmente gestiti qui: https://github.com/sshock/AFFLIBv3

Pertanto, se si dispone di un file, suddividere in più file secondari 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

allora puoi unirti praticamente a loro 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 quindi montare l'immagine

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

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

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


4
Ho appena provato questo metodo. Ha un avvertimento importante: ti permetterà solo di montare la tua immagine in sola lettura.
RAKK,

Funziona alla grande purché tu abbia solo centinaia e non migliaia di blocchi di file. Potrebbe essere meglio usare mdadm per creare una partizione raid lineare: unix.stackexchange.com/a/98779/22709
Jay Taylor,


0

La cosa più vicina che conosco finora a una soluzione è creare una VM VMware. Avvii un CD live Linux come Rescatux o Knoppix, crei una cartella condivisa SMB sul tuo computer host, monti quella condivisione SMB sulla tua VM e poi ddl'immagine nell'HD virtuale. VMware per impostazione predefinita salva le immagini del disco come file divisi, quindi questa è la cosa più vicina alla lettura diretta di un'immagine del disco suddivisa in più file.

Successivamente, se si desidera accedere ai file dal computer host, è possibile provare ad aggiungere un secondo HD virtuale all'immagine e a copiarne i file. Quindi imposta una cartella condivisa SMB sulla VM e ti connetti ad essa dal tuo host. In questo modo è possibile, ad esempio, violare il limite di 4 GB di file di FAT32 nel caso in cui si stia utilizzando un iPod Classic (che utilizza solo fat32) o la scheda SD del proprio smartphone (in genere è necessario installare una ROM personalizzata per per utilizzare Ext3 o NTFS sulla memoria esterna, per questo è necessario un telefono di un produttore popolare come Samsung o Motorola, quindi se si dispone di uno smartphone cinese si è sconcertati).

Non è certamente una soluzione efficiente, tuttavia, ma dato che sono stato limitato non potendo usare FS diverso da fat32 sul mio iPod Classic o sui miei smartphone Samsung con ROM di riserva, ho cercato praticamente tutto Internet in passato e ancora non riesco a trovare una soluzione efficiente a questo. Potrei anche doverlo scrivere da solo.

PS: Hai dimenticato di dire che se sei su Windows questo potrebbe essere l'unico modo per farlo.


È passato del tempo da quando ho visitato questo problema. Ce l'ho ancora. Inoltre ho esattamente lo stesso motivo per cui lo fai. Mi chiedo se è possibile avviare un processo che ha il proprio file system personalizzato, onestamente mi piacerebbe provare questo. So di poterlo fare nel nodo. Ho avuto successo portando l'interprete a root. Non so se questo risolva il tuo problema, però se lo facessi. Sul mio hardware Samsung Galaxy va bene. Dimmi, ti piacerebbe lavorare insieme su qualcosa per questo problema.
MageProspero,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.