AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1002865
Accepted
Gunther Schadow
Gunther Schadow
Asked: 2020-02-13 16:28:41 +0800 CST2020-02-13 16:28:41 +0800 CST 2020-02-13 16:28:41 +0800 CST

将 Server 2008 R2 VM 从 atlantic.net 迁移到 AWS

  • 772

多年前,我在大西洋网络云上安装了许多服务器,现在我们的大部分东西都在 AWS 上。AWS 的好处是它允许我关闭(而不是付费)很少使用的机器。我想利用这一点,但迁移它会很困难,尤其是一个 Windows 服务器,它让你知道如何设置很痛苦。Unix没有大问题。

有没有办法只下载VM映像?如果我只是提取二进制磁盘映像(使用 cygwin dd 左右),将其发送到 AWS,将其二进制写入 EBS 磁盘 (dd),然后尝试启动它。这会有成功的机会吗?

我已经多次使用物理笔记本电脑驱动器做到这一点:只需将 NUC 拉出并放入 ThinkPad,然后当它分崩离析时,将其转移到另一个 ThinkPad 上,然后再回到 NUC,无论如何,它总是有效的。但我从来没有在虚拟机上做过这件事,AWS 尤其重要,因为你在启动期间无法访问控制台。

windows-server-2008 migration virtual-machines cloud amazon-web-services
  • 3 3 个回答
  • 129 Views

