====== Migrace Windows VM (GPT - MBR) ====== ===== Migrace VM (Windows2012) z Hyper-V do oVirtu ===== 1) **Poznamenat si nastavení IP parametrů** - VM po přesunu uvidí “jiné” síťovky (virtio), kterým je potřeba ručně znovu nastavit IP parametry. Proto je dobré si je předem poznamenat. 2) **Zkopírujeme celý disk Clonezillou na cílový disk** (lze metodou on the fly - podmínkou je společná síť) 3) **gdisk konverze GPT do MBR** - na cílovém disku samozřejmě gdisk /dev/vda r g p - pro kontrolu w q, Yes 4) **fdisk** - spojit prvni tři partition do jedné, čtvrtou přečíslovat na druhou, oflagovat první partition jako bootable. Stav před změnou: fdisk /dev/vda p Command (m for help): p Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 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: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/vda1 2048 616447 614400 300M 27 Hidden NTFS WinRE /dev/vda2 616448 819199 202752 99M ef EFI (FAT-12/16/32) /dev/vda3 819200 1081343 262144 128M c W95 FAT32 (LBA) /dev/vda4 1081344 266336255 265254912 126.5G 7 HPFS/NTFS/exFAT # Smažeme první tři parttion. d 1 d 2 d 3 # Vytvoříme novou první parttion od začátku disku 2048 až po začátek původně čtvrté partition. n p 1 Na nové partition, která je teď první, vytvoříme filesysytém NTFS. t 1 7 p Command (m for help): p Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 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: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/vda1 2048 1081343 1079296 527M 7 HPFS/NTFS/exFAT /dev/vda4 1081344 266336255 265254912 126.5G 7 HPFS/NTFS/exFAT # Vda4 bychom chtěli jako vda2 - pro pořádek. # Smažeme tedy čtvrtou partition. (Ke ztrátě dat nedojde, vytvoříme-li ji znovu se stejným začátkem a koncem.) d 4 # Vytvoříme novou partition 2. n p 2 # Vytvoříme na ní filesysytém NTFS. t 2 7 # Oflagujeme ji jako boot. a 1 p Command (m for help): p Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 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: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 1081343 1079296 527M 7 HPFS/NTFS/exFAT /dev/vda2 1081344 266336255 265254912 126.5G 7 HPFS/NTFS/exFAT # Zapíšeme změny na disk w 5) **dd** * připravit si referenční čistou instalaci windows v oVirtu. * připojit referenční disk se vzorovou čistou instalací widlí * zkopírovat (dd) obsah první partition z referenční čisté instalace windows (připravený image by se hodil) * bacha, aby cílová nebyla menší než zdrojová (opak nevadí) fdisk -l Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 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: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 1081343 1079296 527M 7 HPFS/NTFS/exFAT /dev/vda2 1081344 266336255 265254912 126.5G 7 HPFS/NTFS/exFAT Disk /dev/loop0: 138.8 MiB, 145498112 bytes, 284176 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 Disk /dev/vdb: 130 GiB, 139586437120 bytes, 272629760 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: dos Disk identifier: 0xfe809e9f Device Boot Start End Sectors Size Id Type /dev/vdb1 * 2048 718847 716800 350M 7 HPFS/NTFS/exFAT /dev/vdb2 718848 272627711 271908864 129.7G 7 HPFS/NTFS/exFAT dd if=/dev/vdb1 of=/dev/vda1 bs=512 6) **opravit MBR za pomoci dd a hexdumpu** * /dev/vdb = vzor (tento byl připojen za běhu) * /dev/vda = cil (s timto VM nastartoval) * Z blokového zařízení nelze pomocí dd číst po jednotlivých bytech (min. 512). Chceme-li tedy sloučit prvních 446 byte ze vzorového disku se zbytkem (partition table) z cílového disku, musíme použít jako prostředníka soubory - z nich již lze číst a a zapisovat do nich po jednom byte. Viz. postup níže... Zkopírujeme prvních 512 byte do souboru ./vzor. (pozn. od adresy 000001be zacina partition table) dd if=/dev/vdb bs=512 count=1 > ./vzor hexdump -C ./vzor Z cílového disku si také zkopírujeme prvních 512 byte do souboru ./cil dd if=/dev/vda bs=512 count=1 > ./cil hexdump -C ./cil Nyní zkopírujeme jen 446 prvních byte ze souboru ./vzor do souboru ./cil (conv=notrunc zajistí aby zbytek souboru ./cil zůstal nezměněn) dd if=./vzor bs=1 count=446 conv=notrunc of=./cil hexdump -C ./cil Zkopírujeme obsah souboru ./cil na cílový disk. dd if=./cil of=/dev/vda bs=512 count=1 Výpis prvních 512 byte cílového disku pro kontrolu. dd if=/dev/vda bs=512 count=1 | hexdump -C sync Vypnout VM. 7) **Oživení VM v oVirtu** * Připojit systémový disk jako IDE k VM * Nastartovat VM, proběhnou nějaké opravy, ale systém by měl nakonec naskočit * Připojit dočasně druhý jakýkoliv (fake) disk jako virtio, klidně zaživa * Otevřít správce zařízení, instalace všech potřebných virtio driverů (síť, disk, atp.) * Vypnout VM * Odpojit fake disk * Změnit primární disk na virtio * Nastartovat VM * Nastavit síť dle poznámek - možná nepůjdou nové síťovky pojmenovat stejně jako ty původní. Je to tím, že ty původní tam stále jsou, ale nejsou vidět. Ve správci zařízení stačí dát něco jako “Zobrazit skrytá zařízení” a staré síťovky pak odstranit. * Zkontrolovat eventlog