现有一系统,每秒需要写入4000个左右文件,每个文件20K左右,都是一次性写入。实际测试每秒写500个就不错了,但是若把数据都写到一个文件,就可以。    初步设想写一文件文件过滤驱动,把外部应用写多个文件都重定向到写入一个文件,过滤驱动管理外部应用对每个文件的读写访问,这样也不需要改别的系统。
    
    写文件驱动很麻烦,求高手指点更好的方案!

解决方案 »

  1.   

    4000*20K = 80M/s
    这个要求很高,方案1:
    1. 只能用阵列卡(SAS),或SSD
    2. 每20K一个文件,磁盘寻道时间太多.完全做不到.
    3. 20K的文件用队列方式在内存缓存,把文件用数据结构拼接.以M级以上的块还写磁盘文件.方案2:
    文件服务器集群,把写压力分开.
      

  2.   

    每秒创建4000个文件,这种设计方案本身就是不可取的,应该把所有数据都写入同一个文件,或者每2GB数据一个文件,如果需要提取某个“文件”的数据,可以用程序将文件中对应的数据读出来。
    如果一定要按这个方案来做,可以考虑通过API Hook把数据集中存储到大文件中。
      

  3.   

    每秒创建4000个文件,这种设计方案本身就是不可取的,应该把所有数据都写入同一个文件,或者每2GB数据一个文件,如果需要提取某个“文件”的数据,可以用程序将文件中对应的数据读出来。
    如果一定要按这个方案来做,可以考虑通过API Hook把数据集中存储到大文件中。
      

  4.   

    只创建两个文件,所有要写的数据都放在文件一中,把每次写数据的长度存在文件二中。这两个文件不就可以完成LZ所需的映射关系了。如果还是不行,楼下提新方法(更换高性能计算机除外),
    O(∩_∩)O