Sha*_*yar 4 google-compute-engine windows-server-2012
我不是 Windows 专家,在从 Snapshot 恢复 Windows Server 2012 时卡住了。我正在尝试从几周前从 Windows Server 2012 VM 实例创建的快照在 Google Compute Engine-GCE 上创建一个新的 VM 实例。每当我创建一个新的 VM 时,我永远无法执行 RDP,然后在阅读 GCE 故障排除指南后,我确定可能是 Windows 没有正确启动。我能够查看串行端口输出如下
SeaBIOS (version 1.8.2-20161003_105447-google)
Total RAM Size = 0x00000003c0000000 = 15360 MiB
CPUs found: 4 Max CPUs supported: 4
found virtio-scsi at 0:3
virtio-scsi vendor='Google' product='PersistentDisk' rev='1' type=0 removable=0
virtio-scsi blksize=512 sectors=314572800 = 153600 MiB
drive 0x000f3120: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=314572800
Booting from Hard Disk 0...
Run Code Online (Sandbox Code Playgroud)
它卡在从硬盘 0 启动...
我进一步深入研究并阅读串行端口 2 日志如下
Windows Boot Manager
Windows failed to start. A recent hardware or software change might be the cause. To fix the problem:
Insert your Windows installation disc and restart your computer.
Choose your language settings, and then click "Next."
Click "Repair your computer.
If you do not have this disc, contact your system administrator or computer manufacturer for assistance.
Status:
A required device isn't connected or can't be accessed.
Run Code Online (Sandbox Code Playgroud)
我将磁盘附加到另一台机器上,我可以看到磁盘上的所有文件。但是不能修改任何东西,因为磁盘是写保护的。
我从中创建快照的原始 VM 仍然存在,因此我尝试将快照作为启动磁盘附加到原始 VM 实例以具有相同的硬件配置,但我无法分离与该实例关联的磁盘,并且它给了我以下错误。
Hot-remove of the root disk is not supported.
Run Code Online (Sandbox Code Playgroud)
我尝试使用与拍摄快照之前相同的机器类型创建 VM。但也失败了。
关于如何从快照创建新的 VM 实例并正确启动 Windows 的任何建议?
Sha*_*yar 10
在浏览了大量文章、论坛和用户指南后,我终于能够从 Snapshot 成功旋转 Windows VM 实例。
问题在于引导加载程序和引导配置数据 (BCD)。理想情况下,您使用操作系统磁盘的图像。在我的情况下,操作系统和数据在同一个磁盘中,我们只有一个快照。GCE 允许从快照创建新的 VM 实例,但在我的情况下,实例没有启动。
按照分步指南从快照中恢复您的操作系统/数据。
从快照创建磁盘并使用新的临时 VM 实例修复磁盘 BCD。
此实例是临时实例,您可以在恢复操作系统/数据后将其删除。
从 Google Cloud Console
选择Compute Engine > VM Instances并选择CREATE INSTANCE
确保选择与快照相同的操作系统。启动后,请确保您可以执行远程桌面并登录到新的 VM 实例。
记下实例名称和运行实例的区域。
从 Google Cloud Console
选择Compute Engine > Disks并选择CREATE DISK
确保您选择与拍摄快照时/之前相同的磁盘大小/磁盘类型,否则 Windows 可能会引发启动错误。还要确保磁盘与您的恢复实例位于同一区域。如果您的磁盘与您的实例不在同一个地区,那么您将无法附加它。
在此步骤中,您将您(在步骤 2 中创建)的磁盘附加到 VM 实例(在步骤 1 中创建)
打开 Google Cloud Shell 并输入以下命令
gcloud compute instances attach-disk [INSTANCE-NAME] --disk [DISK-NAME] --zone [ZONE]
Run Code Online (Sandbox Code Playgroud)
将变量替换为您运行实例的实例名称、磁盘名称和区域。
转到开始 > 搜索并键入diskmgmt.msc以打开磁盘管理工具。如果您刚刚附加的磁盘显示为Offline,请右键单击它并选择Online。
确保磁盘处于联机状态后,确认磁盘上的每个卷都分配了驱动器号。分配的特定驱动器号并不重要。如果任何卷没有分配驱动器号,请右键单击该卷并选择“更改驱动器号和路径”,然后选择“添加”。选择分配以下驱动器号,让它选择下一个可用的驱动器号,然后单击确定。同样,使用的实际驱动器号并不重要。
记下驱动器号。对我来说它的 D: 驱动器。
尝试在连接的驱动器中创建一个新文件夹。如果您的磁盘被写保护并且您无法在驱动器中创建任何文件或文件夹,那么您需要关闭写保护,否则您可以跳过此步骤。
打开 Elevated Command Prompt(以管理员身份运行)并输入
diskpart
Run Code Online (Sandbox Code Playgroud)
你会得到 DISKPART> 提示
类型:
list volume
Run Code Online (Sandbox Code Playgroud)
系统将显示所有带编号的卷。接下来,您需要通过键入以下内容来选择音量:
select volume #
Run Code Online (Sandbox Code Playgroud)
其中 # 是卷号。对我来说是1。
然后键入以下命令删除写保护
attr disk clear readonly
attr volume clear readonly
attr volume clear hidden
attr volume clear shadowcopy
Run Code Online (Sandbox Code Playgroud)
通过键入exit或关闭命令提示符窗口退出 diskpart 。在 Windows 资源管理器中打开驱动器。您应该能够看到所有数据和 Windows 系统文件。在驱动器中创建一个新文件夹以确保磁盘没有写保护。
如果您熟悉 Windows bcedit 命令,那么一定要使用 bcedit,但我使用EasyBCD来修复启动配置数据。
从https://neosmart.net/EasyBCD下载并在您的恢复 VM 实例上安装 EasyBCD
安装后打开 EasyBCD 并单击
文件 > 选择 BCD 存储
在文件名下的文件选择对话框中输入D:\Boot\BCD或您在步骤 5 中分配的任何驱动器号。系统将显示驱动器的引导配置数据。
单击Edit Boot Menu 按钮并选择Skip the boot menu并单击Save settings。
单击高级设置按钮,然后在基本选项卡下单击驱动器:菜单并选择磁盘的驱动器号。
请注意:驱动器号应与步骤 5 相同
单击BCD 备份/修复按钮,然后在BCD 管理选项下选择重新创建/修复引导文件,然后单击执行操作按钮。
通过再次打开磁盘管理使磁盘脱机,然后右键单击该磁盘并选择Offline。
现在最小化您的 RDP 窗口并在 Google Cloud Shell 中键入以下命令以将磁盘与恢复实例分离
gcloud compute instances detach-disk [INSTANCE-NAME] --disk [DISK-NAME] --zone [ZONE]
Run Code Online (Sandbox Code Playgroud)
现在您已经修复了从快照创建的磁盘的引导配置数据。
我们现在准备旋转 VM 实例并使用此磁盘启动它。让我们从磁盘创建实例
从 Google Cloud Console 中选择Compute Engine > VM Instances 并选择CREATE INSTANCE
为避免首次运行时出现任何问题,请确保选择与创建快照时/创建快照之前相同的机器类型。
在这一点上,您应该能够拥有正常工作的 VM 实例,并且您应该能够进行 RDP 登录。
如果您仍然遇到任何问题,请单击 Google Cloud Console 中的 VM 实例查看您的串行端口日志,然后向下滚动到页面底部,或者您可以在 Google Cloud Shell 中键入以下命令。
gcloud compute instances get-serial-port-output [INSTANCE-NAME] --zone [ZONE]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |