隔离损坏的本地盘后,ECS实例不会变更所宿物理机。本文仅适用于发生了本地盘实例系统事件的ECS实例,介绍如何在控制台和使用CLI隔离损坏的本地盘。
背景信息
隔离损坏的本地盘仅支持大数据型实例,隔离损坏的本地盘系统事件包括以下事件:
本地磁盘出现损坏告警(
Disk:ErrorDetected
)因系统维护隔离坏盘(
SystemMaintenance.IsolateErrorDisk
)因系统维护重启实例并隔离坏盘(
SystemMaintenance.RebootAndIsolateErrorDisk
)因系统维护重新初始化坏盘(
SystemMaintenance.ReInitErrorDisk
)因系统维护重启实例并重新初始化坏盘(
SystemMaintenance.RebootAndReInitErrorDisk
)
更多本地盘事件信息,请参见本地盘实例运维场景和系统事件。
操作步骤
通过控制台隔离损坏的本地盘
登录ECS管理控制台。
在左侧导航栏,单击事件。
在事件页面左侧导航栏,单击本地盘实例事件。
在本地盘实例事件页面,单击本地盘受损事件页签。
找到目标实例,在操作列单击修复磁盘。
在修改配置阶段,修改ECS实例的配置文件,完成后单击下一步。
部分Linux实例如果出现修改配置阶段,请根据页面提示完成以下操作。本章节坏盘的设备名以/dev/vdd为例。
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
(可选)对本地盘设置应用层读写隔离。
在/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实例的启动流程。
取消挂载本地盘。
umount /dev/vdd
重要如果不进行取消挂载操作,在坏盘维修完成并恢复隔离后,该本地盘的对应设备名会发生变化,可能导致应用读写错误的磁盘。
在隔离坏盘阶段,单击隔离。
如果几分钟后没有进入下一阶段,请尝试刷新页面。
(可选)在重启阶段,单击重启。
如果您的引导页面出现重启阶段,则需要进行重启。
说明 重启实例后,为方便后续操作,被隔离的受损本地盘暂时变为1 MiB的Dummy硬盘。您需要在应用层持续隔离受损本地盘的读写操作和/etc/fstab文件中的nofail设置。重启完成后,在新盘插入中阶段,单击确定。
确认后请等待阿里云在所宿物理机上更换损坏的本地盘,维护操作通常在五个工作日内完成,之后您会收到恢复磁盘的事件通知。
收到恢复磁盘的事件通知后,在恢复磁盘阶段,单击恢复磁盘。
如果几分钟后没有进入下一阶段,请尝试刷新页面。
(可选)在重启阶段,单击重启。
如果您的引导页面出现重启阶段,则需要进行重启。
重启完成后,在完成阶段,单击完成。
使用CLI隔离损坏的本地盘
请确保您已经为ECS实例安装了阿里云CLI,在不同操作系统中安装CLI的方式请参见:
调用DescribeInstanceHistoryEvents查询指定地域下Inquiring状态的系统事件,并记录返回的EventId、DiskId和Device取值。
在阿里云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" }
登录ECS实例,做隔离前的准备。
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
(可选)对本地盘设置应用层读写隔离。
如果是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实例的启动流程。
取消挂载本地盘。
umount /dev/vdd
重要如果不进行取消挂载操作,在坏盘维修完成并恢复隔离后,该本地盘的对应设备名会发生变化,可能导致应用读写错误的磁盘。
调用AcceptInquiredSystemEvent响应系统事件。
在阿里云CLI中执行以下命令。
aliyun ecs AcceptInquiredSystemEvent --RegionId <TheRegionId> --EventId <TheEventId>
决定是否重启实例。
事件代码为
SystemMaintenance.IsolateErrorDisk
时:只返回了RequestId,则无需重启实例。
返回了
code=SwitchToOffline.OnlineIsolateFail
,则需要重启实例。
事件代码为
SystemMaintenance.RebootAndIsolateErrorDisk
时:调用AcceptInquiredSystemEvent后,您需要重启实例。
如果需要重启,在阿里云CLI中执行以下命令。
aliyun ecs RebootInstance --InstanceId <TheInstanceId>
说明重启实例后,为方便后续操作,被隔离的受损本地盘暂时变为1 MiB的Dummy硬盘。您需要在应用层持续隔离受损本地盘的读写操作和/etc/fstab文件中的nofail设置。
等待阿里云在所宿物理机上完成更换损坏的本地盘并发布
SystemMaintenance.ReInitErrorDisk
或SystemMaintenance.RebootAndReInitErrorDisk
事件,通常在五个工作日内完成。再次调用AcceptInquiredSystemEvent响应系统事件,本地盘会进入重新初始化状态。
在阿里云CLI中执行以下命令。
aliyun ecs AcceptInquiredSystemEvent --RegionId <TheRegionId> --EventId <TheEventId>
决定是否重启实例。
事件代码为
SystemMaintenance.ReinitErrorDisk
时:只返回了RequestId,则无需重启实例。
返回了
code=SwitchToOffline.OnlineReInitFail
,则需要重启实例。
事件代码为
SystemMaintenance.RebootAndReinitErrorDisk
时:调用AcceptInquiredSystemEvent后,您需要重启实例。
如果需要重启,在阿里云CLI中执行以下命令。aliyun ecs RebootInstance --InstanceId <TheInstanceId>
执行结果
坏盘更换完成后,本地盘受损事件将在几分钟后消失。
后续步骤
隔离坏盘后,请您检查ECS实例和本地盘状态。此时被更换的本地盘容量恢复为原始容量,您可以格式化数据盘。具体操作,请参见初始化小于等于2 TiB数据盘(Windows)或初始化小于等于2 TiB数据盘(Linux)。