今天公司需要下载几百万的图片数据,由于oss太过昂贵,故此被通知要使用seaweedfs来存储。seaweedfs的简介、搭建和配置这个就不讲了,记录一下使用过程。
因为最近使用python居多,所以查了下seaweedfs的python库,看了下就选择了python-weed库,安装后就可以使用,根据源码中提供的,可以很容易就调用python-weed的接口。看了下源码,然后封装了下get和put接口,这里因为主要是下载图片,所以put接口扩展了使用的功能(其实就是将做一下的转换后调用crud_create接口)。然后,因为要对接口和批量下载进行测试,所以seaweedfs中存了很多无效数据,需要清理一下。
下面就记录一下批量清除seaweedfs的volume的方法,这个主要是看了一篇githup的帖子/chrislusf/seaweedfs/wiki/Volume-Server-API,从而解决了要单独调用接口的问题。
1.清除volume:
先看下本机seaweedfs开启的端口,然后执行命令获取当前的volume的id;【也可以直接查看-dir的volume目录的文件,每个文件名称对应一个volume id】
curl "http://localhost:8081/status?pretty=y"
data@data:/home/lmm/save_filter2db_log$ ps -ef | grep weed
data 8598 1 0 6月03 ? 00:30:29 ./weed master -mdir ./weed_master/ -ip=192.168.1.23
data 10240 1 0 6月09 ? 00:13:46 ./weed volume -max=32 -mserver=192.168.1.23:9333 -dir=/data1/weed_volume_1 -port=8081 -ip=192.168.1.23
data 10254 1 0 6月09 ? 00:07:26 ./weed volume -max=32 -mserver=192.168.1.23:9333 -dir=/data2/weed_volume_2 -port=8082 -ip=192.168.1.23
然后执行命令删除指定volume id;
curl "http://localhost:8080/admin/volume/delete?volume=volumeId"
分别在各个node上执行以上命令,删除指定node的volume【删除完成后可以通过执行】。
上面这种方法经试ok。
2.还有一种方法,很方便但是未经测试,有心的可以测试一下并告诉我结果 233:
先查看weed的服务开启的目录,
data@data:/home/lmm/save_filter2db_log$ ps -ef | grep weed
data 8598 1 0 6月03 ? 00:30:29 ./weed master -mdir ./weed_master/ -ip=192.168.1.23
data 10240 1 0 6月09 ? 00:13:46 ./weed volume -max=32 -mserver=192.168.1.23:9333 -dir=/data1/weed_volume_1 -port=8081 -ip=192.168.1.23
data 10254 1 0 6月09 ? 00:07:26 ./weed volume -max=32 -mserver=192.168.1.23:9333 -dir=/data2/weed_volume_2 -port=8082 -ip=192.168.1.23
就这么多,先记录下,后面有使用方面的问题再更新。