Clonare un hard disk

La clonazione di un hard disk può essere realizzata in linux in varie modalità.

La modalità più tranquilla consistente nell’utilizzare il tools clonezilla che consente di copiare sia dischi che partizioni in modo diretto oppure passando per le immagini. Volendo anche da remoto.
Clonezilla in modalita esperta consente anche di copiare verso un disco a dimensioni minori:   

Clonezilla può essere installato con:

apt install partclone nilfs-tools clonezilla

Da terminale uno dei comandi utilizzati per clonare un hard disk è  dd  ( disk dump ) per la copia e la conversione dei file. Del resto in linux le unità disco sono per il file system come normali file.

la sintassi è del tipo dd if=/dev/sda of=/dev/sdb

E’ preferibile utilizzare la pipe con:

sudo dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=128Kb conv=sync,noerror

dd in azione

sudo dd if=/dev/sdb | pv | dd of=/dev/sda bs=64K conv=sync,noerror
42.6GiB 0:21:33 [38.1MiB/s] [ <=> ]

Considerato che capita di clonare dischi tra tipi che sono di diversa tipologia  magnetici, SDD, NVMe, USB. In genere è più agevole clonare le singole partizioni 

sudo dd if=/dev/sda1 sudo dd of=/dev/sdb1

oppure
sudo dd if=/dev/sda1 | pv | sudo dd of=/dev/sdb1  conv=sync,noerror

if= input file  legge i dati bite by bite dall’unità specificata

of=output file scrive sul file /tmp/cdimg1.iso i.e. crea l’ immagine ISO ( of=output file )

dump sullo STDOUT del primo disco .
lo STDIN viene redirezionato sul disco di destinazione

pv misura l’avanzamento del processo fornendo un utile visualizzazione dello stesso.

bs (block size)   incide sulla velocità di trasferimento.





E’ possibile anche generare un’immagine del disco da clonare con

dd if=/dev/sdb dd of=~/backup_sdb.img 
dd if=/dev/hdb | gzip -c  > /image.img

Anche il comando copia cp si può prestare allo scopo per clonazioni semplici.
In questo caso si copia dapprima la tabelle delle partizioni e poi si procede con la copia delle varie partizioni.

Clonare la tabella delle partizioni in altro disco: sgdisk ( gtp ) sfdisk ( mbr )

# su

La copia della tabella delle  partizioni del disco sda in formato GPT può essere copiata in sdb con

sgdisk --backup=tmp.sgdisk /dev/sda 
sgdisk --load-backup=tmp.sgdisk /dev/sdb

è possibile randomizzare il GUID delle partizioni con

sgdisk -G /dev/sdb

Per usare un comando unico si può anche far ricorso all’opzione -R

# sgdisk -R /dev/sdb /dev/sda

Una volta clonata la tabella della partizioni si può copiare una partizione dal disco sorgente al disco destinazione anche con cp :

# cp /dev/sda1   /dev/sdb1

Esemplificazione:

  
# fdisk -l 
Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9510A25D-BB40-4144-84DA-FDA8E5A1F08F

Device        Start      End  Sectors  Size Type
/dev/sda1      2048  2029567  2027520  990M BIOS boot
/dev/sda2   2029568  5122047  3092480  1.5G Linux filesystem
/dev/sda3   5122048 71737343 66615296 31.8G Linux filesystem
/dev/sda4  71737344 74993663  3256320  1.6G Linux filesystem
/dev/sda5  74993664 80254975  5261312  2.5G Linux filesystem
/dev/sda6  89329664 94812159  5482496  2.6G Linux filesystem


Disk /dev/sdb: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 39815586-FDA7-4932-A409-B2622B832407

# sgdisk -R /dev/sdb /dev/sda 
Caution! Secondary header was placed beyond the disk's limits! Moving the
header, but other problems may occur!
The operation has completed successfully.

# fdisk -l 
Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9510A25D-BB40-4144-84DA-FDA8E5A1F08F

Device        Start      End  Sectors  Size Type
/dev/sda1      2048  2029567  2027520  990M BIOS boot
/dev/sda2   2029568  5122047  3092480  1.5G Linux filesystem
/dev/sda3   5122048 71737343 66615296 31.8G Linux filesystem
/dev/sda4  71737344 74993663  3256320  1.6G Linux filesystem
/dev/sda5  74993664 80254975  5261312  2.5G Linux filesystem
/dev/sda6  89329664 94812159  5482496  2.6G Linux filesystem


Disk /dev/sdb: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9510A25D-BB40-4144-84DA-FDA8E5A1F08F

Device        Start      End  Sectors  Size Type
/dev/sdb1      2048  2029567  2027520  990M BIOS boot
/dev/sdb2   2029568  5122047  3092480  1.5G Linux filesystem
/dev/sdb3   5122048 71737343 66615296 31.8G Linux filesystem
/dev/sdb4  71737344 74993663  3256320  1.6G Linux filesystem
/dev/sdb5  74993664 80254975  5261312  2.5G Linux filesystem
/dev/sdb6  89329664 94812159  5482496  2.6G Linux filesystem


