隔离损坏的本地盘

隔离损坏的本地盘后,ECS实例不会变更所宿物理机。本文仅适用于发生了本地盘实例系统事件的ECS实例,介绍如何在控制台和使用CLI隔离损坏的本地盘。

背景信息

隔离损坏的本地盘仅支持大数据型实例,隔离损坏的本地盘系统事件包括以下事件:

  • 本地磁盘出现损坏告警Disk:ErrorDetected

  • 因系统维护隔离坏盘SystemMaintenance.IsolateErrorDisk

  • 因系统维护重启实例并隔离坏盘SystemMaintenance.RebootAndIsolateErrorDisk

  • 因系统维护重新初始化坏盘SystemMaintenance.ReInitErrorDisk

  • 因系统维护重启实例并重新初始化坏盘SystemMaintenance.RebootAndReInitErrorDisk

更多本地盘事件信息,请参见本地盘实例运维场景和系统事件

操作步骤

通过控制台隔离损坏的本地盘

  1. 登录ECS管理控制台

  2. 在左侧导航栏,单击事件

  3. 事件页面左侧导航栏,单击本地盘实例事件

  4. 本地盘实例事件页面,单击本地盘受损事件页签。

  5. 找到目标实例,在操作列单击修复磁盘

  6. 修改配置阶段,修改ECS实例的配置文件,完成后单击下一步

    修改配置

    部分Linux实例如果出现修改配置阶段,请根据页面提示完成以下操作。本章节坏盘的设备名以/dev/vdd为例。

    1. 远程连接ECS实例。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. (可选)对本地盘设置应用层读写隔离。

    3. 在/etc/fstab配置文件中为对应本地盘加入nofail参数。

      /dev/vdd /mnt/vdd ext4 defaults,barrier=0,nofail 0 0

      参数设置

      说明

      /dev/vdd

      本地盘设备名,DescribeInstanceHistoryEvents返回的Device取值。

      /mnt/vdd

      本地盘挂载点,可通过mount | grep "/dev/vdd"命令查询。

      ext4

      文件系统类型,可通过blkid /dev/vdd命令查询。

      barrier=0

      挂载选项,在文件系统中禁用barrier。

      nofail

      本地盘出现在文件系统中但实际缺失时,不会中断ECS实例的启动流程。

    4. 取消挂载本地盘。

      umount /dev/vdd
      重要

      如果不进行取消挂载操作,在坏盘维修完成并恢复隔离后,该本地盘的对应设备名会发生变化,可能导致应用读写错误的磁盘。

  7. 隔离坏盘阶段,单击隔离

    如果几分钟后没有进入下一阶段,请尝试刷新页面。

  8. (可选)重启阶段,单击重启

    如果您的引导页面出现重启阶段,则需要进行重启。

    说明 重启实例后,为方便后续操作,被隔离的受损本地盘暂时变为1 MiB的Dummy硬盘。您需要在应用层持续隔离受损本地盘的读写操作和/etc/fstab文件中的nofail设置。
  9. 重启完成后,在新盘插入中阶段,单击确定

    确认后请等待阿里云在所宿物理机上更换损坏的本地盘,维护操作通常在五个工作日内完成,之后您会收到恢复磁盘的事件通知。

  10. 收到恢复磁盘的事件通知后,在恢复磁盘阶段,单击恢复磁盘

    如果几分钟后没有进入下一阶段,请尝试刷新页面。

  11. (可选)重启阶段,单击重启

    如果您的引导页面出现重启阶段,则需要进行重启。

  12. 重启完成后,在完成阶段,单击完成

使用CLI隔离损坏的本地盘