3 个回答

  • Voted
  1. Tim
    2022-03-15T11:24:11+08:002022-03-15T11:24:11+08:00

    您应该使用AWS Application Migration Service。是的,你使用一种叫做“应用程序迁移服务”的东西来迁移服务器,去看看吧。一旦你进入控制台的那个区域,它会引导你完成整个过程,但你基本上是在源服务器上安装一个代理,它复制到 AWS,你停止旧服务器,你启动新服务器。

    如果您的操作系统太旧且不受 AWS 支持,您应该复制您的数据并重新安装您的应用程序,而不是采取不受支持的变通办法。

    • 2
  2. Best Answer
    Gunther Schadow
    2022-03-16T13:07:33+08:002022-03-16T13:07:33+08:00

    我实际上能够做到这一点,我现在感觉非常有成就感。

    大多数人没有意识到的一件事是,将 Windows 从一种硬件转移到另一种硬件是多么容易。该方法只是获取磁盘的原始副本,将其插入新机器并启动。

    对于那些认为从头开始设置 Windows 系统更容易的人来说,事实并非如此,尤其是如果您依赖超过 10 年的旧软件并且没有安装盘:将系统盘换成新硬件!

    在没有控制台的情况下迁移到 AWS 会更加棘手。但这是可以完成的。

    概述

    1. 在旧的非 AWS 机器上安装 AWS 驱动程序,并打开启动日志记录。
    2. 如果您还没有,请获取 cygwin,这是为了让 dd 可以访问原始磁盘,还使用了 gzip 和 ssh。
    3. 尽可能缩小系统卷(C:驱动器)。
    4. 如果你在压缩后磁盘上有足够的空间,在另一个磁盘上创建一个文件系统分区或准备将系统分区原始克隆到新的分区,如果你可以关闭系统并可以访问磁盘,那就更容易了。但是在大西洋云上你不能这样做。
    5. 将系统盘的原始dd拷贝到其他空间,从磁盘开始到系统分区之后,以及物理磁盘的最后几个块,通过gzip写入大副本可以节省40%的空间,这对下一步很方便。
    6. 将这两个原始数据文件复制到一些临时空间,该空间理想地连接到 AWS 上的 UNIX(FreeBSD、Linux 等)服务器。我使用 scp 或通过 ssh 的管道。这是最耗时的步骤,以 1.6 MB/s 的传输速度花了我 10 个小时。这就是为什么缩小系统体积如此重要的原因。
    7. 获取原始大小的 AWS EC2 EBS 磁盘(在我的情况下为 160 GB,它最终与我原始的块数完全相同,非常好。)
    8. 将该新磁盘附加到正在运行的 UNIX 系统。
    9. 现在zcat | 将主要原始数据文件添加到该新磁盘,并写入最后的块。
    10. 从 UNIX 系统中分离该新磁盘。
    11. 启动 EC2 Windows 实例,启动并连接。我使用了 t2.micro(免费层),它是工作架构(t3.micro 不起作用)。
    12. 将该新磁盘附加到新的 Windows 系统。
    13. 在分区工具中,您可能会看到新磁盘“脱机”,右键单击并启用联机
    14. 您可能会在缩小的空间中看到备用分区,该内容没有被复制,只需删除该分区。在系统磁盘克隆上,单击“属性”并扫描/检查文件系统(在克隆中被关闭)。
    15. 彻底关闭Windows系统
    16. 在 EC2 控制台上,一旦系统停止,分离两个磁盘,并将克隆的磁盘附加为 /dev/sda1(引导磁盘)。
    17. 现在启动实例。
    18. 一旦它从 Pending 状态变为 Started 状态,获取实例屏幕截图,您会看到它在搅动,希望不会卡住,但会显示“按 ALT+CTL+DEL”屏幕。于是系统启动了。
    19. 如果您无法使用远程桌面访问系统,请稍等片刻,然后在 EC2 控制台上发出正常停止实例。无需急躁并强制停止。稍等片刻,它应该会停止。然后再次重新启动。
    20. 现在,当实例屏幕截图进入“按 ALT+CTL+DEL”屏幕时,再次尝试远程桌面,现在它应该可以工作了。

    细节

    要点 1.在旧的非 AWS 机器上安装 AWS 驱动程序并非易事。就我而言,我有一个超级旧的 Windows 2008 服务器,它甚至无法运行大部分 AWS 驱动程序附带的 install.ps1 脚本。

    此处的文档:https ://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/migrating-latest-types.html是最好的指南。

    1. 安装 AWS PV 驱动程序
    2. 安装 AWS ENA 驱动程序
    3. 安装 AWS NVMe 驱动程序
    4. 安装 EC2Config 和 EC2Launch

    PV 驱动程序很难,因为最新版本告诉您它不支持您的旧系统。但经过一番挖掘,我发现最后一个支持的版本是 8.3.4,然后我发现它的 URL 是:https ://s3.amazonaws.com/ec2-windows-drivers-downloads/AWSPV/8.3 .4/AWSPVDriver.zip。一旦找到,包含的 .msi 安装程序就可以毫无问题地运行。

    其他驱动程序从最新版本开始工作。但是为 ENA 驱动程序运行 install.ps1 脚本相当容易。对于 NVMe 驱动程序来说,这很难。我最终只是用自己的眼睛阅读脚本,解释它的作用,然后手动执行。

    EC2Config 和 EC2Launch 安装非常简单。

    现在重新启动系统,即使在旧平台上,也已经出现了显示 AWS 背景和右上角的 AWS 系统信息面板。没有显示太多,但它告诉你这个 EC2Launch 的东西发挥了它的魔力。

    关于 dd 副本。

    在 cygwin 上,磁盘驱动器是 /dev/sda、sdb、sdc、……你需要那个原始驱动器,而不是分区。首先,您需要获取要复制的分区的确切大小:

    $ wmic partition get name,bootable,size,type
    Bootable  Name                   Size          Type
    TRUE      Disk #0, Partition #0  104857600     Installable File System
    FALSE     Disk #0, Partition #1  104805171712  Installable File System
    FALSE     Disk #0, Partition #2  66884468736   Installable File System
    

    这些大小以字节为单位。您将启动和系统分区相加,104857600 + 104805171712 = 104910029312 字节。为了加快 dd,您希望读取更大的块,例如 10 MiB (bs=10M)。在这种情况下,您需要除以 1024 两次和 104910029312 /1024 /1024 /10 = 10005.00004882.. 然后向上取整:

    dd if=/dev/sda bs=10M count=10006 status=progress |gzip -cv > /cygdrive/d/diskimage.gz
    

    磁盘的末尾,您只需总结所有分区 66884468736 + 104805171712 + 104857600 = 171794498048 字节 / 1024 = 167768064 kiB 块:

    dd if=/dev/sda bs=1024 skip=167768064 of=/dev/null status=progress
    4096+0 records in
    4096+0 records out
    4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.057467 s, 73.0 MB/s
    

    4 kiB 是一个不错的小尺寸。如果这非常大,您将知道您的磁盘到底有多大,然后只取最后的 4 kiB。

    $ dd if=/dev/sda bs=1024 skip=167768064 of=diskimage.end status=progress
    4096+0 records in
    4096+0 records out
    4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0673959 s, 62.2 MB/s
    

    制作这些副本后,将内容转移到 AWS,在附加了新 EBS 卷的 UNIX 机器上,仔细检查它的位置,以免错误地擦除其他磁盘。就我而言:

    zcat diskimage.gz |dd of=/dev/nvd4 bs=10M status=progress
      104847114240 bytes (105 GB, 98 GiB) transferred 1550.052s, 68 MB/s
    0+1600960 records in
    10006+0 records out
    104920514560 bytes transferred in 1551.084986 secs (67643305 bytes/sec)
    

    最后:

    dd if=diskimage.end of=/dev/nvd4 bs=1024 seek=167768064  status=progress
      2983936 bytes (2984 kB, 2914 KiB) transferred 2.002s, 1491 kB/s
    4096+0 records in
    4096+0 records out
    4194304 bytes transferred in 2.836086 secs (1478906 bytes/sec)
    

    现在您可以启动了!

    启动完成

    当我第一次无法连接到它时,这是因为网络没有正确设置。

    2022/03/14 17:45:53Z: Windows sysprep configuration complete.
    2022/03/14 17:46:03Z: Failed to find primary network interface...retrying...
    2022/03/14 17:46:13Z: Failed to find primary network interface...retrying...
    2022/03/14 17:46:24Z: Failed to find primary network interface...retrying...
    

    打开启动日志,并查看 C:\Windows(将磁盘连接到正在运行的 Windows 系统时为 E:\Windows)中的一些 AWS 相关设置日志,按文件时间降序排序目录视图,我可以看到 xen 驱动程序是已安装,但未找到 xenbus 且未安装 xennet。但是在第二次启动时,我突然注意到现在已经安装了 xennet。所有的问题都消失了。

    • 1
  3. mfinni
    2022-03-15T15:50:37+08:002022-03-15T15:50:37+08:00

    看来您正在做一个方形钉/圆孔,试图在 AWS 上与 Windows 一起使用。也就是说,我有两个想法给你。

    1. 您是否尝试过此过程以获得引导控制台访问权限?你只是说“它没有用”而不说你尝试了什么。

    https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-sac.html

    1. 您也可以在嵌套虚拟化中运行它。创建一个运行现代版 Windows 的新 EC2 实例,运行 HyperV 或 VMware,并尝试启动您的磁盘映像。如果需要,您至少可以获得控制台访问权限并安装其他安装媒体。

    /Edit - 您在问题描述中说明了该过程的几个部分,但没有详细说明。你是怎么预装驱动的?你用过这里的包吗?

    https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Upgrading_PV_drivers.html

    • 0

相关问题

  • 文件复制到分支机构

  • 对于 ASP.Net 应用程序,Windows 64 位相对于 32 位的主要优势是什么?

  • Windows Server 2008 Hyper-V 虚拟化服务器的最佳 RAID 配置?

  • 远程连接 sql server 不工作,但如果防火墙禁用它呢?

  • 无法从 SQL Server 2008 备份数据库

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve