本文介绍了如何调用ECS API隔离损坏的本地盘。隔离损坏的本地盘后,ECS实例不会变更所宿物理机。

前提条件

本文步骤仅适用于发生了本地盘实例系统事件的ECS实例。

背景信息

根据事件阶段的变化,隔离坏盘选项对应的实例系统事件代码为SystemMaintenance.RebootAndIsolateErrorDiskSystemMaintenance.RebootAndReInitErrorDisk。更多详情,请参见本地盘实例系统事件概述
注意 隔离损坏的本地盘后,会重新初始化数据盘,被隔离的本地盘上的数据会被清空。

操作步骤

  1. 调用DescribeInstanceHistoryEvents查询指定地域下Inquiring状态的系统事件,并记录返回的EventIdDiskIdDevice取值。API详情请参见DescribeInstanceHistoryEvents
    aliyun ecs DescribeInstanceHistoryEvents --RegionId <TheRegionId> --InstanceEventCycleStatus.1 Inquiring
    以下为JSON格式的返回示例。
    {
      "InstanceSystemEventSet": {
        "InstanceSystemEventType": [
          {
            "InstanceId": "i-2ze3tphuqvc93ci****3",
            "EventId": "e-2ze9y****wtqcvai68rl",
            "EventType": {
              "Code": 3,
              "Name": "SystemMaintenance.RebootAndIsolateErrorDisk"
            },
            "EventCycleStatus": {
              "Code": 28,
              "Name": "Inquiring"
            },
            "EventPublishTime": "2017-11-30T06:32:31Z",
            "ExtendedAttribute" : {
              "DiskId": "d-disk1",
              "Device": "/dev/xvda"
            }
          }
        ]
      },
      "PageSize": 10,
      "PageNumber": 1,
      "TotalCount": 1,
      "RequestId": "02EA76D3-5A2A-44EB-****-8901881D8707"
    }
  2. 远程连接ECS实例。连接方式请参见连接方式导航
  3. 可选:对本地盘设置应用层读写隔离。
  4. 仅适用于Linux实例:在ECS实例/etc/fstab配置文件中为对应本地盘加入nofail参数。
    例如,为本地盘/dev/vdd加入nofail参数:
    /dev/vdd /mnt/vdd ext4 defaults,barrier=0,nofail 0 0
    说明
    • /dev/vdd:本地盘设备名,您需要按实际情况填写。
    • /mnt/vdd:本地盘挂载点,您需要按实际情况填写。
    • ext4:实例文件系统类型,您需要按实际情况填写。
    • barrier=0:挂载选项,在文件系统中禁用barrier。
    • nofail:本地盘出现在文件系统中但实际缺失时,不会中断ECS实例的启动流程。
  5. 调用AcceptInquiredSystemEvent响应SystemMaintenance.RebootAndIsolateErrorDisk系统事件。API详情请参见AcceptInquiredSystemEvent
    aliyun ecs AcceptInquiredSystemEvent --RegionId <TheRegionId> --EventId <TheEventId>
  6. 调用RebootInstance重启ECS实例。API详情请参见RebootInstance
    aliyun ecs RebootInstance --InstanceId <TheInstanceId>
    说明 重启实例后,请您检查实例和本地盘状态。以便后续操作,被隔离的受损本地盘暂时变为1MiB的Dummy硬盘。您需要在应用层持续隔离受损本地盘的读写操作和/etc/fstab文件中的nofail设置。
  7. 等待阿里云在所宿物理机上完成更换损坏的本地盘并发布SystemMaintenance.RebootAndReInitErrorDisk事件,时长为一到五天不等。
  8. 再次调用AcceptInquiredSystemEvent响应SystemMaintenance.RebootAndReInitErrorDisk系统事件,本地盘会进入重新初始化状态。
    aliyun ecs AcceptInquiredSystemEvent --RegionId <TheRegionId> --EventId <TheEventId>
  9. 再次调用RebootInstance重启ECS实例。
    aliyun ecs RebootInstance --InstanceId <TheInstanceId>

后续步骤

重启实例后,请您检查实例和本地盘状态。此时被更换的本地盘容量恢复为原始容量,您可以重新格式化数据盘。详细步骤请参见Windows格式化数据盘Linux格式化数据盘