GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un'immagine disco VHD da un sistema live Linux?

Per riferimento futuro, ecco come ho proceduto alla fine, con alcuni commenti sui vari problemi o trabocchetti incontrati:

1. Avvia la macchina con un sistema live Linux

Il primo passo è stato avviare la macchina contenente il disco di cui creare l'immagine, utilizzando un sistema live Linux.

NOTA:la mia prima idea era quella di utilizzare un disco USB Ubuntu Live, ma la macchina non supportava l'avvio da USB, quindi ho trovato più semplice utilizzare un vecchio Knoppix live CD .

2. Immagina il disco usando dd e convogliare i dati attraverso ssh

Quindi, ho copiato tutto il contenuto del disco in un'immagine del file sul mio server locale utilizzando dd e reindirizzare i dati attraverso ssh :

$ dd if=/dev/hdX bs=4k conv=noerror,sync | ssh -c blowfish [email protected] 'dd of=myfile.dd'

Alcuni commenti qui:questo metodo leggerà tutto il contenuto del disco, quindi può richiedere molto tempo (mi ci sono volute 5 ore per un disco da 80 GB). Il collo di bottiglia non è la rete, ma in realtà la velocità di lettura del disco. Prima di avviare la copia, consiglio di controllare i parametri BIOS/disco/sistema per assicurarsi che il disco e la scheda madre funzionino alla massima velocità possibile (questo può essere verificato utilizzando il comando hdparm -i ed eseguendo un test con hdparm -Tt /dev/hdX ).

NOTA:dd non mostra lo stato di avanzamento dell'operazione, ma possiamo forzarlo a farlo inviando USR1 segnale al dd elaborare PID da un altro terminale:

$ kill -USR1 PIDofdd

Nota:versioni più recenti di dd supporta il status=LEVEL opzione (man dd )

   status=LEVEL
          The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
          the final transfer statistics, 'progress' shows periodic transfer statistics

3. Recupera lo spazio inutilizzato

A questo punto, la macchina di origine non è più necessaria e lavoreremo esclusivamente sul server di destinazione (che esegue anche Linux). VirtualBox verrà utilizzato per convertire l'immagine del disco non elaborata nel formato VHD, ma prima di farlo, possiamo azzerare i blocchi inutilizzati, in modo che VirtualBox non allochi spazio per loro nel file finale.

Per fare ciò, ho montato le immagini come dispositivo di loopback:

$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file

NOTA:L'offset che indica l'inizio della partizione all'interno dell'immagine del disco può essere ottenuto utilizzando parted sul file immagine:

$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit?  [compact]? B
(parted) print
Model:  (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type      File system  Flags
 1      32256B        21936821759B  21936789504B  primary   ntfs         boot
 2      21936821760B  80023749119B  58086927360B  extended               lba
 5      26608813056B  80023749119B  53414936064B  logical   ntfs

NOTA2:Il driver NTFS del kernel Linux predefinito fornisce l'accesso in sola lettura, quindi è necessario installare e utilizzare lo spazio utente ntfs-3g driver o la scrittura sul disco genererà un errore!

4. Crea l'immagine VHD usando VBoxManage

A questo punto, possiamo utilizzare le utility di VirtualBox per convertire l'immagine raw in un file VHD:

VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD

Stavo cercando di fare esattamente la stessa cosa dell'OP (durante il salvataggio di un'installazione di Windows) e ho finito per creare un nuovo strumento per questo, ntfsclone2vhd .

Dovresti quindi semplicemente fare qualcosa del genere:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd

Un approccio consiste nell'utilizzare un paio di utili tecnologie:VirtualBox e ntfsprogs pacchetto.

Le versioni recenti di VirtualBox consentono di creare file su disco rigido VHD, mentre ntfsprogs fornisce il ntfsclone utilità. Come suggerisce il nome, ntfsclone clona i filesystem NTFS e credo che lo faccia a livello di filesystem, saltando i blocchi del disco inutilizzati.

Quindi, per iniziare, crea una nuova VM in VirtualBox e fornisci una nuova unità di file VHD vuota per essa. L'unità VHD deve essere grande solo quanto la dimensione dei dati in uso sull'unità fisica che desideri clonare (beh, in realtà, rendila un po' più grande, per consentire un po' di spazio di manovra).

Successivamente, trova un CD live di Linux che contenga il ntfsprogs pacchetto, così come openssh-server . Mi piace System Rescue CD per questo, ma praticamente qualsiasi live CD basato su Debian o Ubuntu dovrebbe funzionare altrettanto bene.

Avvia la VirtualBox VM con il live CD di Linux e avvia sshd all'interno della VM in modo da poter eseguire comandi su di essa da remoto. Partiziona l'unità VHD vuota in modo appropriato, utilizzando qualsiasi strumento di partizionamento che preferisci (mi piace il semplice vecchio fdisk , ma sono un po' vecchia scuola).

Con un'altra copia del live CD di Linux, avvia la macchina contenente il disco fisico che vuoi clonare. Presumo che la VM VirtualBox e questa macchina siano accessibili l'una all'altra tramite la rete. Su questa macchina, esegui il seguente comando (tutto su una riga):

ntfsclone --save-image -o - /dev/sdXX |
    ssh [email protected] 'ntfsclone --restore-image --overwrite /dev/sdYY -'

dove:

  • /dev/sdXX è il nome del dispositivo (sul computer locale) dell'unità fisica che desideri clonare e
  • /dev/sdYY è il nome del dispositivo (nella VM) dell'unità di destinazione VHD.

Spiegazione:Il primo ntfsclone comando nella pipeline estrae un'immagine del filesystem NTFS sorgente e la invia attraverso il tunnel ssh, mentre il secondo ntfsclone Il comando riceve l'immagine e la ripristina nell'unità VHD.

Una volta completata l'operazione, il file VHD dovrebbe contenere un clone esatto file per file del disco fisico originale (salvo eventuali errori hardware, come settori danneggiati, che potrebbero causare l'interruzione prematura del processo).

Un'ultima cosa che potresti voler fare è eseguire un chkdsk di Windows sull'unità VHD, solo per garantire che la clonazione non abbia introdotto alcun problema (non avrebbe dovuto, ma ehi, sono un po 'paranoico su queste cose).


Linux
  1. Come aumentare il numero di inode del disco in Linux

  2. Come creare un video da file PDF in Linux

  3. Come creare USB avviabile Linux dalla riga di comando di Linux

  4. Linux:come creare un file immagine di partizione formattato da zero?

  5. Come creare un'immagine personalizzata da un contenitore Docker

Come creare un video da immagini in Linux

Come creare USB live di Antergos Linux

Come montare il file del disco rigido virtuale (VHD) in Ubuntu Linux?

Come crittografare il filesystem di root su Linux

Come creare partizioni del disco su Linux

Come creare file nel sistema Linux:una guida definitiva