什么是Linux SCSI命令超时,是否适用于软件raid?

我对SCSI超时的理解是任何读,写,刷新和其他命令都只有有限的时间来完成.如果超出,则中止命令并向上层报告错误.在等待命令完成时,任何取决于I / O的应用程序都将停止.

我的下一层是mdraid,Linux软件RAID.从我读到的内容来看,mdraid本身没有超时但依赖于较低层的超时命令.

对于内核3.2(Debian),认的SCSI超时值为90秒.

遇到读取错误的硬盘将尽力在固件定义的时间范围内纠正错误.桌面驱动器的超时设置(通常是独立的,因此更正具有高优先级)和服务器驱动器(通常为RAID,因此很快报告坏扇区,让其他驱动器应答)的设置为低.有时它可以通过smartctl(SCTERC,TLER等)进行调整.

所以我想如果硬盘设置为高ERC超时,内核将在中止请求之前认等待90秒.只有这样,mdraid才会将应用程序的请求重定向到另一个磁盘.

加载网页的时间为90秒.

假设认SCSI超时用于桌面目的或非硬盘SCSI设备(磁带驱动器,磁带库可以想到),并且可以安全地调低,例如7秒用于RAID使用,这是正确的吗?

解决方法

适用性取决于您的需求.对你而言,听起来像90秒不太合适.

我在过去看到供应商文档建议将超过60秒的fibre-channel HBA超时设置为更好地处理阵列故障转移,控制器的固件更新等事情.正如你所指出的那样,缺点是:它可能导致很长的滞后以返回存储.

实际上这不是一件坏事.如果LUN上的HBA超时,许多操作系统将强制卸载LUN,这可能比偶尔的长滞后返回块更具破坏性.诀窍是平衡以下几点:

>您的存储堆栈产生长滞后的可能性
>您对后期数据的容忍度
>您对已卸载LUN的容忍度

通常,放入RAID阵列的磁盘应具有较低的超时值,因为它让RAID控制器知道在其他地方处理块请求.这是消费级驱动器与硬件RAID卡一起使用时的一个重要原因;他们的超时很长,这可能导致你不想要的问题.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...