- 主题:视频流的块存储技术
为什么会碎片化呢?一般来说,除非有很多小文件才会碎片化。
每分钟多少数据量?
一个基本的办法是累积到一定的数据量再写出到磁盘,但操作系统一般都有缓存,可以保证这一点
【 在 bigsen 的大作中提到: 】
: 问题:系统收到视频流后将H.264视频存储到NAT磁盘阵列中,随着时间的增长,磁盘的碎片化比较严重,从而会导致执行存储时很慢,而视频流的接受相对较快,因此缓冲区在不断增长而导致内存耗尽。当更换磁盘或格式化后,此问题解决。请教下,针对这个问题有什么解决方案? 另外,关于视频流的块存储,目前的主流技术是什么?
: 突然回想起来,好像有种方案是这样的解决的,就是在系统启动后,就先在磁盘上创建固定大小的文件,比如先创建500个,每个文件500M,从而在存真正的视频流时就提前申请好了磁盘空间,收到视频流后,可以直接打开某个文件覆盖存储。这样是不是就避免了写磁盘时因大量碎片而导致的随机访问,提高了写入效率?以前还怀疑为什么这么干,现在想想应该就是优化存储效率的目的吧? 这个提前创建的有大小无内容的文件怎么创建?
--
FROM 221.218.211.*
80个文件128G,不算小文件吧,一般不会导致碎片
【 在 bigsen 的大作中提到: 】
: 碎片化多是因为伴随录像文件会生成一个索引文件,这是个小文件,随着录像文件一同创建或删除。
: 将近20分钟会生成七八十个文件,总大小128个G吧。
--
FROM 221.218.211.*
不会
预分配很简单,不需要使用特定的API,直接fwrite写0,写到指定长度后fclose就OK
【 在 bigsen 的大作中提到: 】
: 我也是这个思路,不但减少了碎片化,而且文件创建时分配磁盘空间后,循环覆盖写入的过程中不再申请磁盘空间,此时的存储时耗就只是数据写入磁盘IO的耗时了,没有了磁盘分配空间的时耗。
: 但还有一点不确定的是:一次新的覆盖写入是从文件起始位置write,在这个过程中系统会不会自动把文件大小清零或者随着文件的修改而变化?如果这样的话,岂不是又相当于在写入过程中重新分配磁盘空间么。
: 对于windows系统,预分配文件的创建以及写入接口是哪个呀?
: ...................
--
FROM 123.112.19.*