存储的内容全部是图片,每张图片大约 100kb ,目前磁盘使用的 1T 的三星 SSD 硬盘,NTFS 格式。
目前问题
1 、Windows 操作系统根本打不开文件夹
2 、Linux 系统执行不了 ls 命令,使用 Linux 桌面也进不去文件夹
注:
1 、为啥要存到本地
因为都是机器学习的训练集,存在本地才能读取
2 、为啥要打开文件夹
因为要做图片预处理,比如去背景这类似的操作,预处理完要大致浏览一般所有样本
3 、为啥不使用 xxxx
因为不打算改代码,目前代码全部都是直接读磁盘文件,换一下存储方案改动非常多(真的非常非常多,图片预处理脚本就有几十个,然后是各种训练脚本,再加上各种测试脚本)
1
murmur 2022-04-12 11:31:39 +08:00
为啥不分层存储呢 分三级,建子文件夹,到时候遍历进去就可以啊
|
2
OysterQAQ 2022-04-12 11:33:15 +08:00 via iPhone
Minio
|
3
3dwelcome 2022-04-12 11:36:11 +08:00 via Android 1
同楼上,用 hash 头分组文件夹就可以了。
web 后端的附件图片上传文件系统,大多都是这种结构。 |
4
LeslieLeung 2022-04-12 11:36:34 +08:00 via iPhone
满足不了打开文件夹预览的方法我倒是想到一个,用 pickle 存,然后封装读写方法给训练和测试脚本,代码改动不大。(这个方法减小了碎片化读取,能节省读取时间)
|
5
dickie 2022-04-12 11:37:58 +08:00
其实百万不算多 问题是你没有分文件夹 分三层 一层十个文件夹能解决
|
6
dickie 2022-04-12 11:41:42 +08:00
然后的话其实改存储如果代码变动很大 那是代码的问题 不管从本地还是网络存储读完文件应该统一,面向接口 而不是面向具体
|
7
ClericPy 2022-04-12 11:49:00 +08:00
1 、为啥要存到本地
这个问题前面有人提到 minio 搞个对象存储其实改动不大, 不过既然已经选了本地文件还不想动太多代码. 要么像前面说的文件夹分层, 做多层哈希前缀, 遇到文件夹里文件数量不均衡参考下环形哈希? 要么就先不动, 日常不要运行 ls. 很早以前工作存放视频本地缓存文件时候搞过类似的, 反正别轻易遍历(当时才四五十万就崩了) 2 、为啥要打开文件夹 预览就不要用系统自带的方式了, 自己搞个脚本取样几个文件可以么. 毕竟去背景时候是有日志的, 把文件名记下来, 逐行消费日志取样你想要的文件名, 然后直接把这些取样复制出来或者渲染到 HTML 里用浏览器看 3 、为啥不使用 xxxx 怕麻烦就别改. 反正原型项目确实奥卡姆剃刀没毛病, 以后正式环境再考虑复杂设计 总结就是, 想不花成本解决问题基本没戏, 绕开问题更换解决思路吧 |
8
0o0O0o0O0o 2022-04-12 11:51:49 +08:00 via iPhone
既然你加了这么多限制条件,那就自己写个简单的 explorer 吧,如果不是频繁新增文件,就定期遍历一次然后把文件数据持久化
|
9
privil 2022-04-12 11:57:31 +08:00 1
说 minio 的想啥呢,直接上 seaweedfs 不少你这种需求的在用 seaweedfs ,赶紧上,用了你会回来感谢我的
|
10
privil 2022-04-12 11:58:18 +08:00
seaweedfs 再挂载成文件系统用,就完事了
|
11
fxxkgw 2022-04-12 18:22:50 +08:00
linux 下可以用 ls -1 -f > xxx.file 方式快速看文件的
|
12
carmark 2022-04-12 19:12:46 +08:00
|
13
paopjian 2022-04-12 19:21:29 +08:00
非要用文件浏览器打开吗?都要做机器学习了,直接用脚本读取,拆分到小文件夹里不好么
|
14
jiangwei2222 OP @privil 害,折腾了 5 个多小时,没把 seaweeds 搭建起来,看了一下介绍,感觉确实非常适合。可惜运维难度有点高
|
16
privil 2022-04-12 23:23:49 +08:00 1
@jiangwei2222 #14 官方文档偏向开发角度,可以参照一下这两篇文章部署,https://www.trojansun.com/seaweedfs-guidance.html https://bambrow.com/20220107-seaweedfs-installation-guide/
|
17
ebingtel 2022-04-13 11:07:41 +08:00 1
也可以通过 offset ,把小文件存储到大文件里面,比如 64M 一个大文件
|
18
jiangwei2222 OP @privil 多谢
|