找回密码
 注册
查看: 428|回复: 0

linux系统安装seaweedfs系统

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-9-13 15:39:04 | 显示全部楼层 |阅读模式
搭建: L2 q  s# Y0 B" z. {- y# ~; l

. E1 {$ u) W/ P& d有两种安装方式,第一种下载编译好的直接使用,第二种是下载源码进行编译。由于暂时不更改源码, 故使用第一种方式运行1 V& L" c7 Q3 J% w
下载地址:https://github.com/chrislusf/seaweedfs/releases     下载完成后,解压出来直接运行。
# G# n( r0 g+ g7 W相关定义意义说明- Q5 D) U. q3 N  ^: w& w" l

+ F3 A4 \1 h/ _" F& D7 A因为是研究测试使用,就粗糙一点,都是在一台机器上完成3 x+ H( V; e# q0 N  C7 f6 G; w9 J
计划: 一个master(master只能为奇数个【好像master是以ip来做确定个数的,我做实验时,使用不同的端口启动三个master,在申请卷信息的时候报错,所以这里改成一个】)三个volume 一个filter5 `' K- ^' \* C2 p
) i; f! ^/ A4 s/ b0 Y/ E; Q4 {# R
从官网的release仓库选择一个版本下载下来,
8 @- p4 W) f$ }1 Q$ e* \+ O1 g0 V% B5 \" Q+ I" l. h& {6 @$ E# Y
wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
9 K+ S  Z& k( Y
! W% |5 Z) J6 r7 M6 w/ S8 H上传到/usr/local/weedfs目录
" {% g; i$ G. h$ `  a) v1 y
6 k& |9 c9 |& qmkdir -p /usr/local/weedfs/2 C6 M! I; x3 X- i& Q
cd /usr/localweedfs/
& Z+ F( W8 [& ?9 ?: U3 Ftar -xzvf linux_amd64.tar.gz - @; q  c: w$ o3 F7 I
得到一个weed可执行文件,weedfs的master 和volume的可执行文件都是它。; c( z. X2 q; J: |0 {
创建数据卷根目录以及各个数据卷目录、master数据目录和filter目录' v2 x$ {: [5 e6 Y" j# ?% H( }+ H

0 _% V8 D8 @" b" s- f! H* amkdir -p /data/weedfs_data/ c5 m0 I# r. h0 @
mkdir -p /data/weedfs_data/vola: @! `$ x- F9 I5 {
mkdir -p /data/weedfs_data/volb
. g; W: D" S! ]( ~) |mkdir -p /data/weedfs_data/volc& p3 ]* D$ S: q" x
mkdir -p /data/weedfs_data/master
* }/ g+ B8 y+ Gmkdir -p /data/weedfs_data/filter
; @, X' k* I- x/ |! L# n. p启动master 1 F! E* H. P8 D7 J
! h) y# u6 Q" z( N! R* e9 k
[root@k8s weedfs]#nohup ./weed -v=3 master -mdir=/data/weedfs_data/master  -peers=localhost:9333,localhost:9334,localhost:9335 -defaultReplication="001" >> /data/weedfs_data/master/wdfsmaster.log &  ##同个ip指定使用三个端口启动的master,在后面使用中会报错。master集群是用ip来区分的
+ [, F' `2 t* `9 G+ H6 J9 F( Q% t; k[root@k8s weedfs]# nohup ./weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication="001" >> /data/weedfs_data/master/wdfsmaster.log &
7 E& `% w% n' e. U# e# m启动完成以后就会生成下面文件和文件夹
6 ~) ~1 {* n6 L1 h7 \" i- J- w
* ?( D2 h) _- s' r% H[root@k8s weedfs_data]# ll *1 J8 Q, B' _# B7 l
filer:
. H! {0 @2 {2 c- `5 C! _+ htotal 0
, a: Z$ S7 l9 y! E2 I3 d: {! idrwxr-xr-x 2 root root 6 Feb  3 16:17 leveldb24 K2 C# T# M% L7 x* h, q

7 q6 l: w7 B! |8 _% K& i3 vfilermount:
" e6 K0 ^. L% n( Ntotal 0+ q5 R6 B+ ~0 N3 ?' c# H
drwxr-xr-x 2 root root 6 Feb  3 15:32 data
2 B: g. ]# L! _) V! p# o. u. x: w/ r' A5 }+ v, w
master:6 t5 b0 R& b) m% a
total 16
# P/ P& _; _# v: L% J-rw------- 1 root root   28 Feb  3 16:52 conf& D$ S, M1 W( W/ l8 ~) ^  L
-rw------- 1 root root  112 Feb  3 16:52 log
/ ?& e0 n2 c6 {' Sdrw------- 2 root root    6 Feb  3 16:52 snapshot
. j0 q  W( x) a* T-rw-r--r-- 1 root root 4513 Feb  3 16:52 wdfsmaster.log8 D; R; E) w7 q
2 v1 h. [( E% l9 w0 }
vola:1 O& d" r* R# g# {6 d
total 0  t, R8 x* R, }! i& n
$ i  t: Y2 T8 A  y
volb:3 j/ `0 s9 C7 q0 N) b1 d
total 0
; g, }9 |! L; `: ~
3 j+ }/ L  v2 \7 y! r1 }' Evolc:
" w* T( c% j+ j' x5 M) Dtotal 02 K+ t4 V& U8 w5 x6 r5 C; N

% o2 L1 B: n! d8 }) m4 rvold:. m, S  @8 G$ d1 P7 `6 _) T8 X1 H
total 0
. x6 z4 y) A* T6 l) l4 w
9 H: M/ d2 u' _# o- X, G$ Y9 ivole:
$ d9 r" A# S! u1 J0 `8 xtotal 05 E  A- X; O1 B: N% z4 S- `

7 p" o/ O; R: T+ n# Qvolf:7 [  J  ^% j% s
total 0
' Q  Q) l& ]0 {3 B) Q# ?. X[root@k8s weedfs_data]# ps -ef | grep weed
; U/ d; {0 f7 Q% F. q+ l2 Vroot       16171   15806  0 16:52 pts/3    00:00:00 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001
9 {$ r1 a$ b' P, P- r5 O' o/ Aroot       16190   15473  0 16:52 pts/1    00:00:00 grep --color=auto weed$ a! R: t' O( r" g' L2 H, y
[root@k8s weedfs_data]#
/ n% U7 H/ J$ Z8 H, M4 e* ^/ k启动volume4 @5 |9 f: `% ?4 P3 e" o) C6 I

' N" \9 l; `! r6 X. |2 q[root@k8s weedfs]# nohup ./weed -v=3 volume -port=8081 -dir=/data/weedfs_data/vola -mserver=localhost:9333 -rack=rack1 >> /data/weedfs_data/vola/wefsvola.log &
3 f5 [4 x* L3 |1 H. z' X+ x) o" [[root@k8s weedfs]# nohup ./weed -v=3 volume -port=8082 -dir=/data/weedfs_data/volb -mserver=localhost:9333 -rack=rack2 >> /data/weedfs_data/volb/wefsvolb.log &( C5 G. e# ?/ O' S/ M" c
[root@k8s weedfs]# nohup ./weed -v=3 volume -port=8083 -dir=/data/weedfs_data/volc -mserver=localhost:9333 -rack=rack3 >> /data/weedfs_data/volc/wefsvolc.log &
' u- A" l+ k$ Z/ D启动完成以后就会生成下面文件和文件夹
/ \, W5 l% ~1 m+ v/ s* c7 Z) ]/ R( y" B' x
[root@k8s weedfs_data]# ps -ef | grep weed
4 k6 z+ w0 A! ^root       16171   15806  0 16:52 pts/3    00:00:00 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001
8 l6 P+ S- l# n% v( V; N) _  Sroot       16191   15806  0 16:54 pts/3    00:00:00 ./weed -v=3 volume -port=8081 -dir=/data/weedfs_data/vola -mserver=localhost:9333 -rack=rack1
4 D) s$ C( k% N) e0 e* Q  T4 W. R3 \root       16217   15806  0 16:55 pts/3    00:00:00 ./weed -v=3 volume -port=8082 -dir=/data/weedfs_data/volb -mserver=localhost:9333 -rack=rack25 Z. @4 X% |0 i; M8 @
root       16359   15806  1 16:56 pts/3    00:00:00 ./weed -v=3 volume -port=8083 -dir=/data/weedfs_data/volc -mserver=localhost:9333 -rack=rack3* u2 S# L' o. {0 [8 Z5 c2 Q
root       16378   15473  0 16:56 pts/1    00:00:00 grep --color=auto weed0 t% h/ g/ C" b& K1 l
[root@k8s weedfs_data]# ll *, @0 @. _. O* \6 Y% L& E& _
filer:
9 O; h; c) X5 w5 F9 \5 Wtotal 44 R+ p) _3 K8 m/ ?( v) k
-rw-r--r-- 1 root root 2715 Feb  3 16:55 filer.log
0 s0 q" h, _0 C3 |1 o8 wdrwxr-xr-x 2 root root    6 Feb  3 16:17 leveldb2
" `6 ~3 S( U! t9 J3 {8 d3 Y4 |3 N* _' X' m, X7 F6 N1 r7 F
filermount:+ v+ \0 e! J, x: u
total 0
9 j2 J" j, {2 [4 ^- f. D# _drwxr-xr-x 2 root root 6 Feb  3 15:32 data
: P& M/ ^8 ]; E- W* ]3 `& k& x6 c-rw-r--r-- 1 root root 0 Feb  3 16:55 wefsmount.log8 |. v1 @) J6 a3 z1 O) D3 {
: |; I% n; V. P' `
master:- ^) p" b4 N& C' A9 c( B
total 24+ Y5 [9 a, I) h6 W1 x% h% @3 g7 K
-rw------- 1 root root    28 Feb  3 16:52 conf
$ }: h1 v1 {: X# Z0 D-rw------- 1 root root   112 Feb  3 16:52 log
! u* g# ]% ?0 W  h/ `  Gdrw------- 2 root root     6 Feb  3 16:52 snapshot
8 }( \* Y; k2 l  F* {: y7 v9 h' O9 E-rw-r--r-- 1 root root 14495 Feb  3 16:56 wdfsmaster.log% |+ e+ e) ?! z5 x

' ]  o, C5 A2 uvola:% G0 r) d& h' E) Q; g  ?, c4 t
total 8
" `% S9 ?; i( x/ M' D8 E. H-rw-r--r-- 1 root root 1267 Feb  3 16:55 wefsvola.log& V9 h, ~; L6 D" w+ S. N* U; q* G
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log, @/ z. B# M4 l1 Z

- V0 O' I, P* d( x2 ivolb:
: |7 l5 d* N4 c2 f3 ^total 4# U5 O1 l( F) d1 {
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log: f( g+ _0 O% n+ A% N

9 P7 k7 X+ X8 }4 e% p' ^volc:  n- s3 g) D5 m# g) c
total 8# m$ @6 f. s3 X. j! e% e
-rw-r--r-- 1 root root 4644 Feb  3 16:56 wefsvolc.log/ W3 d- f( u# S# n1 Z  L
% u) _7 F( w" e% L) K8 C( ?) v
vold:1 d0 }) h7 s' ?* m( Z/ \8 i
total 4; P7 e7 @' F: }' L+ f
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvold.log
% b$ }1 E  L# i% q5 A
' h& G7 A: O$ s: d1 j# p* Zvole:- J# ?3 J2 c6 Z, c0 ?9 _/ x
total 4
7 `% Y2 E1 {" T- Y4 p0 X. F9 I-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvole.log
' J: k3 g$ c/ v: s7 M7 U* D* d& M) g) w
volf:2 Z* X( ?' M  j" m
total 49 n7 ^8 \4 W" h* Q) D$ m; g, h8 U
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolf.log
: ~1 Z" D/ j" L: G4 ~  I: L8 S[root@k8s weedfs_data]#" ]6 h* x4 j9 L4 o; P2 g; r3 z# m* I
此时volume下面还没有任何数据,volume server会在第一次写入数据时建立相应的.idx文件和.dat文件
' o4 \! s/ R2 A" M  E7 d5 N9 T* D$ F+ F2 O8 d0 D; m
启动filer
2 ^; f% [; q! p6 h* f* g
) D' _9 K5 N+ A- b) `  E0 V9 y文件服务4 u( N: Y/ e4 R  Y) n; F. D; S

) k* R( n: q2 V: w# D可选的文件管理器服务可以减轻您的负担,因此您不必这样做。3 g6 ]- G; }" r/ P: p
" _1 n! x4 C' M" S3 }
它通过HTTP或UNIX FUSE挂载将SeaweedFS卷和对象组织到用户可见的路径(如URL或文件系统)中。
1 m0 J' l& Y  `: j4 f8 m# U& E- ~% I1 _; x6 q
Filer提供了一个方便且通用的抽象,可用于为现有应用程序提供正常外观的文件系统或Web API,以用于向下/上载,而无需进行修改。
/ {4 q- ?. U  c8 U. T4 v6 d, y+ s1 Z3 |4 H
可以使用文件, MySQL, redis等保存 filer metadata, 只需要启用或者停用对应的配置& [+ ]) C& Q# S  k

