无盘系统中,客户机读取服务器上的文件是以怎么的原理实现的?会导致硬盘卡IO吗?
在之前,我曾经认为绿化大师的缓存系统不够成熟,在没有游戏更新 没有游戏同步的情况下,服务器上的硬盘IO一直占用率很高,当时我通过磁盘管理器观察发现,游戏盘的文件持续一直被读取,所以造成了卡IO的问题,在那时候我以为是缓存系统没有生效(实际缓存系统一切正常,没有问题)引起的卡机问题,后来经过和绿化大师研发组的人了解和探讨,证明了我的这个看法是错的(虽然之前和绿化闹过,但技术问题终归技术,我的错误,当时的绿化大师确实有BUG)。
那么我们来说一下,绿化大师研发部给予的 客户机 读取 服务器上文件的过程,其实这个无论是哪个无盘都是这样的:
1.客户机出盘以后,映射的是服务器的整个硬盘,映射是通过Windows API也就是数据接口实现的,(我也不太懂这个技术,但是我知道有这个接口,比如各种编程都用这些不同的接口),服务器上的硬盘以 整个扇区的方式映射到客户机,所以客户机 要读取文件的时候 会通过API接口 告诉服务器,我要读取哪个扇区,所以从服务器上的任务管理器中,无法看到客户机具体读取的那些文件。
如上图所示,假设蓝色的扇区中存放的是LOL,那么客户机告诉服务器,我要读取这个扇区的文件,但是我并不知道这个扇区里存放了什么文件,服务器会调用这个扇区的文件给客户机读取,所以最终也是看不到客户机读取的具体文件的,再加上有缓存系统,很大一部分进了内存缓存,更是看不到了。
由于当时没能理解了这个问题,我也没有和绿化研发组联系,所以导致了误会,所以现在我重新来示例,大家理解一下原理即可。
我这里的游戏盘是E盘,如图
所以按理来说,就应该在这里看不到E盘的文件读取或写入,除非服务器有更新或者同步到别的服务器的时候,这里才会显示,图中的 CD是服务器系统和镜像 FG是回写盘。
下面我们做个实验,实际效果是一样的,我来 强制修复一下 这个 QQ游戏 这样按理说就能看到 E盘 QQ游戏的文件读取:
看,如图,这样就能看到QQ游戏的占用了
所以呢:无论任何无盘,客户机读取的文件,服务器在任务管理器上都应该是看不到具体文件的,如果你能看到具体文件,说明是服务器自身在读取或写入这些文件。
最终引发这个误会的是我把绿化大师设置在了施工模式引发了一个BUG(此BUG已经修复),才导致了卡IO,最后经过和研发组的讨论,最终我也提升了一点技术理解和消除了误会。