GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit obraz disku VHD z živého systému Linux?

Pro budoucí použití zde je návod, jak jsem nakonec postupoval, s několika komentáři k různým problémům nebo úskalím, se kterými jsem se setkal:

1. Spusťte počítač pomocí živého systému Linux

Prvním krokem bylo nabootovat počítač obsahující disk k obrazu pomocí živého systému Linux.

POZNÁMKA:Můj první nápad byl použít Ubuntu Live USB disk, ale themachine nepodporoval bootování z USB, takže jsem zjistil, že je jednodušší použít staré Knoppix live CD .

2. Obraz disku pomocí dd a propojte data přes ssh

Poté jsem zkopíroval veškerý obsah disku do obrazu souboru na místním serveru pomocí dd a přenos dat přes ssh :

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

Několik poznámek:tato metoda přečte veškerý obsah disku, takže to může trvat velmi dlouho (u 80Gb disku mi to trvalo 5 hodin). Úzkým místem není síť, ale opravdu rychlost čtení disku. Před spuštěním kopírování doporučuji zkontrolovat parametry BIOS/disk/systém, abyste se ujistili, že disk a základní deska pracují na nejvyšší možnou rychlost (to lze zkontrolovat příkazem hdparm -i a spuštěním testu s hdparm -Tt /dev/hdX ).

POZNÁMKA:dd nevypisuje průběh operace, ale můžeme jej vynutit, aby tak učinil odesláním USR1 signál do dd zpracovat PID z jiného terminálu:

$ kill -USR1 PIDofdd

Poznámka:Novější verze dd podporují status=LEVEL možnost (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. Získejte zpět nevyužité místo

V tuto chvíli již není zdrojový stroj potřeba a budeme pracovat výhradně na cílovém serveru (i na Linuxu). VirtualBox bude použit k převodu surového obrazu disku do formátu VHD, ale předtím můžeme vynulovat nepoužívané bloky, aby jim VirtualBox nepřidělil místo ve finálním souboru.

Abych to mohl udělat, připojil jsem obrázky jako zařízení zpětné smyčky:

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

POZNÁMKA:Posun označující začátek oddílu v obrazu disku lze získat pomocí parted v souboru obrázku:

$ 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

POZNÁMKA 2:Výchozí ovladač NTFS jádra Linuxu poskytuje přístup pouze pro čtení, proto je nutné nainstalovat a používat uživatelský prostor ntfs-3g ovladač nebo zápis na disk vyvolá chybu!

4. Vytvořte obraz VHD pomocí VBoxManage

V tomto okamžiku můžeme použít nástroje VirtualBox k převodu surového obrazu na soubor VHD:

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

Snažil jsem se udělat přesně to samé jako OP (při záchraně instalace Windows) a nakonec jsem pro něj vytvořil nový nástroj ntfsclone2vhd .

Pak byste jednoduše udělali něco takového:

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

Jedním z přístupů je použití několika užitečných technologií:VirtualBox a ntfsprogs balíček.

Nejnovější verze VirtualBoxu umožňují vytvářet soubory VHD na pevném disku, zatímco ntfsprogs poskytuje ntfsclone utility. Jak jeho název napovídá, ntfsclone klonuje souborové systémy NTFS a věřím, že to dělá na úrovni souborového systému a přeskakuje nepoužívané bloky disku.

Pro začátek tedy vytvořte nový virtuální počítač ve VirtualBoxu a zřiďte pro něj novou prázdnou jednotku se soubory VHD. Jednotka VHD musí být pouze tak velká, jako je velikost dat používaných na fyzické jednotce, kterou chcete klonovat (ve skutečnosti ji udělejte o něco větší, abyste měli prostor pro pohyb).

Dále najděte živé CD se systémem Linux, které obsahuje ntfsprogs balíček a také openssh-server . Líbí se mi System Rescue CD pro toto, ale téměř každé živé CD založené na Debianu nebo Ubuntu by mělo fungovat také.

Spusťte virtuální počítač VirtualBox pomocí živého CD Linuxu a spusťte sshd v rámci virtuálního počítače, takže na něm budete moci spouštět příkazy vzdáleně. Rozdělte prázdný VHD disk vhodným způsobem pomocí libovolného rozdělovacího nástroje, který preferujete (mám rád obyčejný fdisk , ale jsem poněkud stará škola).

S další kopií linuxového živého CD spusťte počítač obsahující fyzický disk, který chcete klonovat. Předpokládám, že VirtualBox VM a tento stroj jsou vzájemně přístupné přes síť. Na tomto počítači spusťte následující příkaz (vše na jednom řádku):

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

kde:

  • /dev/sdXX je název zařízení (na místním počítači) fyzické jednotky, kterou chcete klonovat, a
  • /dev/sdYY je název zařízení (ve VM) cílové jednotky VHD.

Vysvětlení:První ntfsclone příkaz v kanálu extrahuje obraz zdrojového souborového systému NTFS a odešle ho tunelem ssh, zatímco druhý ntfsclone příkaz přijme obraz a obnoví jej na jednotku VHD.

Po dokončení operace by soubor VHD měl obsahovat přesný klon původního fyzického disku soubor za soubor (s výjimkou jakýchkoli hardwarových chyb, jako jsou vadné sektory, které by mohly způsobit předčasné přerušení procesu).

Poslední věc, kterou možná budete chtít udělat, je spustit Windows chkdsk na jednotce VHD, jen aby klonování nezpůsobilo žádné problémy (nemělo by, ale hej, jsem z těchto věcí trochu paranoidní).


Linux
  1. Jak zvýšit počet diskových inodů v Linuxu

  2. Jak vytvořit video ze souborů PDF v Linuxu

  3. Jak vytvořit Linux bootovatelné USB z Linux Command-Line

  1. Linux – Jak vytvořit naformátovaný obrazový soubor diskového oddílu od nuly?

  2. Jak vytvořit vlastní obrázek z kontejneru Docker

  3. Jak připojit obraz disku s více oddíly v Linuxu?

  1. Jak vytvořit oddíly v Linuxu

  2. Jak formátovat diskové oddíly v Linuxu

  3. Jak vytvořit nový souborový systém Ext4 (oddíl) v Linuxu