1 O& w4 k. g1 |' m/ y' j先生成一个配置文件,如下图
6 A) u( z2 A0 a& C+ }3 e
' E! W9 I; |  p' h[root@k8s weedfs]# ./weed scaffold -config=filer -output=.
) i  W0 R" p. o+ i! u0 q修改filer.toml,把filer的数据目录指向导/data/weedfs_data/filer/leveldb2下
2 [. k- C  i! W
1 @% c7 {( A" y7 q$ N3 L7 Dmkdir -p /data/weedfs_data/filer/leveldb2
% |1 H0 _# R& V) D  S[leveldb2]
5 s- v8 V5 O! ^4 F- D9 Y" \# local on disk, mostly for simple single-machine setup, fairly scalable
' U: S+ T* A" K# faster than previous leveldb, recommended.$ Y7 U/ V9 z. w! Q
enabled = true' v- S3 p7 E) F; L/ M. Q
dir = "/data/weedfs_data/filer/leveldb2"
  E/ x. r! t: M2 A3 w/ b8 v然后启动
6 r4 Y7 K, W+ Z0 c# k6 [! w5 e9 T; _& t; |/ \
[root@k8s weedfs]# nohup ./weed -v=3 filer -port=8888  -master=localhost:9333 >> /data/weedfs_data/filer/filer.log &
  V; s# ?$ i/ q: n( ]! d" E: l) U. p[root@k8s weedfs_data]# ls filer/*" M! h  S2 D) G# ~0 n9 D
filer/filer.log
% `$ S/ c0 P0 R, B3 U7 E7 t  B* h7 h& J/ f% a3 d
filer/leveldb2:
0 X( S2 X9 b! k6 J! e( D5 r* H00  01  02  03  04  05  06  07
7 l. s6 G5 F3 G- B; y最后$ q( o/ ~; i. o0 B$ D% B
% v4 ?' W/ ^& B) I, h: ~
所有的启动完成以后,如下图所示:
' G' E/ ]' c- [, g7 ?4 ?- J$ b1 z9 a
[root@k8s weedfs_data]# ps -ef | grep weed; O3 p$ _7 P1 }4 I# `
root       16171   15806  0 16:52 pts/3    00:00:00 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=0012 n) w! _5 {& [% K. h  V- x5 c
root       16191   15806  0 16:54 pts/3    00:00:00 ./weed -v=3 volume -port=8081 -dir=/data/weedfs_data/vola -mserver=localhost:9333 -rack=rack1$ G" K' o4 R% l
root       16217   15806  0 16:55 pts/3    00:00:00 ./weed -v=3 volume -port=8082 -dir=/data/weedfs_data/volb -mserver=localhost:9333 -rack=rack2
7 o  T" ^( F. Z& h- e3 droot       16359   15806  0 16:56 pts/3    00:00:00 ./weed -v=3 volume -port=8083 -dir=/data/weedfs_data/volc -mserver=localhost:9333 -rack=rack37 @1 c$ k0 c0 y% H
root       16458   15806  0 17:06 pts/3    00:00:00 ./weed -v=3 filer -port=8888 -master=localhost:9333
- U! W" y9 c' k5 _" t) croot       16469   15473  0 17:07 pts/1    00:00:00 grep --color=auto weed
! ?, c; H" g8 ?. g5 {/ }filer的mount挂载; n# Z) Y7 h' A3 ]$ b  b
0 R/ g( [9 |/ k- D0 [, W/ h3 C2 }) V
为了方便本地操作,把一个collection里面的内容挂载导某个目录,方便操作
, z8 \2 i3 |5 k* A) b3 A( D/ ~- r) d5 v* U) o# V
[root@k8s weedfs]# yum install -y fuse) X- i8 B+ r5 Q2 [: Q! k2 o
mkdir -p /data/weedfs_data/filermount/data) X/ d+ y; v, h7 S) ~
nohup ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/   >> /data/weedfs_data/filermount/wefsmount.log &
  V& S: A" ~9 x/ [! O% l; U7 e# M# n4 u, ]- d' F3 N
