2

I'm trying to virtualize (P2V) a very old Win2K server (an IBM x345) with related storage:

  • a main C: drive, running on top of a RAID 5 logical-array served by an internal ServeRAID HW controller and related internal HDD);

  • two distinct additional LUNs (disks S: and F:) served through a QLA2XXX FC-HBA connected to a SAN (whose main array is an IBM DS-4300).

My goal is to migrate the all of this on a VM served by a new Xen Server 6.2 platform.

To avoid any risks from the source side (BTW: the system is more or less "critical" and... reinstalling it could easily became a nightmare, due to the very old/legacy/proprietary/orphan software running on it), I've deliberately choosed to not alter the original OS in any way (no sysprep; no preliminary xen-tools installation; no new sw and/or configuration at all).

So, I simply went through the following steps:

  • Define a new VM on XS with proper CPU and memory;
  • Add three different disks, properly sized, to such a VM;
  • (re)booted the server and the VM with a sysrescuecd;
  • run a "dd" over LAN for each of the three source disks.

Once the "dd" finished:

  • I snapshotted the VM;
  • I (tried to) start the VM.

Result was (...not surprisingly) this:

enter image description here

(BTW: while the VM was in such a context, the CPU of the VM was constantly 100%!)

So, I went through some sanity checks and fix made by starting the VM with a live-CD (sysrescuecd) or the original Win2K. In detail:

  • I can succesfully access all of the data on each of the three disks, particularly the C: ones;
  • I'm able to start the VM with the Win2K "iso", and launch, from it, usual fixmbr and fixboot commands, from recovery-console;
  • I'm able to launch a new install of Win2K, asking to "repair" the current (and correctly found/recognized by the installer) Win2K installation
  • I went through the run of the xenserver-linux-fixup-disk.iso (that, if I understood correctly, should help in solving exactly the problems I'm facing with...).

Any of the above tests (repeated multiple times, actually), ended with the very same results: the VM is unable to start even the very early stage of the boot process.

In the best cases, I've been succesfull in obtaining this:

enter image description here

so the operating system (the boot loader, I guess) seems to have been found but... again, unable to start the boot process. Also in this case, CPU of the VM is stuck at 100%.

As the boot-process seems to broke at a very early stage (you see that even the common text-based initial progress-bar, during which F8 can be pressed to select advanced startup parameters/settings, is never shown!) I'm mostly sure that the solution should be quite simple: probably a new "boot-loader" and/or a new "kernel" being able to access the Win2K installation on the first HD of the VM.

A final note: while investigating, I discovered a mismatch in the disk geometry. Note the rows 7-10 below:

root@sysresccd /root % sfdisk /dev/xvda
sfdisk: Checking that no-one is using this disk right now ...
sfdisk: OK

Disk /dev/xvda: 13054 cylinders, 255 heads, 63 sectors/track
Old situation:
sfdisk: Warning: The partition table looks like it was made
  for C/H/S=*/254/63 (instead of 13054/255/63).
For this listing I'll assume that geometry.
Units: cylinders of 8193024 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/xvda1          0+      6       7-     55975+  fe  LANstep
/dev/xvda2   *      7    8876    8870   70968870    7  HPFS/NTFS/exFAT
/dev/xvda3          0       -       0          0    0  Empty
/dev/xvda4          0       -       0          0    0  Empty
sfdisk: Input in the following format; absent fields get a default value.
<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
Usually you only need to specify <start> and <size> (and perhaps <type>).

sfdisk: /dev/xvda1 :

such a mismatch is also confirmed by testdisks:

TestDisk 6.14, Data Recovery Utility, July 2013
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Disk /dev/xvda - 107 GB / 100 GiB - CHS 13054 255 63
Current partition structure:
     Partition                  Start        End    Size in sectors

 1 P LANstep                  0   1  1     6 247 63     111951

Bad sector count.
Warning: number of heads/cylinder mismatches 254 (NTFS) != 255 (HD)
 2 * HPFS - NTFS              6 248  1  8842  47 63  141937740

Bad relative sector.

After the all of that, here's the (easily expected) question: can someone shed some light, helping me in booting my VM?


Update 1: details of the VM

[root@xs-cust1 ~]# xe vm-param-list uuid=48b4c627-c06e-5bd9-23e1-28b141c6f948
uuid ( RO)                          : 48b4c627-c06e-5bd9-23e1-28b141c6f948
                    name-label ( RW): SRV-Win2K-Cust1
              name-description ( RW): Ex Server Windows 2000 - Cust1
                  user-version ( RW): 1
                 is-a-template ( RW): false
                 is-a-snapshot ( RO): false
                   snapshot-of ( RO): <not in database>
                     snapshots ( RO): 32489008-869c-c2f4-904c-c90219adc44d
                 snapshot-time ( RO): 19700101T00:00:00Z
                 snapshot-info ( RO): 
                        parent ( RO): 32489008-869c-c2f4-904c-c90219adc44d
                      children ( RO): 
             is-control-domain ( RO): false
                   power-state ( RO): halted
                 memory-actual ( RO): 8325660672
                 memory-target ( RO): 0
               memory-overhead ( RO): 71303168
             memory-static-max ( RW): 8589934592
            memory-dynamic-max ( RW): 8589934592
            memory-dynamic-min ( RW): 8589934592
             memory-static-min ( RW): 134217728
              suspend-VDI-uuid ( RW): <not in database>
               suspend-SR-uuid ( RW): 75f87360-62ac-a9f4-01e7-7ade3d5ab943
                  VCPUs-params (MRW): 
                     VCPUs-max ( RW): 2
              VCPUs-at-startup ( RW): 2
        actions-after-shutdown ( RW): Destroy
          actions-after-reboot ( RW): Restart
           actions-after-crash ( RW): Restart
                 console-uuids (SRO): 
                      platform (MRW): timeoffset: 0; nx: true; acpi: 1; apic: true; pae: true; viridian: true
            allowed-operations (SRO): changing_dynamic_range; changing_shadow_memory; changing_static_range; make_into_template; destroy; export; start_on; start; clone; copy; snapshot
            current-operations (SRO): 
            blocked-operations (MRW): 
           allowed-VBD-devices (SRO): 
           allowed-VIF-devices (SRO): 1; 2; 3
                possible-hosts ( RO): 371a8bf7-cdcd-4e65-9d68-8d381295b266
               HVM-boot-policy ( RW): BIOS order
               HVM-boot-params (MRW): order: dc
         HVM-shadow-multiplier ( RW): 1.000
                     PV-kernel ( RW): 
                    PV-ramdisk ( RW): 
                       PV-args ( RW): 
                PV-legacy-args ( RW): 
                 PV-bootloader ( RW): 
            PV-bootloader-args ( RW): 
           last-boot-CPU-flags ( RO): vendor: GenuineIntel; features: 77bee3ff-bfebfbff-00000001-2c100800
              last-boot-record ( RO): '('struct' ('uuid' '48b4c627-c06e-5bd9-23e1-28b141c6f948') ('allowed_operations' ('array')) ('current_operations' ('struct' ('OpaqueRef:f7852954-eeae-7c76-ebe8-af3997a75776' 'start'))) ('power_state' 'Halted') ('name_label' 'SRV-Win2K-Curatela') ('name_description' 'Ex Server Windows 2000 - Curatela') ('user_version' '1') ('is_a_template' ('boolean' '0')) ('suspend_VDI' 'OpaqueRef:NULL') ('resident_on' 'OpaqueRef:NULL') ('affinity' 'OpaqueRef:35d77c6a-5a39-3cd4-7dc5-d697974d8c7c') ('memory_overhead' '71303168') ('memory_target' '0') ('memory_static_max' '8589934592') ('memory_dynamic_max' '8589934592') ('memory_dynamic_min' '8589934592') ('memory_static_min' '134217728') ('VCPUs_params' ('struct')) ('VCPUs_max' '2') ('VCPUs_at_startup' '2') ('actions_after_shutdown' 'destroy') ('actions_after_reboot' 'restart') ('actions_after_crash' 'restart') ('consoles' ('array')) ('VIFs' ('array' 'OpaqueRef:09e03a34-7f46-8412-6f21-518458b628f0')) ('VBDs' ('array' 'OpaqueRef:14105d9b-11cc-f0fd-91b2-ddf782f68d5a' 'OpaqueRef:cbfa8007-1f74-9bff-f040-e17731b296a5' 'OpaqueRef:e4aab04e-7556-e267-89bd-745ab52ff9d3' 'OpaqueRef:20c42ac7-db5d-7fc0-2c7d-d23cc5b25e23')) ('crash_dumps' ('array')) ('VTPMs' ('array')) ('PV_bootloader' '') ('PV_kernel' '') ('PV_ramdisk' '') ('PV_args' '') ('PV_bootloader_args' '') ('PV_legacy_args' '') ('HVM_boot_policy' 'BIOS order') ('HVM_boot_params' ('struct' ('order' 'dc'))) ('HVM_shadow_multiplier' ('double' '1')) ('platform' ('struct' ('timeoffset' '0') ('nx' 'true') ('acpi' '1') ('apic' 'true') ('pae' 'true') ('viridian' 'true'))) ('PCI_bus' '') ('other_config' ('struct' ('vgpu_pci' '') ('base_template_name' 'Other install media') ('mac_seed' 'f55b69ea-6990-782b-0ca5-875137642603') ('install-methods' 'cdrom'))) ('domid' '-1') ('domarch' '') ('last_boot_CPU_flags' ('struct' ('vendor' 'GenuineIntel') ('features' '77bee3ff-bfebfbff-00000001-2c100800'))) ('is_control_domain' ('boolean' '0')) ('metrics' 'OpaqueRef:74fb058c-7c16-35d9-9f2f-9196e9427230') ('guest_metrics' 'OpaqueRef:NULL') ('last_booted_record' '') ('recommendations' '<restrictions><restriction field=\"memory-static-max\" max=\"137438953472\" /><restriction field=\"vcpus-max\" max=\"16\" /><restriction property=\"number-of-vbds\" max=\"16\" /><restriction property=\"number-of-vifs\" max=\"7\" /></restrictions>') ('xenstore_data' ('struct' ('vm-data' ''))) ('ha_always_run' ('boolean' '0')) ('ha_restart_priority' '') ('is_a_snapshot' ('boolean' '0')) ('snapshot_of' 'OpaqueRef:NULL') ('snapshots' ('array' 'OpaqueRef:807cb650-f9c6-5f31-8419-d7b60cd20fc9')) ('snapshot_time' ('dateTime.iso8601' '19700101T00:00:00Z')) ('transportable_snapshot_id' '') ('blobs' ('struct')) ('tags' ('array')) ('blocked_operations' ('struct')) ('snapshot_info' ('struct')) ('snapshot_metadata' '') ('parent' 'OpaqueRef:807cb650-f9c6-5f31-8419-d7b60cd20fc9') ('children' ('array')) ('bios_strings' ('struct')) ('protection_policy' 'OpaqueRef:NULL') ('is_snapshot_from_vmpp' ('boolean' '0')) ('appliance' 'OpaqueRef:NULL') ('start_delay' '0') ('shutdown_delay' '0') ('order' '0') ('VGPUs' ('array')) ('attached_PCIs' ('array')) ('suspend_SR' 'OpaqueRef:34a5267c-75cb-b7e6-d7ba-318b26a540fe') ('version' '0') ('generation_id' ''))'
                   resident-on ( RO): <not in database>
                      affinity ( RW): 371a8bf7-cdcd-4e65-9d68-8d381295b266
                  other-config (MRW): vgpu_pci: ; base_template_name: Other install media; mac_seed: f55b69ea-6990-782b-0ca5-875137642603; install-methods: cdrom
                        dom-id ( RO): -1
               recommendations ( RO): <restrictions><restriction field="memory-static-max" max="137438953472" /><restriction field="vcpus-max" max="16" /><restriction property="number-of-vbds" max="16" /><restriction property="number-of-vifs" max="7" /></restrictions>
                 xenstore-data (MRW): vm-data: 
    ha-always-run ( RW) [DEPRECATED]: false
           ha-restart-priority ( RW): 
                         blobs ( RO): 
                    start-time ( RO): 19700101T00:00:00Z
                  install-time ( RO): 20141213T10:05:48Z
                  VCPUs-number ( RO): 0
             VCPUs-utilisation (MRO): 
                    os-version (MRO): <not in database>
            PV-drivers-version (MRO): <not in database>
         PV-drivers-up-to-date ( RO): <not in database>
                        memory (MRO): <not in database>
                         disks (MRO): <not in database>
                      networks (MRO): <not in database>
                         other (MRO): <not in database>
                          live ( RO): <not in database>
    guest-metrics-last-updated ( RO): <not in database>
      cooperative ( RO) [DEPRECATED]: true
                          tags (SRW): 
                     appliance ( RW): <not in database>
                   start-delay ( RW): 0
                shutdown-delay ( RW): 0
                         order ( RW): 0
                       version ( RO): 0
                 generation-id ( RO): 
Damiano Verzulli
  • 3,948
  • 1
  • 20
  • 30

1 Answers1

0

My suggestion:

  1. Install a Windows 2000 VM. Doesn't need to be exactly the same edition as the one being migrated. Just to ensure all tuning parameters are proper. Size the disk similarly (or slightly larger) than the source server.

  2. Use Clonezilla to perform the disk image backup-and-restore, rather than plain dd. Clonezilla understands the vagaries of NTFS that might cause boot failure.

pepoluan
  • 4,918
  • 3
  • 43
  • 71
  • Thanks, @pepoluan. I was aware of clonezilla as well as other more-or-less-smart-image tools. Anyway, I didn't know that partimage will take care of "rearranging" the image during the process. Some times ago, while searching for P2V solution (where "V" means "XEN"), I met "Relax and Recover" - http://relax-and-recover.org/about/ that tell: "Bare metal recovery on dissimilar hardware [...] various virtualization technologies supported (KVM, Xen, VMware)". I'll try it, as well as Clonezilla (while still wondering what's the real problem with "dd"). – Damiano Verzulli Dec 15 '14 at 02:37
  • `dd` performs byte-faithful reproduction, but might be problematic if transferring partition tables between dissimilar geometries. Clonezilla can cope with different geometries. – pepoluan Dec 15 '14 at 03:49