Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6098124
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: LINUX

2014-08-12 09:57:51

原文地址:硬盘黑匣子实现问题 作者:humjb_1983

有做个“硬盘黑匣子”的想法,即在磁盘中划分一块区域出来做黑匣子用。
我们知道,当系统出现严重问题时,系统日志经常已不能正常工作,因为依赖太多,比如调度和冗长的IO流程。
因此向利用现有的硬盘做黑匣子,记录内核关键的异常信息,信息量小,循环写入,不考虑删除、不考虑碎片、不考虑性能、不考
虑复杂的管理算法。

目前想到的方法有二:
1、利用BIOS INT13接口。
我们知道内核boot时,MBR和boot相关的数据通常是通过BIOS INT13接口读取的,通过该接口可以实现硬盘指定扇区范围的读写,看似
可以满足我的需求,但其实不然,因为BIOS接口只能在实模式下使用,保护模式下无法直接使用,因为实模式下中断的处理方式和地址
宽度跟保护模式都不同,如果要在保护模式中调用BIOS中断接口,只能:
  a、定制idt表,并弄清楚实模式下BIOS中断接口的处理方式,估计难度非常大。
  b、通过vm86()接口进入VM86模式,可以调用BIOS中断接口,但问题是vm86只在32位环境中支持,64位不支持。
综上,这个方法的可行性很小。

2、定制简化的硬件驱动,直接操作硬件。
这种方法,需要深入理解硬件。通常硬盘底层驱动都是厂商自己维护的,算是硬件的核心技术之一了,改写驱动的难度也不小,而且面临
如下问题:
1、硬件种类众多,难以做到兼容。
2、定制驱动和原驱动的竞争和互斥问题。比如中断和DMA的竞争
3、对系统IO性能影响问题。我们知道磁盘IO的时间大部分花在寻道上,而块设备层的各种合并和优化算法,其实就是为了减少寻道时间,
而如果系统正常IO期间,穿插了定制驱动的直接IO操作的话,应该会对系统的IO产生影响。

欢迎大家多提宝贵意见和建议!!
阅读(603) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~