请确保您已经为ECS实例安装了阿里云CLI,在不同操作系统中安装CLI的方式请参见:

  1. 调用DescribeInstanceHistoryEvents查询指定地域下Inquiring状态的系统事件,并记录返回的EventIdDiskIdDevice取值。

    在阿里云CLI中执行以下命令。

    aliyun ecs DescribeInstanceHistoryEvents \
    --RegionId <TheRegionId> \
    --InstanceEventCycleStatus.1 Inquiring

    以下为JSON格式的返回示例。

    {
      "InstanceSystemEventSet": {
        "InstanceSystemEventType": [
          {
            "InstanceId": "i-2ze3tphuqvc93ci****3",
            "EventId": "e-2ze9y****wtqcvai68rl",
            "EventType": {
              "Code": 3,
              "Name": "SystemMaintenance.IsolateErrorDisk"
            },
            "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实例,做隔离前的准备。

    1. 远程连接ECS实例。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. (可选)对本地盘设置应用层读写隔离。

    3. 如果是Linux系统ECS实例,在/etc/fstab配置文件中为对应本地盘加入nofail参数。

      /dev/vdd /mnt/vdd ext4 defaults,barrier=0,nofail 0 0

      参数设置

      说明

      /dev/vdd

      本地盘设备名,DescribeInstanceHistoryEvents返回的Device取值。

      /mnt/vdd

      本地盘挂载点,可通过mount | grep "/dev/vdd"命令查询。

      ext4

      文件系统类型,可通过blkid /dev/vdd命令查询。

      barrier=0

      挂载选项,在文件系统中禁用barrier。

      nofail

      本地盘出现在文件系统中但实际缺失时,不会中断ECS实例的启动流程。

    4. 取消挂载本地盘。

      umount /dev/vdd
      重要

      如果不进行取消挂载操作,在坏盘维修完成并恢复隔离后,该本地盘的对应设备名会发生变化,可能导致应用读写错误的磁盘。

  3. 调用AcceptInquiredSystemEvent响应系统事件。

    在阿里云CLI中执行以下命令。

    aliyun ecs AcceptInquiredSystemEvent --RegionId <TheRegionId> --EventId <TheEventId>
  4. 决定是否重启实例。

    • 事件代码为SystemMaintenance.IsolateErrorDisk时:

      • 只返回了RequestId,则无需重启实例。

      • 返回了code=SwitchToOffline.OnlineIsolateFail,则需要重启实例。

    • 事件代码为SystemMaintenance.RebootAndIsolateErrorDisk时:调用AcceptInquiredSystemEvent后,您需要重启实例。

    如果需要重启,在阿里云CLI中执行以下命令。

    aliyun ecs RebootInstance --InstanceId <TheInstanceId>
    说明

    重启实例后,为方便后续操作,被隔离的受损本地盘暂时变为1 MiB的Dummy硬盘。您需要在应用层持续隔离受损本地盘的读写操作和/etc/fstab文件中的nofail设置。

  5. 等待阿里云在所宿物理机上完成更换损坏的本地盘并发布SystemMaintenance.ReInitErrorDiskSystemMaintenance.RebootAndReInitErrorDisk事件,通常在五个工作日内完成。

  6. 再次调用AcceptInquiredSystemEvent响应系统事件,本地盘会进入重新初始化状态。

    在阿里云CLI中执行以下命令。

    aliyun ecs AcceptInquiredSystemEvent --RegionId <TheRegionId> --EventId <TheEventId>
  7. 决定是否重启实例。

    • 事件代码为SystemMaintenance.ReinitErrorDisk时:

      • 只返回了RequestId,则无需重启实例。

      • 返回了code=SwitchToOffline.OnlineReInitFail,则需要重启实例。

    • 事件代码为SystemMaintenance.RebootAndReinitErrorDisk时:调用AcceptInquiredSystemEvent后,您需要重启实例。

    如果需要重启,在阿里云CLI中执行以下命令。
    aliyun ecs RebootInstance --InstanceId <TheInstanceId>

执行结果

坏盘更换完成后,本地盘受损事件将在几分钟后消失。

后续步骤

隔离坏盘后,请您检查ECS实例和本地盘状态。此时被更换的本地盘容量恢复为原始容量,您可以格式化数据盘。具体操作,请参见初始化小于等于2 TiB数据盘(Windows)初始化小于等于2 TiB数据盘(Linux)