我有一台运行Windows 2003的服务器,它位于由Promise FastTrak SX4100组成的RAID5arrays上,我认为它是基于硬件的,因为它具有专用的处理器和缓冲存储器以及启动DOS和Windows的能力。 然而事实certificate,这个控制器只是硬件辅助的 ,在主机处理器上运行的x86固件会执行更高级别的逻辑。 现在,老化的主板(或处理器?)已经死亡,我试图迁移到更现代的UEFI导向的硬件,RAID控制器无法初始化,即使在传统(BIOS)模式 – 它挂起时,扫描磁盘, 即 其固件接收来自UEFI / BIOS的控制并在屏幕上显示欢迎消息,但在识别连接的SATA驱动器方面没有任何进展。
因此,我认为在运行Windows的虚拟机上运行Windows可能会比使用PCI卡的虚拟机运行得更好,NT 5.2不太可能与现代芯片组兼容,而Qemu在经典BIOS模式下提供了完全舒适的仿真环境。 但是,问题是SeaBIOS并没有列出RAID控制器作为可启动设备 ,尽pipe能够成功地与它通信。
那是:
换句话说,这个arrays在虚拟机环境中似乎是完全可以运行的,但是SeaBIOS在某些时候并不认可它作为可启动设备 ,尽pipe后者确实支持用于Boot ROM选项的PCI设备,正如SeaBIOS内置的iPXEnetworking启动ROM本身。
我也有一个想法,GRUB可能在这里有任何帮助,我。 即 从SeaBIOS启动到GRUB(在一个单独的小磁盘上),然后链接到Windows。 然而,我并没有很成功地configuration它,因为Linux环境由于缺less驱动程序而没有看到数组,所以不能帮助创build菜单,但是GRUB本身不是太友好也不是冗长的 – 我甚至不能理解它是否真的将arrays视为磁盘驱动器,或者需要预先加载一些驱动程序或其他任何先决条件。 像RescaTux或PartedMagic这样的救援工具也无济于事,因为他们专注于修复现有的GRUB安装 – 而不是设置新的安装。
作为参考,我尝试了使用上游Qemu 2.6.2与SeaBIOS 1.9.1的Xen 4.7.2,在Linux 4.4.62的openSUSE 42.2之上。 论坛和邮件列表指出,从PCI RAID引导已经可能在十多年前的老版本,所以我认为这是我特别的设置责备。 但是我不明白, SeaBIOS确实能够从我的RAID控制器启动吗?
最终的目标是通过任何可用的手段获取服务器,包括通过购买另一个兼容的旧硬件。 但是我对这个特定的技术感到好奇,因为虚拟机似乎是延长传统系统寿命的更多function和面向未来的方法。
是的,SeaBIOS支持加载和运行PCI选项ROM。 这显然实际工作,你可以看到RAID控制器的启动信息。 PCI ROM然后必须注册任何可引导磁盘,这不在这里发生。 可能是一个configuration问题。 检查arraysconfiguration实用程序,只要您可以在那里configuration启动卷。 也可能是一些错误或不兼容…
如果不行,你可以尝试一些完全不同的东西:把磁盘连接到一些linux支持的sata控制器,然后检查dmraid是否能够解码raid卷。 如果可以的话,你可以把它作为简单的磁盘连接到你的win2k3虚拟机上。
那么你只有一个办法:
PCI V2.2
扩展插槽的旧主板,并尝试从RAID控制器启动。 GParted
程序改变启动和根分区(通常是窗口的磁盘C:
GParted
的开始位置。 逻辑RAID驱动器上必须具有更多的8Gb + RAM空闲未分区大小。 确保你可以在后面启动。 dd
命令复制逻辑磁盘到备份驱动器上的文件。 然后将磁盘连接到新主板,在软件RAID1上安装Linux 举个例子:你有RAID5中的4个120Gb磁盘和一个逻辑驱动器/dev/sda
。 您只有一个分区/dev/sda1
,它是Windows磁盘C:
/dev/sda1
GParted
减小后的尺寸为300Gb。 您可以通过以下命令挂载另一个备份驱动器: mount /dev/sdb1 /mnt
。 然后用命令dd if=/dev/sda of=/mnt/disk-c.img bs=4M count=77056
将RAID磁盘的第一个301Gb复制到备份驱动器。 当它被复制时,请umount /mnt
。
例如:通过命令lvcreate -L 302G -n win_disk vg0
创build逻辑卷。 装载备份驱动器并将数据复制到dd of=/dev/vg0/win_disk if=/mnt/disk-c.img bs=4M count=77056
的卷dd of=/dev/vg0/win_disk if=/mnt/disk-c.img bs=4M count=77056
。
将您的RAID控制器放到回收站中。
PS:
当我创buildWindows 2000虚拟机时,我分配了下一个虚拟硬件:
驱动程序:
瑞昱RTL3189C
用于KVM libvirt的Windows guest驱动程序
旧的英特尔芯片组支持