完整的源码在下面这个链接哟
github源码
淘宝不用小文件存取数据的原因(一)
- 大规模的小文件存取,磁头需要频繁的寻道和换道,因此在读取上容易带来较长的延时。
下面我们就用一些数据来说明频繁换道和一些数据传输时间消耗的对比吧!!
如果对于“目录”,”Inode信息“还有“块”不了解的同学可以点击这个链接
寻道一次的时间就等于千兆网络发送1MB的数据,磁头寻址换道两次就等于从磁盘上读取1MB的数据,而且我们还要记得磁头的换道和数据的读取是串行的,而不是并行的(只能先换完道再读数据而不能边换边读)
淘宝的海量存储可能同一时刻百万用户要不同的图片,如果是用大规模的小文件存这些数据,那一秒钟磁盘要寻道非常非常多次,系统的负载就会很高,大量的时间都在寻道,读取数据的效率就低了
淘宝不用小文件存取数据的原因(二)
- 频繁的新增删除操作导致磁盘碎片,降低磁盘利用率(很多碎片利用不起来)和IO读写效率
如果我们现在要删除文件2,添加一个12kb的文件
对于磁盘碎片再举个例子
同样寻找存取数据位置也要移动磁头要换道这就引发我们的原因一了
淘宝不用小文件存取数据的原因(三)
- Inode占用大量磁盘空间,减低缓存效果