Next Previous Contents

4. 转换与磁盘管理程序

没有人对磁盘的'真实' geometry 有兴趣 磁轨的磁区数通常是变动的 - 接近磁盘外围的磁轨有比较多的磁区 - 所以没有'真实'的每磁轨磁区数  对于使用者而言最好是把磁盘当作编号 0,1,..., 的磁区组合成的线性阵列, 让控制器去找出磁区究竟位于磁盘的那里 

此线性编号一般通称为 LBA 对于 geometry 为 (C,H,S) 的磁盘而言属(c,h,s) 的线性位址为 c*H*S+h*S+(s-1) 所有 SCSI 控制器都使用 LBA, 某些 IDE 控制器也是 

如果 BIOS 把这 24 个位元(c,h,s) 转换成 LBA 并喂给懂得 LBA 的控制器, 那么又可以定址到 7.875 GB  并不足以应付所有的磁盘, 但仍然是个改进 注意此处 BIOS 使用的 CHS, 它不再与'实体'有任何关系 

当控制器不懂何为 LBA 但是 BIOS 知道如何转换时有些类似的方法可行 (在 BIOS 设定中通常称为 'Large' )现在 BIOS 将呈现 geometry 为(C',H',S')给作业系统, 而在与磁盘控制器沟通时则使用(C,H,S)  通常 S=S', C'=C/N 而 H'=H*N, 其中 N 是确保 C'<=1024 之 2 的最小次方(所以 C'=C/N 时舍去的数浪费少许容量) 再一次, 这允许存取最多达 7.875 GB 

如果 BIOS 不知道 'Large' 或是 'LBA', 那么还是有软件的解决方案 像是 OnTracker 或 EZ-Drive 这些个磁盘管理程序会以它们自己的函式(routines)替换掉 BIOS 的  通常这是藉由将磁盘管理程序放在 MBR 及其后几个磁区(OnTrack 称这些程序码为 DDO: Dynamic Drive Overlay )来达成的, 所以它会在任何其它作业系统之前被启动  这也就是为什么在安装磁盘管理程序后从软盘启动可能会出问题 

这影响可能多于或少于 BIOS 转换 - 但特别是在相同的磁盘上跑数种不同的作业系统时, 磁盘管理程序可能引起许多问题 

Linux 从 1.3.14 版开始支持 OnTrack 磁盘管理程序, 从 1.3.29 开始 支持 EZ-Drive  下面有些更进一步的信息 


Next Previous Contents