AWS Server Migration Service
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在命令行上使用 AWS SMS 复制 VM

您可以使用 AWS Command Line Interface (AWS CLI) 来清点您的本地服务器并将其迁移到 Amazon EC2。

如果您已启用 AWS SMS 与 AWS Migration Hub 之间的集成,则 SMS 服务器目录也将在 Migration Hub 上可见。有关更多信息,请参阅 从 Migration Hub 导入应用程序

在复制过程中,AWS SMS 会代表您在区域中创建一个启用了服务器端加密的 Amazon S3 存储桶和一个存储桶策略,该策略用于在 7 天后删除存储桶中的所有项目。AWS SMS 将服务器卷从您的环境复制到此存储桶,然后从这些卷创建 EBS 快照。如果您不删除此存储桶,则 AWS SMS 会将它用于此区域中的所有复制作业。

先决条件

使用 CLI 复制服务器

  1. 使用 get-connectors 命令获取注册给您的连接器的列表。

    aws sms get-connectors
  2. 通过控制台安装并注册连接器后,使用 import-server-catalog 命令创建服务器清单。这个过程最多需要一分钟。

    aws sms import-server-catalog
  3. 使用 get-servers 命令显示可用于导入到 Amazon EC2 的服务器的列表。

    aws sms get-servers

    该输出值应该类似于以下内容:

    { "serverList": [ { "serverId": "s-12345678", "serverType": "VIRTUAL_MACHINE", "vmServer": { "vmManagerName": "vcenter.yourcompany.com", "vmServerAddress": { "vmManagerId": "your-vcenter-instance-uuid", "vmId": "vm-123" }, "vmName": "your-linux-vm", "vmPath": "/Datacenters/DC1/vm/VM Folder Path/your-linux-vm", "vmManagerType": "vSphere" } }, { "replicationJobTerminated": false, "serverId": "s-23456789", "serverType": "VIRTUAL_MACHINE", "replicationJobId": "sms-job-12345678", "vmServer": { "vmManagerName": "vcenter.yourcompany.com", "vmServerAddress": { "vmManagerId": "your-vcenter-instance-uuid", "vmId": "vm-234" }, "vmName": "Your Windows VM", "vmPath": "/Datacenters/DC1/vm/VM Folder Path/Your Windows VM", "vmManagerType": "vSphere" } } ] }

    如果尚未导入服务器目录,您会看到类似以下内容的输出:

    { "lastModifiedOn": 1477006131.856, "serverCatalogStatus": "NOT IMPORTED", "serverList": [] }

    DELETED 或 EXPIRED 目录状态也表示该目录不包含任何服务器。

  4. 选择要复制的服务器,记下服务器 ID,并在 create-replication-job 命令中指定 ID。

    aws sms create-replication-job --server-id s-12345678 --frequency 12 --seed-replication-time 2016-10-24T15:30:00-07:00

    如果您创建了一个具有 AWSServiceRoleForSMS 之外的名称的服务相关角色,则必须将 --role-name 选项添加到上一命令,如下所示。

    --role-name MyRoleForSMS

    复制作业设置完成后,它会在使用 --seed-replication-time 参数指定的时间 (以 Unix 纪元的秒为单位,或按照 ISO 8601 规范指定) 自动开始复制。有关更多信息,请参阅为 AWS 命令行界面指定参数值。此后,复制以 --frequency 参数指定的间隔 (以小时为单位) 重复。

  5. 您可以使用 get-replication-jobs 命令查看所有正在运行的所有复制作业的详细信息。如果您未指定任何参数,该命令将列出所有复制作业。

    该命令会返回类似以下内容的输出:

    { "replicationJobList": [ { "vmServer": { "vmManagerName": "vcenter.yourcompany.com", "vmServerAddress": { "vmManagerId": "your-vcenter-instance-uuid", "vmId": "vm-1234" }, "vmName": "VM name in vCenter", "vmPath": "/Datacenters/DC1/vm/VM Folder Path/VM name in vCenter" }, "replicationRunList": [ { "scheduledStartTime": 1487007010.0, "state": "Deleted", "type": "Automatic", "statusMessage": "Uploading", "replicationRunId": "sms-run-12345678" } ], "replicationJobId": "sms-job-98765432", "state": "Deleted", "frequency": 12, "seedReplicationTime": 1477007049.0, "roleName": "sms" }, { "vmServer": { "vmManagerName": "vcenter.yourcompany.com", "vmServerAddress": { "vmManagerId": "your-vcenter-instance-uuid", "vmId": "vm-2345" }, "vmName": "win2k12", "vmPath": "/Datacenters/DC1/vm/VM Folder Path/win2k12" }, "replicationRunList": [ { "scheduledStartTime": 1477008789.0, "state": "Active", "type": "Automatic", "statusMessage": "Converting", "replicationRunId": "sms-run-12345679" } ], "replicationJobId": "sms-job-23456789", "state": "Active", "frequency": 24, "seedReplicationTime": 1477008789.0, "roleName": "sms" } ] }
  6. 您还可以使用 get-replication-runs 命令检索有关特定复制作业的所有复制运行的信息。要执行此操作,请指定复制作业 ID,如下所示:

    aws sms get-replication-runs --replication-job-id sms-job-12345678

    该命令返回指定复制作业的所有复制运行的列表以及该复制作业的详细信息,类似以下内容:

    { "replicationRunList": [ { "scheduledStartTime": 1477310423.0, "state": "Active", "type": "Automatic", "statusMessage": "Converting", "replicationRunId": "sms-run-23456789" }, { "amiId": "ami-abcdefab", "state": "Completed", "completedTime": 1477227683.652, "scheduledStartTime": 1477224023.0, "replicationRunId": "sms-run-34567890", "type": "Automatic", "statusMessage": "Completed" }, { "amiId": "ami-efababcd", "state": "Completed", "completedTime": 1477144823.486, "scheduledStartTime": 1477137623.0, "replicationRunId": "sms-run-45678903", "type": "Automatic", "statusMessage": "Completed" } ] }
  7. 要在创建复制作业后更改其任意参数,请使用 update-replication-job 命令,并提供复制作业 ID 和要更改的任何参数。

    aws sms update-replication-job --replication-job-id sms-job-12345678 --frequency 24 --next-replication-run-start-time 2016-10-24T15:30:00-07:00
  8. 除了计划的复制运行外,您还可以每 24 小时启动至多两次按需复制运行。要执行该操作,请使用 start-on-demand-replication-run 命令(它将立即启动复制运行)。如果另一个复制运行当前处于活动状态,则无法启动按需复制运行。

    aws sms start-on-demand-replication-run --replication-job-id sms-job-12345678

    如果预计计划的复制运行会在正在进行的按需复制运行期间启动,则计划的运行会被跳过并重新安排到下一个间隔。

  9. 复制完服务器后,可以使用 delete-replication-job 命令停止复制作业。这会停止复制作业并清除该服务创建的任何项目 (例如,作业的 S3 存储桶)。这不会删除由已停止的作业运行创建的任何 AMI。

    aws sms delete-replication-job --replication-job-id sms-job-12345678
  10. 当您不再需要维护服务器目录时,可以使用 delete-server-catalog 命令清除该服务维护的服务器目录。

    aws sms delete-server-catalog
  11. 如果不再需要使用连接器,可以使用 disassociate-connector 命令从 AWS SMS 取消注册连接器。请只在使用该连接器的所有复制都完成后才调用该命令。

    aws sms disassociate-connector --connector-id c-12345678901234567