文件存储典型的应用场景为:内容管理,代码存储,企业文件共享,实时日志存储,医疗影像,AI训练等,不同场景有不同的IO模型,本文重点总结下如下几种:
序号 | 应用场景 | IO特点 |
1 | 日志存储 |
追加写入,在每一次写之前,都需要调用statfs获取文件大小,以此作为pos(新内容插入位置)写入write数据,因此write和statfs的请求比例是1:1 请求:先stat,后write,请求比例为1:1 写I/O 密集型,大文件小IO写入 并发写入 |
2 | 企业文件共享 |
du:多个readdir和多个statfs请求,先readir,后statfs ls: 一个readdir和多个statfs请求,先readir,后statfs |
3 | AI训练 |
数据90%以上都是读read操作,并且是小文件的顺序读或大文件的随机读; 数据集是不会被修改和删除的 元数据的操作集中在open/close/stat/revalidate |
4 | 医疗影像 |
文件小,占比超过50%的文件都是500KB以下的小文件 数量多,数以亿计的小文件; 长期报错,一般不会删除; 写多读少,读请求发生在医生或病人查看; |
5 | 流媒体存储 |
频繁读取处理小文件,几K~几十K; 数据共享 |
6 | 内容管理 |
海量小文件; 业务已小文件(几十KB级别)读为主,数据写入相对较少; 大并发; |