Risorse:

https://serverfault.com/questions/905261/hdd-cloning-with-dd?rq=1

https://serverfault.com/questions/4906/using-dd-for-disk-cloning

Differenze tra PVM (paravirtualization ) e HVM ( Xen Full virtualization )

PVM (Xen Paravirtualization – ParaVirtualized Machine ) rappresenta un approccio diverso alla virtualizzazione introdotto da Xen e ripreso da altri. In questo caso non c’è nessuna emulazione via software del hardware. E’ necessario tuttavia utilizzare dei kernel modficati. Ciò comporterà un’approccio più efficente, meno pesante e una velocità superiore.

HVM ( Xen Full virtualization – Hardware Virtualized Machine ) è una VM in cui si ha piena emulazione in software del hardware ( assistito  comunque dal hardware per poter essere efficace ).

Per Riconoscere/Distinguere una PV Machine da una HV Machine è possibile  ad es. controllare le opzioni di boot della VM e/o controllare  il risultato del comando lspci  .

Comando lspci :
PVM

$ lspci
~$

[non appare nulla ]
in una PVM non otteremo nessun elenco.  La VM non ha motherboard virtuale o altri dispositivi PCI  virtuali.

HVM

$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB Controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
...
...
$

In una HVM otteremo un elenco di dispositivi. Infatti una HVM avrà tutti dispositivi emulati dal sofware una  virtual motherboard, virtual PCI devices (IDE/SCSI block devices, hard disc, video board …)

Network boot :

Un altro modo per  riconoscere una HV  consiste controllare le propiertà della VM particolarmente le opzioni di boot.  Una  HVM supporta il  network boot, DVD and HDD boot. Mentre una  PV supporta solo  DVD or HDD boot  manca il network boot.  38. ( XenServer: Accedere a  VM >> “Properties” >> “Startup Options” )

Creare VM o PV machines

Per creare una HVM in XenServer utilizzare  l’opzione  “Other Install media
per creare  una PVM utilizzare il template specifico per la distribuzione prescelta e preferire l’installazione con il metodo URL

E possibile convertire VM da HVM to PVM dopo l’installaizone e vice-versa.

Windows non opera come  PV Machine.  Intel and AMD implemented an assistance for hardware emulation within their CPUs in order to make it feasible to emulation. E’ possibile caricare drivers in Windows che usino PV communications channel verso  disk/network/etc in Dom0 invece dei device emulati qemu PCI devices.

Risorse:

Installazione di X server minimale con Xvnc e Xrdp – remote desktop

Xvnc e una sorta di falso Xserver. Non necessita di alcun display device e può essere validamente utilizzato per lanciare applicazioni utilizzando connessioni  di tipo remote desktop .

Di seguito la procedura per installare X server vnc (fake X server) con window manager/desktop manager minimali in debian e ubuntu.

 

apt-get install xserver-xorg-video-dummy vnc4server x11-xserver-utils xterm wm2

quindi avviare vnc server e inserire la password

vnc4server
enter password

la password di vìnc4server può essere modifcata con

vnc4passwd

installare un client vnc per connettersi al pc remoto

apt-get install xtightvncviewer 

avviare la connessione inserendo l’indirizzo ip e il numero di
display in genere 0 se è il solo X server attivo – altrimenti provare con 1 o 2

xtightvncviewer 192.168.1.7:0

o

xtightvncviewer 192.168.1.7:1

come desktop manager minimale è possbille installare xfce

aptitude install xfce4 ( 200 MB)

xrdp

A mio avviso non va trascurata l’ipotesi di installare in alternativa xrdp in abbinamento a remmina come client.
Xrdp tuttavia utilizza sempre vnc4server che viene installato come dipendenza. vnc è pixel-based pertanto lavora bene a in una rete locale su internet invece è decisamente meno efficace di rdp.

Debian

 su - 

aptitude install xrdp

Ubuntu

sudo aptitude install xrdp

o

sudo apt-get install xrdp

per controllare connessione in una macchina virtuale PVM debian 6.0 xu Xenserver

sudo netstat -anpt | grep -E "vino|vnc|xrdp"

tcp 0 0 127.0.0.1:3350 0.0.0.0:* LISTEN 867/xrdp-sesman
tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN 859/xrdp
tcp6 0 0 :::5910 :::* LISTEN 2757/Xvnc

se si stabilisce una connessione remota apparirà una ulteriore riga del tipo

tcp6 0 0 127.0.0.1:5910 127.0.0.1:49474 ESTABLISHED 1635/Xvnc

se si usa rdesktop come client da terminale si può usare un comando
di questo tipo:

rdesktop -a 16 -g 1240x800 192.168.1.7

E possibile anche ottenere una sessione rdp genuina con una serie di modifiche migliorando le performance su rete internet

Altri post argomenti correlati:

Installare x2go in Debian squeeze 6.0 32 bit

Installare FreeNX in Ubuntu 12.04