./weed mount -filer=localhost:8888 -dir=~/wz/mdir(本地目录) -filer.path=/(上传的filer中的目录)
& n, M% p) B0 o
; }; F$ w- J, p9 ]( }
: @  P/ ?- T& V$ t( I% j/ v% _直接往weed filer中拷贝目录或者文件把wubo目录拷贝到/ 根目录下也就是本地目录目录下/data/weedfs_data/filermount/data 下面' @) ^) r+ Q1 q1 R+ P- D

$ W' x0 s7 E* Q2 j  U/ a' s+ v0 u[root@k8s weedfs]# ls wubo/3 [: s) B3 P# A+ [) z8 `) s0 X
a  b  c' [1 j; l  E5 W. y. G! Z1 b
[root@k8s weedfs]# ./weed filer.copy wubo http://localhost:8888/0 H+ G  l: d: f' U# `' c0 q
uploaded c to http://10.10.3.163:8084/1,030dfa7a23
2 q6 J" o" {+ x3 N, n0 u4 a1 E& Lcopied c => http://localhost:8888/wubo/c: K1 K; ^1 P. C' y3 |& o" s
uploaded b to http://10.10.3.163:8084/2,02a5ddaae79 Z* |9 ~* L) g" Y" Y) h9 P: v% h8 i
copied b => http://localhost:8888/wubo/b+ X) I# R1 D) w6 V$ B
uploaded a to http://10.10.3.163:8081/4,04153475ab( S: O3 r& t6 ?, e4 y$ B
copied a => http://localhost:8888/wubo/a) `& y% |# _4 B) h" p7 Z
cd  /data/weedfs_data/filermount/data, 就可以查看具体上传的文件! _4 _8 I( @$ U9 M( l# W% w

8 R6 `: [' V; t: B! g& T% V[root@k8s weedfs]# ls /data/weedfs_data/filermount/data
: P  A5 |( L% K9 K4 N# q3 jtopics  wubo' ?' s+ z& u- Z& X
[root@k8s weedfs]# ls /data/weedfs_data/filermount/data/wubo/4 u' t" y; z  V- y2 z
a  b  c: H! c/ M  e5 y9 n
浏览器查看根目录文件7 H0 P6 W# Y, R& m$ P; `9 ^
  Z; \+ f" U! a' I

" |3 c. [! U- E* R: R) w$ i
7 z/ s  M! ?2 H7 L+ b测试; t6 q3 U' i' L" o/ X4 p
curl http://IP:9333/dir/assign: g8 F9 R  q. I: n2 G; l* t8 V
{"fid":"4,02d6944eef","url":"IP:9080","publicUrl":"172.19.131.45:9080","count":1}
- G1 t2 G% T# F' _" u1 _; n- f关于filer mount的问题
2 R4 k+ O9 i4 ^; p. P( j/ A$ xweed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data本地目录) -filer.path=/(上传的filer中的目录)( z+ X; r1 O- F. E& G0 C7 }4 `

8 l3 B0 T% H) Y' Mweed mount 像访问本地目录一样访问文件系统,前提是开启了 master volume filer
* z3 O" Y( ~; j! V5 G(它使用bazil.org/FUSE,它允许在Linux和OSX上编写FUSE文件系统。在OSX上,它需要OSXFUSE)# d# Q# m; r& _2 m3 P3 k, x: {
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data  -filer.path=/home/chris -collection=chris7 \! N% ?( Q9 ?* l
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data  -filer.path=/
& z7 A* [( S; u/ ]- F& \关闭挂在需要关闭mount并且手动umont  -l /data/weedfs_data/filermount/data 目录,如果一般用户失败请使用root用户
! l& C6 v2 o$ `. }: B* j! O8 |" w! j
其中mount只是为了本地操作方便,不想本地操作,可以不使用mount
' Z/ M$ v; I) T7 ]6 i# b( C+ R0 p* L# k- h! g
使用
/ g+ @5 n2 B6 L5 b( ]. s  m3 e- @上传文件- ~( {3 H2 X1 {+ O( [3 D8 n) u

1 M8 d/ T+ h8 O6 t5 R6 ^3 c要上传文件:首先,向/ dir / assign发送HTTP POST,PUT或GET请求以获取fid和卷服务器url【理解:master负责管理卷,并生成要上传文件的fid,并给指定需要上传文件的卷服务器,所以我们在上传文件之前,需要向master请求获得这些信息,然后根据这些信息直接往指定的volume里面上传文件】
" W9 N1 l' `; V6 c$ wSeaweedFS在卷级应用复制策略。因此,当您获得文件id时,您可以指定复制策略。例如
2 N" ~  M4 J+ g$ e6 O
/ C% }/ V: ?7 E1 U6 @4 jcurl http://localhost:9333/dir/assign?replication=001
% J! c0 w  M) S当申请卷信息时,报如下错误。这是因为我们使用的replication模式是 001,即对于一个needle来说,会在同一个机架下的两个volume中保存相同的文件。由于上面我们创建的3个volume都分别指定了不同的机架,所以本教程目前的拓扑(逻辑)结构就是: 只有一个数据中心(默认的数据中心),包含有三个机架 rack1,2,3。每个机架下各只有一个节点(datanode --默认的节点,相当于一台机器,即localhost),然后这个datanode下面又有一个volume server(创建的,比如8081)然后这个volume又会创建默认0 y# H0 G7 Z1 u- Z$ R
2 T% ^3 h& C) y1 K1 h6 G
[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
1 D9 G, }8 s* |* K{"error":"Cannot grow volume group! No matching data node found! \nDefaultDataCenter:Only has 0 racks with more than 2 free data nodes, not enough for 1."}[root@k8s weedfs]#
( @' Q2 q8 }9 {( L# Q拓扑结构如下
' g, q, X5 d/ I
4 @7 G% J. y5 }; m' t% w/ h' Y" S# s5 Q
+ l& g3 m8 U! F% G7 v! P8 q
数据中心(datacenter):包含多个rack(机架)相当于机房+ [, o& U* c& C. S3 `( Y
% Y+ G: L7 n* Z% g3 n( ^; j
rack:属于一个数据中心(datacenter),类似机房中的一个机架
, ?; f$ @. a5 g. Y" a6 `7 q0 H0 E7 d. D9 j4 B; D
datanode : 存储节点,存储多个volume,类似机架中的一个机器 weed volume
! I' N' r' j$ c3 G4 y, B: H9 v8 `3 E: @8 x* U& H
volume server:逻辑卷服务,多个逻辑卷服务,每个逻辑卷服务(volume server)可以有多个逻辑卷(volume ),默认7个
* ~& ?3 U9 l9 V. f1 F# f5 C, m0 l" \6 c; t1 v! r
volume :逻辑卷,存储needle文件对象5 K9 c9 R2 P  u' T

% \! B* O9 {5 s6 _& t5 _- Ineedle: 逻辑卷中的object,对应存储的文件
# {" r# B  Z1 f9 z5 G1 c' N# |! W! X$ c5 C' w% S! J/ `8 u
collection:文件集,默认所有文件都属于""文件集。如果想给某些文件单独分类,可以在申请id的时候指定相同的文件集
0 x8 Q) s0 W8 i# Q+ m5 y
( I+ |( x0 r7 K% W$ @  ofiler :指向一个或多个master的file服务器,多个使用逗号隔开。 weed filer
% W9 N6 \- e# H7 p3 ~' N: o$ a: E
weed volume会创建一个 datanode ,可以指定所属的 datacenter rack和master ,会根据配置存储文件,默认一开始没有volume,当开始存储文件的时候才会创建一个volume,当这一个volume大小超过了volumeSizeLimitMB 就会新增一个volume,当volume个数超过了max则该datanode就不能新增数据了。那就需要在通过weed volume命令新增一个datanode。
2 J+ n% [5 x4 u3 H) @4 v
- J4 |8 B* W* v" y0 u) u按上面的添加volume的方式再添加一个vold7 R6 F- E" r5 T$ P, N$ `
[root@k8s weedfs]# nohup ./weed -v=3 volume -port=8084 -dir=/data/weedfs_data/vold -mserver=localhost:9333 -rack=rack1 >> /data/weedfs_data/vold/wefsvold.log &
7 ?8 {& {  q1 T+ \, a6 X) |2 W并重新申请就能返回如下结果
& Y7 v7 f; m# X! W8 W
7 _: Y4 F8 ^4 @[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
* U# ^! T  g( A. ^; Y7 {{"fid":"4,01c1810497","url":"10.10.3.163:8081","publicUrl":"10.10.3.163:8081","count":1}[root@k8s weedfs]#+ h, I& |) i" D( t  Z/ e
服务情况vola和vold 属于一个数据中心同一个机架(rack1)  W! L% _( g6 k
, a: W5 X, Q, E5 |
[root@k8s weedfs_data]# ps -ef | grep weed5 ^' _# f$ |) q, ~' T
root       16171   15806  0 16:52 pts/3    00:00:01 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=0018 q7 M; T1 _& |; k1 x
root       16191   15806  0 16:54 pts/3    00:00:00 ./weed -v=3 volume -port=8081 -dir=/data/weedfs_data/vola -mserver=localhost:9333 -rack=rack1
9 e' s2 D/ h  u0 t" }1 Xroot       16217   15806  0 16:55 pts/3    00:00:00 ./weed -v=3 volume -port=8082 -dir=/data/weedfs_data/volb -mserver=localhost:9333 -rack=rack2) ^( R! s$ }7 W% J3 s% w8 b
root       16359   15806  0 16:56 pts/3    00:00:00 ./weed -v=3 volume -port=8083 -dir=/data/weedfs_data/volc -mserver=localhost:9333 -rack=rack3
4 Y+ u. }4 m* jroot       16458   15806  0 17:06 pts/3    00:00:01 ./weed -v=3 filer -port=8888 -master=localhost:9333* u- }* ?+ s! t
root       16811   15806  0 17:11 pts/3    00:00:00 ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/- U4 {8 v% G5 z* l9 _( T$ J; M! q
root       16841   15806  4 17:22 pts/3    00:00:00 ./weed -v=3 volume -port=8084 -dir=/data/weedfs_data/vold -mserver=localhost:9333 -rack=rack1
, T4 r# n$ q/ A" {# y% C! C9 c& ]+ lroot       16850   15473  0 17:22 pts/1    00:00:00 grep --color=auto weed
" u, }- I; k$ |* z9 ]- L 这个时候看一个各个volume下的情况,如下图4 M  {9 P' E" H% T& C! J# L- O" u
因为vola和vold同属于一个机架rack1 而replication策略又是001,所以vola和vold都有数据,并且数据是相同的两份。; H* s  L2 c8 ^8 [& I2 `' b

% N3 ~2 }* J8 H1 M( C4 r* {[root@k8s weedfs_data]# ll vol*% b6 {) i2 s. d1 K; ~: B) l
vola:
) d4 K# y$ O2 k& X4 n7 t$ vtotal 64& t; T. k# |9 x& e5 @$ I0 W
-rw-r--r-- 1 root root    8 Feb  3 17:23 1.dat' z' a, F: O- q8 P2 C* w# U1 G0 b7 v) r
-rw-r--r-- 1 root root    0 Feb  3 17:23 1.idx& j& Z9 B; h/ N3 ~# G
-rwxr-xr-x 1 root root   57 Feb  3 17:23 1.vif
3 P8 `5 p6 \% }-rw-r--r-- 1 root root    8 Feb  3 17:23 2.dat4 R( _! Y1 a) O2 N- G, ?9 k! O5 o
-rw-r--r-- 1 root root    0 Feb  3 17:23 2.idx
; |0 ~- J" C# Q5 }+ v-rwxr-xr-x 1 root root   57 Feb  3 17:23 2.vif5 F$ a3 M2 o- D5 U1 S1 V
-rw-r--r-- 1 root root    8 Feb  3 17:23 3.dat% q* N! |! t, |7 q. e1 P, L! ~
-rw-r--r-- 1 root root    0 Feb  3 17:23 3.idx
( t1 f6 x- {; u" G-rwxr-xr-x 1 root root   57 Feb  3 17:23 3.vif5 j. v+ d; `" G
-rw-r--r-- 1 root root    8 Feb  3 17:23 4.dat
0 I$ D8 c8 P* U% g-rw-r--r-- 1 root root    0 Feb  3 17:23 4.idx2 m. t- b, Z" K$ I& w4 V
-rwxr-xr-x 1 root root   57 Feb  3 17:23 4.vif
4 X$ X  l; V# v( {6 h-rw-r--r-- 1 root root    8 Feb  3 17:23 5.dat! t- b! X0 e& v8 M; R  r; g
-rw-r--r-- 1 root root    0 Feb  3 17:23 5.idx
/ r: j2 [- Z+ I, P8 N" Y-rwxr-xr-x 1 root root   57 Feb  3 17:23 5.vif
2 F+ h: q6 Q# M! H2 Z$ M-rw-r--r-- 1 root root    8 Feb  3 17:23 6.dat
( d" U. z/ Y* K) b2 s0 [! J-rw-r--r-- 1 root root    0 Feb  3 17:23 6.idx
- l, k/ ^9 w: h! r* n  L" o0 s/ p-rwxr-xr-x 1 root root   57 Feb  3 17:23 6.vif
: G; D  I, z8 d/ c- g-rw-r--r-- 1 root root 8569 Feb  3 17:23 wefsvola.log
/ f4 L" j6 }8 s) L' ^: v+ }' w-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log3 u  w2 l1 _& `4 ^0 h7 K
7 |+ ?- d8 c$ s- L1 l1 k/ X
volb:
& A; \1 {4 i* ]' ]% t4 X0 j7 ~total 4
  E# J3 g+ ~8 k) J0 x# @-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log
, y* q' n* n, c& Q- \3 z4 B7 P- _) @/ D) b1 b0 Y+ I. J
volc:
& z% \' q' g- X. f! rtotal 8! t( x$ K6 C7 n% U
-rw-r--r-- 1 root root 4644 Feb  3 16:56 wefsvolc.log
  ~( C' H% {" g& Z
* P' D# M. d3 M; X% |vold:
/ m5 ?# |: g6 V- R7 }$ Ytotal 605 z4 O6 x, {. X
-rw-r--r-- 1 root root    8 Feb  3 17:23 1.dat
' F" \, o+ F' O5 H" T: k  j-rw-r--r-- 1 root root    0 Feb  3 17:23 1.idx& G7 a- h4 f; A8 H6 z- V8 a' n
-rwxr-xr-x 1 root root   57 Feb  3 17:23 1.vif
& L1 T9 R4 j  b3 Q7 R. P) n9 }2 `-rw-r--r-- 1 root root    8 Feb  3 17:23 2.dat
2 q* y4 R" i. F. o, W6 L* I# ^-rw-r--r-- 1 root root    0 Feb  3 17:23 2.idx
4 v) L' R* U* n/ q6 ^- g7 o-rwxr-xr-x 1 root root   57 Feb  3 17:23 2.vif
+ f2 d- N8 W& x-rw-r--r-- 1 root root    8 Feb  3 17:23 3.dat
6 B- O. X6 w. Y0 V$ d$ H-rw-r--r-- 1 root root    0 Feb  3 17:23 3.idx
2 H5 e" b- k% G) L-rwxr-xr-x 1 root root   57 Feb  3 17:23 3.vif* |$ m& ^6 {- J5 X7 E2 Z( \
-rw-r--r-- 1 root root    8 Feb  3 17:23 4.dat
! e5 T- e6 {! b$ U( w/ m: G: x5 B' ?: m-rw-r--r-- 1 root root    0 Feb  3 17:23 4.idx
/ a% F3 p8 V" r. O. k! h-rwxr-xr-x 1 root root   57 Feb  3 17:23 4.vif" X" b0 G4 y2 k& F5 |
-rw-r--r-- 1 root root    8 Feb  3 17:23 5.dat0 z+ V; K0 O: p, M6 J  J  D# m1 h
-rw-r--r-- 1 root root    0 Feb  3 17:23 5.idx& f* W2 }( \  }8 v
-rwxr-xr-x 1 root root   57 Feb  3 17:23 5.vif
7 [; p% X# @0 `& E. `, }) v" _-rw-r--r-- 1 root root    8 Feb  3 17:23 6.dat
& ~0 V; z# v4 l0 }, S$ [-rw-r--r-- 1 root root    0 Feb  3 17:23 6.idx
# q* M$ Z9 I1 J6 d-rwxr-xr-x 1 root root   57 Feb  3 17:23 6.vif  Y0 C* D& ]! j$ W. i" {- q! ]
-rw-r--r-- 1 root root 9604 Feb  3 17:23 wefsvold.log
2 w& [. [' G9 N, E( h' s; g
0 y; _3 I7 r, Mvole:
' S8 Y# u- M9 ^  E$ r3 etotal 4' I6 Q$ m/ U. Y( V% N5 T
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvole.log
" z& ^& a. \; x9 H4 S
' C5 F/ C* e& q, ~+ }4 ?volf:
" _' v6 L3 M1 z! w4 l5 utotal 4
' I$ u5 }1 r) f-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolf.log' _0 k% L  b. j
[root@k8s weedfs_data]#2 z- U9 s& }9 d- e4 w6 j3 K
同样的操作也rack2和3也创建相应的volume
  U- R8 v; f6 O* a9 y: d8 ]! k# M0 c7 g1 J2 b
[root@k8s weedfs]# nohup ./weed -v=3 volume -port=8085 -dir=/data/weedfs_data/vole -mserver=localhost:9333 -rack=rack2 >> /data/weedfs_data/vole/wefsvole.log &
" S4 S( A/ J$ }+ Y( w[root@k8s weedfs]# nohup ./weed -v=3 volume -port=8086 -dir=/data/weedfs_data/volf -mserver=localhost:9333 -rack=rack3 >> /data/weedfs_data/volf/wefsvolf.log &
+ U& ?+ P/ ]- H, m+ `服务启动情况% f# X2 M( @$ b/ s0 N, J' g

9 y1 {- p; V* `& b' W[root@k8s weedfs_data]# ps -ef | grep weed
6 a" v) @9 v/ K8 b1 t, k) Troot       16171   15806  0 16:52 pts/3    00:00:02 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001
. F+ S, C# R& }2 P. iroot       16191   15806  0 16:54 pts/3    00:00:00 ./weed -v=3 volume -port=8081 -dir=/data/weedfs_data/vola -mserver=localhost:9333 -rack=rack17 I! w4 s8 I; v/ m" N3 G) @' j' }- L. T
root       16217   15806  0 16:55 pts/3    00:00:00 ./weed -v=3 volume -port=8082 -dir=/data/weedfs_data/volb -mserver=localhost:9333 -rack=rack2/ h  |! w  Q/ d4 V% P
root       16359   15806  0 16:56 pts/3    00:00:00 ./weed -v=3 volume -port=8083 -dir=/data/weedfs_data/volc -mserver=localhost:9333 -rack=rack3
0 w( `% L- z( Q! \9 A; zroot       16458   15806  0 17:06 pts/3    00:00:01 ./weed -v=3 filer -port=8888 -master=localhost:9333. F2 s# B; c0 G) n! j
root       16811   15806  0 17:11 pts/3    00:00:00 ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/- m1 K& b* p3 w
root       16841   15806  0 17:22 pts/3    00:00:00 ./weed -v=3 volume -port=8084 -dir=/data/weedfs_data/vold -mserver=localhost:9333 -rack=rack1
3 B# |9 I4 M9 z# r# [root       16855   15806  0 17:25 pts/3    00:00:00 ./weed -v=3 volume -port=8085 -dir=/data/weedfs_data/vole -mserver=localhost:9333 -rack=rack2
4 C% @8 X8 O9 p/ i$ \root       16864   15806  3 17:26 pts/3    00:00:00 ./weed -v=3 volume -port=8086 -dir=/data/weedfs_data/volf -mserver=localhost:9333 -rack=rack3& @7 j* p' D- ^8 ?0 s* O
root       16873   15473  0 17:26 pts/1    00:00:00 grep --color=auto weed, ?& C4 p: n( I  `/ t9 x0 C
上传文件
; C( ~# G2 `  r  s7 O5 `; ^9 E上传文件之前- V  F* Q4 q* z8 C

0 ]) |. Q" v9 T& I) f/ p, o[root@k8s weedfs_data]# ll .
" ?% \9 R& Z) v# Htotal 0: l* T! x  ~  i4 b6 @
drwxr-xr-x 3 root root  39 Feb  3 17:06 filer
+ k* Q/ I4 G% y, Ndrwxr-xr-x 3 root root  39 Feb  3 17:11 filermount" I7 g- A% w) G0 r3 s$ @% x" D
drwxr-xr-x 3 root root  67 Feb  3 16:52 master
9 B# O: D8 B# \) ]drwxr-xr-x 2 root root 280 Feb  3 17:23 vola1 H0 n4 x4 n0 @# Z- K/ z6 @
drwxr-xr-x 2 root root  26 Feb  3 16:55 volb* c/ m- N) K/ w. _! G0 X; O: \
drwxr-xr-x 2 root root  26 Feb  3 16:55 volc+ I- d( u% M  U/ ^8 M) p" ^) ~
drwxr-xr-x 2 root root 260 Feb  3 17:23 vold# N: w/ w& q: A' n, O
drwxr-xr-x 2 root root  26 Feb  3 16:55 vole  d+ f2 T. {$ j7 C# Y
drwxr-xr-x 2 root root  26 Feb  3 16:55 volf! j9 Z( z* E0 g# ]9 n6 g4 L
[root@k8s weedfs_data]# du -sh *0 H! V/ N  L; v+ T
104K        filer
9 `1 Z7 J6 F* K# h4 E% P$ i4.0K        filermount
* {4 U. D; A9 f. E7 _6 ^5 o$ r44K        master+ m9 A0 J( p6 y2 G+ ?* P; {
76K        vola
; d: C4 z; y" `  j# A4.0K        volb: S' X9 F- B# B5 s# ^2 n) U
8.0K        volc
7 n# L2 J/ N4 ]/ C0 u# l76K        vold0 ?5 a3 s  N# U# F
4.0K        vole
7 V9 P2 c4 m. ]: N8 U0 T7 Z4.0K        volf' ~/ N4 m; d4 V5 ]; u
[root@k8s weedfs_data]#8 {& [+ g8 A2 y' F. a- H
上传完以后,再测试了一下下载
( a6 P! v/ w  F5 m# ^% o/ t6 M
4 j5 I9 U. J& S3 F+ w. s% b保存文件ID
- r  f6 [* _/ }& [2 K现在,fid在这种情况下,您可以将4,01c1810497保存到数据库字段中。
2 t+ o/ N( ?' J0 _, b5 x& Z% u& j! c& V* I1 g
开头的数字3表示卷ID。逗号后是一个文件密钥01和一个文件cookie c1810497。
+ \7 s& V" d1 V
7 U* i6 s" l6 h" K: z+ E卷ID是32位无符号整数。文件密钥是一个无符号的64位整数。文件cookie是32位无符号整数,用于防止URL猜测。
) @. |1 L; J+ W- Z, k3 f2 Y% ^5 z/ w8 `4 j% y
文件密钥和文件cookie均以十六进制编码。您可以使用自己的格式存储<卷ID,文件密钥,文件cookie>元组,也可以将其存储fid为字符串。3 M# ~" ]0 G8 Q9 D( Z/ H

" m  k3 g. V, E* s- _如果理论上以字符串形式存储,则需要8 + 1 + 16 + 8 = 33个字节。char(33)就足够了,如果还不够的话,因为大多数用法不需要​​2 ^ 32卷。; k" p8 v4 G9 f8 [

0 ~% x9 f/ N. F2 P9 B9 t; |如果确实需要空间,则可以使用自己的格式存储文件ID。卷ID需要一个4字节整数,文件密钥需要8字节长数字,文件cookie需要4字节整数。因此16个字节绰绰有余。
9 D- W1 n8 ~# G2 ^
8 ^& ?/ r/ R( w' S[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
( m" q- }1 C0 G! X& a7 Y* d{"fid":"4,01c1810497","url":"10.10.3.163:8081","publicUrl":"10.10.3.163:8081","count":1}[root@k8s weedfs]#( E* {- p( A3 U& [! F* K) e
[root@k8s weedfs]# curl -F file=@acme.sh.tar.gz http://10.10.3.163:8081/4,01c1810497
, y$ @# ~/ v" t; K" D* V6 t; f2 @{"name":"acme.sh.tar.gz","size":205121,"eTag":"0e2e8219a406a0cb817f24716caa9432"}[root@k8s weedfs]#  n4 g: o6 `: j1 V( U
下载:: h, L: \! Y2 P; a
6 t8 J$ ^, ^& ^0 m7 y
[root@k8s weedfs]# wget  http://10.10.3.163:8081/4,01c1810497
* G9 _9 ~" Q7 B8 H2 x1 l3 X--2021-02-03 17:29:44--  http://10.10.3.163:8081/4,01c1810497
8 D3 ]- r1 z- Y# I* F# AConnecting to 10.10.3.163:8081... connected.! S2 p4 f, R. q! W8 y# _5 V/ }% k
HTTP request sent, awaiting response... 200 OK* Z/ _) C& h% i" c
Length: 205121 (200K) [application/x-gzip]
4 E' n7 M. d& Q/ XSaving to: ‘4,01c1810497’2 _( J! w' e  z4 ~7 q( t* c, i" i

- k! U. |% }& X5 t4,01c1810497                                              100%[===================================================================================================================================>] 200.31K  --.-KB/s    in 0.001s  
3 c. \$ I# E0 U# J& [5 b4 n
, J3 X+ P) E0 N* m) T2 r( G/ J2021-02-03 17:29:44 (249 MB/s) - ‘4,01c1810497’ saved [205121/205121]
( s2 Y; E) N0 @# Q. `! C
; `/ a  _$ _4 ^1 d8 m[root@k8s weedfs]# ll  X- b1 i: ~% g4 `' R) |# y
total 70368
& c' V- S! _, v9 t0 u7 B5 R" U1 |" M-rw-r--r-- 1 root root   205121 Feb  3 17:28 4,01c1810497
' ~% h" N% ^; `% @, w, t0 y7 [-rw-r--r-- 1 root root   205121 Feb  3 16:11 acme.sh.tar.gz, P, x, B' H$ u$ |; O4 F5 C+ p
-rw-r--r-- 1 root root     5718 Feb  3 17:04 filer.toml5 h4 ?5 n7 i* S5 G) H
-rwxrwxr-x 1 2000 2000 71629836 Feb  1 12:50 weed
6 I4 T4 ]2 q2 P8 o# T9 k* a" T% ~比较上传前后卷空间大小变化,可以发现,卷空间增加的大小正好等于上传文件的大小
3 X  C, E7 W- o1 X& M  [$ _
! v0 L) n7 B, U7 ^[root@k8s weedfs_data]# du -sh *; M7 m: ?( b& i' N+ N9 H
104K        filer
# W, Z. t4 R1 T# g, Z$ i$ K) m4.0K        filermount
1 O$ O3 p: {& X44K        master
% n( P3 ]3 y1 B/ L76K        vola# N9 h: F1 ~; s) C# K8 h
4.0K        volb
& n0 @2 S0 C7 A/ N0 q9 n; _8.0K        volc
6 G5 _) Y5 X0 v76K        vold
( L/ c. w8 f3 I) c$ K7 a0 g/ `4.0K        vole# W3 f0 R! Z6 W" y
4.0K        volf
2 |; }( K/ I  v' c" A9 [[root@k8s weedfs_data]# du -sh *0 e5 S3 h5 Q, ?- `
104K        filer- }1 U$ \1 Q) q$ |5 b( T) [
4.0K        filermount. }9 H/ s3 H- K9 C. a* m2 s* t9 `
44K        master6 [4 e) a' x6 L1 L0 l8 d- ~
288K        vola
' ~" k& g9 O5 m4 b( X( S4.0K        volb( h5 m' p1 w. M
8.0K        volc8 g+ ~0 o' b# t8 c8 ~( O) |$ e
284K        vold$ m1 o: K/ a  N( I: l( M8 n0 X
4.0K        vole
, J3 g/ F  Z3 A. u4 V/ a+ ?+ s4.0K        volf( W: O9 b; s  ]' u2 a- y9 `( h  S
删除文件:% c7 U/ d: G8 ^
因为weedfs对删除文件,磁盘空间释放需要额外的操作,这里做一下测试,验证一下
9 P/ @3 [8 L- @- k" x) X: g调用删除api 删除刚刚上传的acme.sh.tar.gz; n: F8 j% g. f' @) A) G; H

& E0 k- A0 J: e8 b/ L4 D6 [[root@k8s weedfs]# curl -X DELETE 127.0.0.1:8081/4,01c1810497
/ b8 D, j/ S8 l{"size":205147}[roowget  http://10.10.3.163:8081/4,01c1810497
2 J. E" T9 q* W, E* d( u9 K, ^5 @--2021-02-03 17:34:19--  http://10.10.3.163:8081/4,01c18104972 ]2 D( U# |, _1 y
Connecting to 10.10.3.163:8081... connected.9 m3 U6 E7 o3 L, E: }
HTTP request sent, awaiting response... 404 Not Found
9 J0 G8 u& }: |: [! [( M( I2021-02-03 17:34:19 ERROR 404: Not Found.
( x: N5 v8 v# g( ?/ Z2 h: z1 V删除在wget 404 说明已经删除,但是果然如官方所说,删除完以后,并不会释放磁盘空间( m* ?6 f; Q# @! k

1 c& b6 ~; X. P$ F. D& p[root@k8s weedfs_data]# du -sh ** }1 k* s& D5 i7 [
104K        filer
! m4 C& z! e' J( w4.0K        filermount
0 A) @2 t7 r# Y: `1 }44K        master
# V3 K! m1 }! X316K        vola% N' {9 ~/ o1 V
4.0K        volb! E) R6 E4 s( V0 Z5 S  j" `
8.0K        volc9 u% T0 c1 V! W, O2 i/ J) f
312K        vold# ?. P. h3 R7 A9 d, p9 s3 t5 u& C
4.0K        vole
' X# H+ G  B* s5 y8 b/ b4.0K        volf
, ^8 b# G$ _& K' O% V[root@k8s weedfs_data]#
+ W! Y7 v) T& x1 B2 _使用下面的api查看卷状态信息,可以看到,id为4的卷文件数目是1,因为我删除了id为4的卷上面的文件,所以下面id为4的卷信息显示"DeleteCount": 1。 (有个疑问是,replication为001的模式,为啥没有看到其他卷上面有删除记录)
' x/ Z( a2 s. k6 W3 j; r6 C, @7 C0 G4 d3 W( c$ ~  a
[root@k8s weedfs]# curl "http://localhost:8081/status?pretty=y"
: `% H1 a7 O: k+ }{
4 C% x7 o( c; x9 A! I  "DiskStatuses": [) Y/ @( T1 H, e( L! I  V
    {
" M: w; ?2 T6 E8 l, b; X; _      "dir": "/data/weedfs_data/vola",
4 b6 B" R/ Y! e      "all": 214432849920,
; v3 \% Z7 L8 C+ ?/ ^8 ^% X      "used": 5096587264,
$ `2 `/ h4 ?, w      "free": 209336262656,9 d6 ^" t6 b# a+ r! k
      "percent_free": 97.62322,
, T" n4 [  K0 j6 c$ H4 g, [4 Y6 X      "percent_used": 2.3767755
0 P( p3 O* {# ]    }
  q( q, n  M4 R4 V( d  ],
2 @: c& B. z' t! [- |  "Version": "30GB 2.23 318a3d2",
3 }0 U: W) B* |! _  "Volumes": [
6 b! U+ K" o1 t. p  K    {
8 D* J* A7 [) X8 v7 z      "Id": 1,
8 o3 \( ]8 ^9 x" f; H* v      "Size": 0,
7 C& ], W0 }3 c$ q! F      "ReplicaPlacement": {
# i$ e0 c; O- t        "SameRackCount": 1,
* D1 i' n$ G; Z: j        "DiffRackCount": 0,
( h* e  |0 ?& |; Z8 U        "DiffDataCenterCount": 0) h* l! p6 w1 W, ?5 J, s. J
      },
: C3 x: X6 j- T% V      "Ttl": {1 @1 K5 b3 T; c4 l1 C
        "Count": 0,4 ?6 L8 J5 t4 [$ x3 y+ m; O
        "Unit": 0
! k" w% j3 j2 K" U- P  A3 f) G      },8 t' k* o8 ~7 C* S2 f  L- A* I. G; V
      "Collection": "",6 T( N5 s9 |* y
      "Version": 3,- G& x8 l* P, r5 [& T; B! l+ A
      "FileCount": 0,5 ~* [* ^. n0 P, k' {% i- Z# q2 B
      "DeleteCount": 0,
4 o& E' i  r) C+ t8 P. L( W+ n' S      "DeletedByteCount": 0,* W# g6 f- q/ v( l" R# d5 ?) A
      "ReadOnly": false," \5 T! Q4 r% X6 D9 V' R( l* ?
      "CompactRevision": 0,2 N5 V' a% V7 s$ B* Y' q
      "ModifiedAtSecond": 0,
# K) z& z5 G% ?6 r0 v0 e8 I      "RemoteStorageName": "",; d# [0 S# [. ]6 P9 G
      "RemoteStorageKey": ""& o  l3 A# Z  c4 m
    },
$ p3 m( R6 t8 E    {
5 t8 {9 O! f7 Z8 v! {4 T/ b      "Id": 2,
, d- l! o% }1 F5 h/ L, _3 M4 V      "Size": 0,
  t1 j3 E) J* q9 f! \- x1 K: ]      "ReplicaPlacement": {" A# I, v8 P) s7 I8 x- W/ Z$ \
        "SameRackCount": 1,- R5 o6 n8 L# ?: G( i1 x$ D
        "DiffRackCount": 0,. J' h' M6 @8 I3 k# v6 J
        "DiffDataCenterCount": 0
7 v$ n% O" T- Z- L# E7 ?2 L      },
- X, T$ d$ W1 a" T7 y$ n) a; p      "Ttl": {
) T( z7 S' J% E& i/ \- }, \        "Count": 0,
5 U5 \) O& n; N        "Unit": 0
4 k% {7 q& D0 k8 {5 C      },
! Z3 D; R8 X6 y6 _5 }! q      "Collection": "",
/ Z& ?+ U7 C* [      "Version": 3,
9 [* E8 g- K: p      "FileCount": 0,+ G' g% o" c9 e0 w( q! {" \; J
      "DeleteCount": 0,
1 H3 z. r# ^. [  i. m* M6 Z- D0 i* t      "DeletedByteCount": 0,) V# v3 K( W! L. [
      "ReadOnly": false,0 a( U: g2 V  A
      "CompactRevision": 0,, v* @. b- {. w6 |9 E1 h( S! T' T
      "ModifiedAtSecond": 0,5 s$ j- f4 [& _. e
      "RemoteStorageName": "",# b% B+ s* s9 v& \/ ~% L7 V2 q
      "RemoteStorageKey": "". T! N9 x7 N, i* H! F8 X6 B
    },3 }* Q2 C- R( i
    {1 Z; R" O6 N* a  b. q9 Q1 a
      "Id": 3,
5 f6 a+ e9 k+ B6 R! L      "Size": 0,0 j0 g9 c5 f0 Z( }) m# c
      "ReplicaPlacement": {
7 Y6 {$ ~( k% C1 b4 m8 f3 ^7 X/ F1 \        "SameRackCount": 1,8 q: m9 M8 ]2 f  C9 f2 H
        "DiffRackCount": 0,* m! p  ?3 q& h" L+ B
        "DiffDataCenterCount": 0
. B! X/ Z& ?# P" ]! O* w5 Z      },
6 B. d: j& n6 A. p) j6 a      "Ttl": {/ f2 ~* Q3 H) d5 J, R+ R
        "Count": 0,& O' R* M; X, v8 Z
        "Unit": 06 d. K: Z/ d% P, Y* _7 W* z. [
      },- @2 T6 g# q8 @$ x' L2 R( N1 F
      "Collection": "",' o! q' [/ ?/ G% l% Q
      "Version": 3,4 m; O+ }) c. J: g
      "FileCount": 0,/ X! X% n, X8 b7 l) q, D& c
      "DeleteCount": 0,
8 O/ b; A' ~# n9 @& ~2 b& [3 b  Z      "DeletedByteCount": 0,$ P. r+ u" s  ^5 |2 J) [
      "ReadOnly": false,: c- S" G2 Q0 k+ I% u/ O
      "CompactRevision": 0,. z' t7 C) E# p9 B
      "ModifiedAtSecond": 0,
2 L% r8 k% w; j! S: N      "RemoteStorageName": "",
: C. H* v8 j2 Z7 d6 e' j. x4 Y      "RemoteStorageKey": ""
; n6 ]2 x' Q/ B, Y    },
$ G' T  B3 @- o/ |6 a, n. u8 ]4 w& y    {# c5 G5 n1 r) E7 x; ?
      "Id": 4,
  l% P: ]/ k" C# z7 E1 {" _% J/ V      "Size": 205147,  B+ o  m  ?* ~0 ^% u( @5 O$ G( A* k
      "ReplicaPlacement": {) B0 w4 M/ E( b7 R
        "SameRackCount": 1,) h! [7 a, Q' Z5 v$ h' {# n
        "DiffRackCount": 0,! K7 S1 _1 H0 I: P( I
        "DiffDataCenterCount": 0# ?6 ~$ p; l1 T
      },
9 P- w$ @. A" b2 V6 N6 o      "Ttl": {
1 ]- _! j" v( _4 P) t        "Count": 0,$ M3 m: B& k# L8 d  W$ Q
        "Unit": 0
& o5 R$ C! g( Y" @      },
, `+ h9 [+ H# c. E: Y      "Collection": "",( K; L+ k* s% {3 i4 V5 a
      "Version": 3,
/ g3 a$ b3 r- z5 `/ Y3 l% H$ l! e0 O      "FileCount": 1,& @5 F, U9 d/ k/ L
      "DeleteCount": 1,
3 ?- s0 T1 j" k8 W) Z8 A( Z8 [      "DeletedByteCount": 205147,7 `* |6 g% Z6 v; g9 O
      "ReadOnly": false,  g- O  Q  G9 \( A: f
      "CompactRevision": 0,8 x9 v8 ~  t0 V- N( [
      "ModifiedAtSecond": 0,1 O4 e2 d. n7 v" |: i
      "RemoteStorageName": "",3 r7 b- ~9 F5 l
      "RemoteStorageKey": ""; M/ _# U$ ?1 q* C# p( Y' A
    },
$ @5 L$ b4 ^- L: N5 ]  [    {9 a! x" Z: {& F
      "Id": 5,
# L5 @+ l1 w8 ?0 |8 K2 W3 l$ J      "Size": 0,
) h8 F& r) \% a8 M      "ReplicaPlacement": {
* t+ w0 X" r5 ^: x) J        "SameRackCount": 1,# B! n4 r+ M- \9 H0 [; ~
        "DiffRackCount": 0,
: k  f! N2 Y! y( g5 a. h' D        "DiffDataCenterCount": 0
% B$ B! ?* ]; u      },% [/ w7 P5 A' P4 G
      "Ttl": {
4 K. n# A3 D) J& L/ T% ^: |        "Count": 0,
" S1 l8 h" I1 z* t6 y, o  s1 A        "Unit": 0$ g% @$ }( n; N2 c1 R  ~% S' R- x
      },
- d: {9 K% F% q: R5 {* e2 X$ k  r      "Collection": "",. M. V: e3 Z/ P% Z' Q' ~7 ?$ ~
      "Version": 3,
) c1 q/ ?6 v6 m9 u      "FileCount": 0,
. A2 A5 \' H: \9 ?  W" k( h, C      "DeleteCount": 0,! h+ V. i) K+ r4 v* B3 B
      "DeletedByteCount": 0,+ u2 l  R9 h8 P! O0 O* H4 |
      "ReadOnly": false,
: j# N! x0 r& Y      "CompactRevision": 0,! O& c/ a9 e0 v6 s, c( @0 t* f
      "ModifiedAtSecond": 0,
: \% f/ B# e# j( l6 Q! {      "RemoteStorageName": "",+ Z% B1 I' u( Z' e
      "RemoteStorageKey": ""
! `* J0 Y, P: |    },
2 {9 b% m2 h* H/ Q9 t$ V    {1 n/ A& z0 y" S5 C) q3 A1 o
      "Id": 6,
8 [! X' P: Q) y) a      "Size": 0,3 v4 T5 |" F0 {4 j0 o
      "ReplicaPlacement": {/ L! ^( R# Y6 o4 l% B; u8 {0 b
        "SameRackCount": 1,& F% e$ Y. G3 U( N' M. \% y& K
        "DiffRackCount": 0,5 p6 y( K$ _0 y0 A. b' u, M
        "DiffDataCenterCount": 0: K& E( t% i6 z4 V
      },2 K" @8 U1 Y/ l, P+ `7 O
      "Ttl": {! G, `. J1 [. \4 g! ]' f' A
        "Count": 0,
2 Q( r$ N6 K' V! M# l        "Unit": 0
5 O- V0 }, h& m, H! E& g      },
# o0 [7 G: ~9 v      "Collection": "",0 A% |% y# e1 j7 `
      "Version": 3,
5 F  F1 z/ K$ @/ A8 ?      "FileCount": 0,
% L* _. f: I) f- X9 m, Q      "DeleteCount": 0,
5 a( m) {& x. I. n# ?      "DeletedByteCount": 0,! S3 P4 P8 ^0 E( O, L2 t+ U9 v5 T% ]5 k, @
      "ReadOnly": false,7 ]/ T5 j6 C4 C# L: c5 m. s
      "CompactRevision": 0,. u7 m9 t0 T/ x/ ^
      "ModifiedAtSecond": 0,3 Y2 o# b4 w0 A$ C; w! n
      "RemoteStorageName": "",
0 T, {: p" K' U7 |/ e3 ]      "RemoteStorageKey": ""& @0 t2 D" T( b: K
    }1 N3 ?( q" i5 N* ?$ J8 a
  ]# l; e4 \, ^* `2 Y$ p) l7 t  H6 n
}( O* G( ^' p0 ]; L1 z2 G
既然空间没有释放出来,那么我们就按官网的说明,手动释放一下。
6 O6 s' M; k& \/ [
& h( Z: D6 \0 k; ^- s6 ]9 s5 ~# t6 L[root@k8s weedfs]# curl http://localhost:9333/vol/vacuum
4 _7 x$ R- {$ n5 N4 P# w{"Topology":{"DataCenters":[{"Free":36,"Id":"DefaultDataCenter","Max":48,"Racks":[{"DataNodes":[{"EcShards":0,"Free":2,"Max":8,"PublicUrl":"10.10.3.163:8081","Url":"10.10.3.163:8081","VolumeIds":"1-6","Volumes":6},{"EcShards":0,"Free":2,"Max":8,"PublicUrl":"10.10.3.163:8084","Url":"10.10.3.163:8084","VolumeIds":"1-6","Volumes":6}],"Free":4,"Id":"rack1","Max":16},{"DataNodes":[{"EcShards":0,"Free":8,"Max":8,"PublicUrl":"10.10.3.163:8082","Url":"10.10.3.163:8082","VolumeIds":"","Volumes":0},{"EcShards":0,"Free":8,"Max":8,"PublicUrl":"10.10.3.163:8085","Url":"10.10.3.163:8085","VolumeIds":"","Volumes":0}],"Free":16,"Id":"rack2","Max":16},{"DataNodes":[{"EcShards":0,"Free":8,"Max":8,"PublicUrl":"10.10.3.163:8086","Url":"10.10.3.163:8086","VolumeIds":"","Volumes":0},{"EcShards":0,"Free":8,"Max":8,"PublicUrl":"10.10.3.163:8083","Url":"10.10.3.163:8083","VolumeIds":"","Volumes":0}],"Free":16,"Id":"rack3","Max":16}]}],"Free":36,"Layouts":[{"collection":"","replication":"001","ttl":"","writables":[1,2,3,5,6,4]}],"Max":48},"Version":"30GB 2.23 318a3d2"}[root@k8s weedfs]#$ X( I1 x- R1 E0 Q' i
前后对比
4 L8 R; |( J  N' T0 G& J% Q  v) G2 v' L$ [& S
[root@k8s weedfs_data]# du -sh *
# A6 x, h& u) `4 u5 x9 q# r# B104K        filer
; e- l) c9 N* X  Y* R0 P3 |' E4.0K        filermount/ @3 ~$ ^" y& B( T# V' z
44K        master
. j2 r0 ]% a& R+ L316K        vola
# j5 _6 Q% D5 L1 k* q4.0K        volb6 R  z& a- a0 U: z+ V7 l0 }
8.0K        volc; |: Y# {. e3 K: D2 A6 B
312K        vold* ]- x  d. c" W# ^9 ^& a: ~
4.0K        vole4 Z1 n4 `% R, c) q6 h. x
4.0K        volf' O4 E8 M6 B. m0 ~5 t7 D. j
[root@k8s weedfs_data]# du -sh *$ F  D0 E7 w* Z; k0 K! p
104K        filer
$ E$ I9 L7 D4 ]/ u7 u4.0K        filermount
! A7 Z2 g' W' Q# s48K        master& U# X- Z/ D/ \( D
180K        vola; S' p  _/ Q% I4 f
4.0K        volb! {* ?% e& F4 J: Q6 o3 P9 S0 v/ i
8.0K        volc
- I6 b, @" _- G# d, p2 d' ?176K        vold; [& ^  M4 T$ A9 h& f
4.0K        vole
0 ~3 h2 O& u5 o8 Q+ W% `4.0K        volf
7 E" i9 G& A" M0 Y7 T8 g, p3 Q[root@k8s weedfs_data]#
* I0 V2 I3 R0 c0 I6 A' @; A& U9 k发现磁盘空间果然被释放了。这个时候再查看一个卷信息! P  J0 w  F3 e+ w: \
' r( s/ Q, R  U1 b1 M: A
[root@k8s weedfs]# curl "http://localhost:8081/status?pretty=y"- z  }. m8 g8 @. d4 r
{: b% Z# J3 h& h6 U: C' F
  "DiskStatuses": [
8 Z  h* L) a) x+ L/ p    {
+ @- q4 I, l2 Q2 N8 T& V/ c5 J/ v      "dir": "/data/weedfs_data/vola",
2 t3 D$ x- K5 @8 H      "all": 214432849920,9 X" r  @1 P, u! D) A' Q4 X
      "used": 5096337408,, i/ j$ @+ c# t
      "free": 209336512512,
7 P; w  m+ o3 n. O      "percent_free": 97.623344,
/ |: c& H; g+ h' `% A% O      "percent_used": 2.376659
! s( ^: j& X$ j2 ]% }    }1 s) D7 Y) o( A5 o# x
  ],$ O5 w* G( C9 V# S. R( ]6 E3 ?3 w) e
  "Version": "30GB 2.23 318a3d2",2 w3 k- @5 E1 G$ V. H
  "Volumes": [
3 x+ P. H8 S) ^; u$ E    {* {7 R* @2 J( t" L9 S3 s5 D
      "Id": 1,0 ~1 x& q/ K) s) P4 `& v. b
      "Size": 0,
! W6 R# m9 _0 q/ v1 J, j4 t4 c      "ReplicaPlacement": {/ V1 `; n6 j7 e" t; F9 w
        "SameRackCount": 1,, F% k0 A3 Q8 W- Z3 F
        "DiffRackCount": 0,+ b7 o2 I1 P8 T* A4 V
        "DiffDataCenterCount": 0, v# G) o* \9 \. y
      },
; {# h7 H$ u9 S) s: W      "Ttl": {
- A9 ~) {9 Q, O/ s        "Count": 0,5 H8 k: @! K! q
        "Unit": 0
/ K  e- M+ n7 F3 ]5 n) d  F; I2 d! N      },
  u  A9 l8 t) e9 W      "Collection": "",3 S7 x1 j$ ]4 F( ~+ |
      "Version": 3,
4 _1 \5 F8 Y: X/ i0 t* R      "FileCount": 0,
. ~3 j) z$ Q8 g$ b  _3 d      "DeleteCount": 0,
3 z5 Z( z' {: Q8 c1 ^( E/ I      "DeletedByteCount": 0,4 j8 J; r* z+ N! }9 h
      "ReadOnly": false,& x7 C+ k- [% x7 ]6 R7 R1 D% o
      "CompactRevision": 0,8 y6 |& k; g9 p
      "ModifiedAtSecond": 0,6 b* @" O! e# q& y, C8 k
      "RemoteStorageName": "",7 j& c( H' x8 y
      "RemoteStorageKey": ""9 P% S5 p# F1 R
    },
; Q; c- r2 I6 c4 C; N    {: F! ]$ u3 n0 `) A0 V( k
      "Id": 2,, A. X: T9 ?8 @& ?# j2 r2 @# L
      "Size": 0,, w" V3 v" W6 ~- N# A4 }
      "ReplicaPlacement": {
( r. h7 m% h. M/ k        "SameRackCount": 1,: E* d$ U0 X( f
        "DiffRackCount": 0,
& |& H7 \3 a/ w/ y9 o% E        "DiffDataCenterCount": 0
. b2 X4 F4 K. @' R% ^      },) c) L: H; s* s+ ]
      "Ttl": {3 r6 |8 L- l4 h5 p! F) T. l
        "Count": 0,
8 Z; r0 ?- j6 s" S: f+ Z0 d$ z        "Unit": 0
  m* @$ e# B' C& S& ]      },
: Q  j) |) S  Y. g      "Collection": "",( P0 o( ?& _, q7 v
      "Version": 3,
% x* d+ @+ K2 y5 q5 W+ U      "FileCount": 0,: g9 m0 _' M6 _2 n$ l  q( [3 c
      "DeleteCount": 0,
9 C- _( s( g+ t      "DeletedByteCount": 0,  J" e7 i. w. K
      "ReadOnly": false,
/ J8 {) a1 f7 o- Y& c      "CompactRevision": 0,7 g, y8 R/ S( D
      "ModifiedAtSecond": 0,
2 R. K- L) h8 e" ~1 j) E( h* W/ p      "RemoteStorageName": "",6 t; o/ T4 p$ G- R
      "RemoteStorageKey": ""1 r  E9 T- f5 I5 f
    },
5 D6 T4 N  n  m3 e0 Z    {1 L! x7 J3 |$ ^9 F
      "Id": 3," {4 u1 O  F% N7 d6 w; P
      "Size": 0,
3 I. L) z7 a1 N3 O1 [: l/ D7 x      "ReplicaPlacement": {" \9 ~& w7 G  ^  b: _
        "SameRackCount": 1,$ _0 G& J2 }& }  Q  z) L
        "DiffRackCount": 0,/ i6 ~; r( e: w- m
        "DiffDataCenterCount": 0
3 L9 z: c- I  I6 z# |) M      },
$ X1 j) G9 i5 V      "Ttl": {- w& C" i& y) D
        "Count": 0,
% G- w2 |' Q  Y% u        "Unit": 0' a( D4 ^  ~5 G3 r
      },/ @& i' Q4 ~& f' z( L
      "Collection": "",6 T& S% Y9 L2 R, y5 U3 c  x* E) j$ R
      "Version": 3,8 L  x8 R3 a/ d# j
      "FileCount": 0,
# a* W; u1 K2 H( k      "DeleteCount": 0," Z. S# b& N4 K7 w$ i' F1 \+ o& p
      "DeletedByteCount": 0,
: ]! U2 m. i% c( z5 `      "ReadOnly": false,
+ [+ I2 c6 C: B( ]      "CompactRevision": 0,( x* |. L( ~2 d" s1 A8 k9 r1 q, g
      "ModifiedAtSecond": 0,
8 U+ W) b) O, {; I' k/ }      "RemoteStorageName": "",
' u; r! F) `1 B4 s+ G      "RemoteStorageKey": ""
5 v! z1 `( g( P( K* {4 S    },. R' K6 J) u8 `) N9 }1 Z0 A7 }
    {
+ V- |" {/ L. p' i- @      "Id": 4,
* e1 N" j1 S2 V! p      "Size": 0,6 h' X8 {) C1 Y2 A% [
      "ReplicaPlacement": {* {5 X; ~$ _& H. {( G& @2 v
        "SameRackCount": 1,
# Y1 @* _8 }" N0 H; i6 H* }        "DiffRackCount": 0,
  P* M* n: P8 u- e. G        "DiffDataCenterCount": 0& k! J2 o+ @7 y# r0 p
      },
( L( l% f( F2 z7 \, U$ x' v  U      "Ttl": {1 p5 v' k" v$ M+ u1 h
        "Count": 0,
/ _4 k! _  S: @5 l0 i& r4 c6 J1 u        "Unit": 0
* r' S/ |6 f3 O" f( a# d      },+ x2 l, p+ h% B9 ?
      "Collection": "",
/ y% Y2 ~( X. s+ b  _2 M" e7 g      "Version": 3,
7 Q+ e1 X# t3 t% |  w      "FileCount": 0,2 B7 B4 o. X; H+ E) ~4 x& {' R
      "DeleteCount": 0,
  F0 K4 j" c& L- v& e6 W7 y( }      "DeletedByteCount": 0,
% c! W& _% [6 w, s1 Q2 k      "ReadOnly": false,
/ v  ]6 H( U: Z' }      "CompactRevision": 1,
$ Y& D; |. ^; v0 \4 I) l  T0 Y      "ModifiedAtSecond": 0,
! a2 A, @. t. O1 j      "RemoteStorageName": "",
6 C: U$ c  R5 H0 a& t$ @      "RemoteStorageKey": ""
2 t) Z- D* ]/ q7 @    },2 o! U5 O7 k# b+ k
    {1 ~1 E( O8 }" T  E- m
      "Id": 5,: V& J3 _" b3 M
      "Size": 0,$ _% R8 }& \  A# ?
      "ReplicaPlacement": {
2 U! V" f3 H5 t% h, f( G        "SameRackCount": 1,
+ h4 Z  Y5 l8 Q7 {, @        "DiffRackCount": 0,
3 L+ i1 u7 q5 C0 I2 E" f        "DiffDataCenterCount": 0
6 K6 `7 w8 _: k* b) m8 l) O      },# h$ K6 E. `# P$ q/ u
      "Ttl": {. X' _) X  j/ E) H+ q0 f+ ?
        "Count": 0,
+ Z7 f8 D2 m; X/ ?/ X        "Unit": 0
. W) D: K8 Z1 ]9 P, V! m      },* X( q/ e. s3 V+ o; u( ?, B0 c/ [
      "Collection": "",
8 ~/ E. }0 p+ y2 d$ t, B0 t6 n      "Version": 3,, T3 d2 d+ e6 z) K
      "FileCount": 0,
! ~; J6 n2 |7 X  ?& m# X, i      "DeleteCount": 0,7 f; X; a, k' _* p6 W1 s2 E
      "DeletedByteCount": 0,9 s) g$ p& t" l2 f6 o7 ^
      "ReadOnly": false,
/ v5 z2 o2 j& S+ q' G$ p* i6 R3 k: ]: L      "CompactRevision": 0,
0 K5 w, N) e3 I9 o$ X/ N      "ModifiedAtSecond": 0,
. O) A+ u# k0 w/ F5 [      "RemoteStorageName": "",
) n. v; b( O& K      "RemoteStorageKey": "", @$ p3 T1 z3 ]1 V! n
    },
/ f* w0 l% b( F2 g" r- f    {/ _- P- L2 v# Z  c* E- v
      "Id": 6,
- |( W* J$ l. N2 f. _% D4 D4 p      "Size": 0,
! j# n& a- O5 |$ u9 k      "ReplicaPlacement": {% l4 m3 f8 _! I0 S7 A
        "SameRackCount": 1,' z; a! L9 Z/ _1 P# V
        "DiffRackCount": 0,
$ y9 x* Q9 ~5 \) m* [! `        "DiffDataCenterCount": 0
7 U. J3 I9 K8 j( f      },
8 ~$ w! u9 _5 [. G# Y      "Ttl": {
0 y! I4 j, G, F( ]5 E        "Count": 0,
0 ^: j* F3 ]; \        "Unit": 0
6 M) ^" [& t( H0 o; a8 `      },
! r& b( ~# S) ^      "Collection": "",5 P2 Q! h8 M, U; t- L% u2 X4 M
      "Version": 3,
# M0 i) Y# t0 ]4 k( G# ~      "FileCount": 0,
0 {5 r) o; _1 c9 F3 |: d      "DeleteCount": 0,0 r* X, Z& n8 a6 D& x
      "DeletedByteCount": 0,
# t2 z8 _$ Y0 ], A! g8 ^. R  H' O7 a      "ReadOnly": false,- w: H. [# Z) c' P" R! i) d
      "CompactRevision": 0,
1 s. D- j1 M( A" l2 x7 U      "ModifiedAtSecond": 0,9 x# D) ^/ o6 B( a! z' c' L
      "RemoteStorageName": "",; j- Q' @: J7 C, P
      "RemoteStorageKey": ""
( c' X5 |8 R* O0 z    }0 Z1 @# C4 K8 s
  ]5 O4 w8 U& J, j" H& F6 g
}[root@k8s weedfs]#
& b  J9 {! O! i' L4 `$ C发现id为4的卷下的DeleteCount也变成了0了,验证了官网所说。
+ C8 d6 ^/ `+ F0 F) q, Y/ f2 r! M+ p% s& m0 P
常用api记录/ D- k1 b! F( [8 d* y
weedfs的使用
0 H: Z: m4 Z" S  Jmaster
, Y6 S* `9 w7 W3 a# J8 @2 l0 A( f申请volume信息:curl http://localhost:9333/dir/assign?replication=001 ###文件上传首先需要请求master, 去分配一个逻辑卷和fid* M, X' s; t/ T' S, {
查看集群信息:http://$IP:9333/cluster/status?pretty=y
; H/ U% Q" r# @查看某个卷的上传信息:http://localhost:9333/dir/lookup?volumeId=3- ?; f  ^- Y: H7 D  D- H: W
上传文件:curl -F file=@/home/chris/myphoto.jpg http://127.0.0.1:8080/3,01637037d64 @3 v9 ?9 S/ R0 `3 n) M
请求一个上传了的文件: http://localhost:8080/3,01637037d6.jpg0 q3 p9 [6 h, x: }7 A6 p  i
删除文件:curl -X DELETE http://127.0.0.1:8080/3,01637037d6
% m4 }( l: b4 |1 {: z/ o% Q查看集群toplogy结构: curl “http://localhost:9333/dir/status?pretty=y”/ v* D2 \& n( x4 l4 ~3 n
上传一个目录:curl -F file=@/home/chris/myphoto.jpg http://localhost:9333/submit
* |2 x. E. Q. D3 B: o强制垃圾回收:curl “http://localhost:9333/vol/vacuum” curl “http://localhost:9333/vol/vacuum?garbageThreshold=0.4”% P' P0 @& A, ^9 M
给某个collection指定volume的数量:curl “http://localhost:9333/vol/grow?collection=staff&count=1”: ?4 `% o9 `0 S& }( _* l

' T( L+ K1 W# T  f, h: jvolume, A  I  w4 C' {; d. O
查看volume中某个大文件被分块的清单:curl http://127.0.0.1:8080/3,01637037d6?cm=false
: @2 r5 c8 [7 B9 H5 Q- F) F查看卷信息:curl “http://localhost:8080/status?pretty=y” ##可以看到删除了多少文件,以及删除的大小。这个对调试还有多少空间没有释放很有帮助
) m, _, R4 {7 y9 K1 u4 X4 l. w) {; _$ M$ M
下面是使用filer的一些api
0 l8 E" Y7 R+ p5 V4 E
3 ?$ h  p" f5 N( E$ c# `" _# POST a file and read it back
) J4 N( W, q' Y/ Vcurl -F "filename=@README.md" "http://localhost:8888/path/to/sources/"
- B8 t3 ]. T7 x; pcurl "http://localhost:8888/path/to/sources/README.md"
. I9 Y- e0 i5 L( V  Z7 E0 S% w
* Z$ t. u% `3 a0 z; a. n( }3 Z, r0 O8 g# POST a file with a new name and read it back
( u5 z6 C  J4 D& U! I  f3 ncurl -F "filename=@Makefile" "http://localhost:8888/path/to/sources/new_name"
4 t* C0 S- B/ A+ y: b# g. j$ Mcurl "http://localhost:8888/path/to/sources/new_name"* V9 ^! I$ h; H, c* i& A

3 N: _9 t; [* l# list sub folders and files, use browser to visit this url: "http://localhost:8888/path/to/"
5 P2 d5 r" B  F  H3 q0 `$ o# To list the results in JSON:1 Y! N2 u2 C1 C+ P0 Q
curl -H "Accept: application/json" "http://localhost:8888/path/to"
: U3 v: F1 O0 O4 @# To list the results in pretty JSON0 O5 Z: i: x+ l" x, Z9 r$ ^
curl -H "Accept: application/json" "http://localhost:8888/path/to?pretty=y"2 {, [: [$ h1 W  F

. W# W6 Q+ i# E+ F3 V* r9 ^# The directory list limit is default to 1000 b% S1 u4 z& T. d" F# w1 Z  }
# if lots of files under this folder, here is a way to efficiently paginate through all of them1 ]* b0 a+ m& l+ {$ y7 E
http://localhost:8888/path/to/sources/?lastFileName=abc.txt&limit=50
, [, f4 c# \2 f4 h( I4 |2 H" b
5 w" N% O1 U' C; }6 m$ x$ z4 \+ n& j9 i$ ^6 _3 B9 O
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:21 , Processed in 0.023012 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表