易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 422|回复: 0
收起左侧

linux系统安装seaweedfs系统

[复制链接]
发表于 2022-9-13 15:39:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
搭建
% V3 E5 U6 K. f4 l9 O- y6 l& H$ Y# `& }9 z+ E* L5 a
有两种安装方式,第一种下载编译好的直接使用,第二种是下载源码进行编译。由于暂时不更改源码, 故使用第一种方式运行
( ?2 T& E6 c/ @) X1 B8 D8 {下载地址:https://github.com/chrislusf/seaweedfs/releases     下载完成后,解压出来直接运行。
) a) R, `+ N( n; J5 _8 E' J相关定义意义说明
% z4 Y% t" N, s; W
/ W- O) D) h9 ]1 b& R: n8 @因为是研究测试使用,就粗糙一点,都是在一台机器上完成6 h' ]2 j; k, g' {! x7 r/ S7 d
计划: 一个master(master只能为奇数个【好像master是以ip来做确定个数的,我做实验时,使用不同的端口启动三个master,在申请卷信息的时候报错,所以这里改成一个】)三个volume 一个filter% y' }! a/ |, a7 Z
$ ]; K# M5 v0 E  D9 c% M- |
从官网的release仓库选择一个版本下载下来,
$ R9 P1 d- U6 A& U' b/ G. i. R* _- C1 e' w# v
wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
  C' e1 Z& t5 x6 t9 J! b. _& z$ {% N/ ^  U
上传到/usr/local/weedfs目录8 h0 w. K: H$ J' h
0 U9 Y( Z$ s4 O- I) d4 V2 ^
mkdir -p /usr/local/weedfs/4 F$ I; ]( W: u; a" z
cd /usr/localweedfs/
/ G9 |6 s" H& d2 u4 c# _; Xtar -xzvf linux_amd64.tar.gz
: v9 G/ C2 i1 V/ y& e7 F$ ]. a得到一个weed可执行文件,weedfs的master 和volume的可执行文件都是它。  e, @5 q1 ^1 Q6 u" ]( [. \
创建数据卷根目录以及各个数据卷目录、master数据目录和filter目录
9 Z% r) p$ h! {: }& {# A8 [. s* |9 ?# @9 e: H
mkdir -p /data/weedfs_data
9 @  @# u7 N9 k  Q! Xmkdir -p /data/weedfs_data/vola
& G- X3 T  F; M* R' M+ t# \, t5 ]mkdir -p /data/weedfs_data/volb7 {1 _$ M- E  _  k+ j, W5 H: [
mkdir -p /data/weedfs_data/volc4 H1 M$ _/ [; ?* K3 a5 D8 |" F' Y
mkdir -p /data/weedfs_data/master$ V' F% B# w' ]# j6 N
mkdir -p /data/weedfs_data/filter
% F- T9 C, t7 o, v% p/ {启动master
9 {) Z3 B& x; P) i! |6 ~
# E1 r6 t( E9 Z' {7 f/ l[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来区分的
# d0 i4 D- U" l: X[root@k8s weedfs]# nohup ./weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication="001" >> /data/weedfs_data/master/wdfsmaster.log &" E) w, e5 V) }6 l5 @
启动完成以后就会生成下面文件和文件夹
# x2 l0 c( y- f( t8 o3 d
* |* V) Y9 v' q. T* b[root@k8s weedfs_data]# ll *( x$ W: Q; ?6 E' j' F- v5 O' }- [
filer:3 s3 u$ }, K: e5 n# W
total 0
* O2 L) l2 T  F2 d. ?drwxr-xr-x 2 root root 6 Feb  3 16:17 leveldb28 N3 d$ u8 |# n
# R2 A4 h2 i3 y# I; X$ W& R' N
filermount:
& m, N# \$ n( Ztotal 0- b6 u& X/ ]# f' V  m
drwxr-xr-x 2 root root 6 Feb  3 15:32 data
$ D% @3 s- T' g& w, G+ f
: {4 V$ @& L; S/ c" lmaster:! a. i$ C* j7 s8 J& L2 k) p
total 167 x( {$ n, M) h) }" k# b* ]
-rw------- 1 root root   28 Feb  3 16:52 conf- ?* w1 d( W9 {$ d4 \" f
-rw------- 1 root root  112 Feb  3 16:52 log
5 p' O, t& l2 I, J+ T8 W7 b3 ^7 Bdrw------- 2 root root    6 Feb  3 16:52 snapshot
0 P# L+ |2 n$ s  u; m; X$ u$ b9 a7 _-rw-r--r-- 1 root root 4513 Feb  3 16:52 wdfsmaster.log
7 U! Z" g0 }3 D% L. b! [6 O
4 X" I; [5 l; o, D/ u& b, bvola:
: V5 c% M' i( G$ F* Itotal 0
: v7 {3 y2 g! p; Q, o+ l" s% V9 N
6 c3 l; h) v3 v$ N7 Ovolb:
5 `5 ~- L# P$ x8 ~- S0 U- I. p7 btotal 0
7 R" {* G7 g4 v. |- H
2 n% K  x4 R6 f( @0 c9 J8 e& Cvolc:4 L6 O  R# v. T
total 0
6 O+ i: P, V8 p- h
* Z; L9 E. `; d; `9 H8 m$ b2 dvold:* P& c# v1 m2 h% M) N4 F$ p- }
total 0
$ \& K# s0 Z4 d6 u4 W6 m. i' x7 a( W+ U; s, ^
vole:
$ X* b& u$ o# Etotal 0
! [( z! x/ R4 f5 O6 m* R' b0 X& U
volf:
# |3 U1 p. m( w: dtotal 0
9 i9 a2 V' e+ B2 R- s& P[root@k8s weedfs_data]# ps -ef | grep weed5 V0 e1 X0 d' `% P! _% b6 c7 \
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) q6 g7 J; |7 B" J" A0 N
root       16190   15473  0 16:52 pts/1    00:00:00 grep --color=auto weed' e$ q0 [9 U/ ~. Q- U: m' N0 s" Q
[root@k8s weedfs_data]#
8 Y  `4 F! E6 k% c$ Y启动volume* J5 ~* z0 l% E

  y4 U+ |0 V* B0 @1 \! }  f[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 &
. |9 I& u! z, V% |9 Y1 S6 X[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 &
, c' s! ~6 _: \; ]* S  `[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 &
! _: V5 |' G4 T9 b5 k启动完成以后就会生成下面文件和文件夹
+ M, N3 E- D! |
  T, t. o, e2 Y$ y[root@k8s weedfs_data]# ps -ef | grep weed6 Y. u7 h1 Z: p0 f( g% a$ U' S
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
/ S6 }7 x& {; ^3 droot       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$ s) r5 P5 H0 K+ C
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
1 C/ T: r, _7 [1 m4 F2 nroot       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=rack36 G0 Z6 s% ]9 d5 X3 B9 M9 N! a! a
root       16378   15473  0 16:56 pts/1    00:00:00 grep --color=auto weed+ ^9 W$ S  m( W' M
[root@k8s weedfs_data]# ll *+ e4 ?' V4 Q$ e- q
filer:
1 O  ]# S7 F( c9 Ktotal 4+ o* n8 e) n& |5 F) B9 C6 c) y
-rw-r--r-- 1 root root 2715 Feb  3 16:55 filer.log+ b& f* F" o" N, l" F7 o: B# _
drwxr-xr-x 2 root root    6 Feb  3 16:17 leveldb2
0 J/ n; N4 i7 M" d9 z3 X: S% ~9 @0 r9 |' `# J8 i# ^
filermount:
) o+ O4 Q7 ^6 @+ c& {total 09 j7 M3 Z8 J2 S1 T( Y: {( G% `
drwxr-xr-x 2 root root 6 Feb  3 15:32 data) J7 F. L5 K: e0 M
-rw-r--r-- 1 root root 0 Feb  3 16:55 wefsmount.log
' N7 q5 L+ O7 d, F& q' Z8 ]
5 ]/ S- t$ _+ |0 gmaster:, j1 \% l8 C$ n+ P
total 24+ c1 V3 I& J. p: Q
-rw------- 1 root root    28 Feb  3 16:52 conf
  S8 o8 \: j; w; `-rw------- 1 root root   112 Feb  3 16:52 log  o* @* M& ]- e; D4 v
drw------- 2 root root     6 Feb  3 16:52 snapshot
3 ^) U* o( i( v5 c6 z/ k-rw-r--r-- 1 root root 14495 Feb  3 16:56 wdfsmaster.log) F3 [# q& M* Q/ _
5 C: ^$ W, R2 u1 T; _
vola:2 k1 S: s5 _7 H! R  r, L( i
total 8
) D" o. K' V6 J  e-rw-r--r-- 1 root root 1267 Feb  3 16:55 wefsvola.log
% Z. R5 {$ J$ g  \! Q-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log
1 ?# q6 C5 g: P  I) ?; Y+ |3 _4 F( c1 h: l7 [
volb:
9 O. V  R/ y9 q, ]$ X5 @total 4
6 ?2 s  d2 i; Y" x( [' V. ~: b-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log0 k, p% E/ x, u; W
8 @, R: [5 Q2 J5 a8 i1 |/ M
volc:) I  Z  H% M' c# e" I
total 8
" _6 C- U; ^6 G% Y$ I" _: q-rw-r--r-- 1 root root 4644 Feb  3 16:56 wefsvolc.log
' ]  i. m) d) y! x. g6 F& g1 c8 h1 R' @  M3 k8 o' c% K
vold:
, O6 Y* a/ C( V0 W2 htotal 42 Z: V% t' U0 d- \8 y' g
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvold.log
) }3 R& B: H  s, A
4 A! c2 h& P4 t) I* E( Vvole:; ~5 ]4 S% V0 w
total 4" R( r4 `4 W) C7 P, w
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvole.log
7 s5 b7 n) q: T6 o: B" E: t2 r" e, H6 \
volf:
" ^% j  u& R) O7 W1 j7 Vtotal 4+ v4 w8 r( E6 h
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolf.log) n% S6 Z, f% B, ^
[root@k8s weedfs_data]#$ \3 h4 g) P$ M& {3 b& p
此时volume下面还没有任何数据,volume server会在第一次写入数据时建立相应的.idx文件和.dat文件: R& v$ ~/ w( }8 S/ V0 Y% o* t
8 Q' p* k+ \# z  }" Y
启动filer
5 H+ Z' i- G$ M- a/ y$ a9 P; A0 F2 D! W7 [( [5 b
文件服务
/ U: ~  v- k0 ~# C" d* p7 J! X, t7 U8 y! I
可选的文件管理器服务可以减轻您的负担,因此您不必这样做。, x0 f) u  y0 H! t4 R
0 z4 v* F0 O3 U; k! n. p4 e9 Q
它通过HTTP或UNIX FUSE挂载将SeaweedFS卷和对象组织到用户可见的路径(如URL或文件系统)中。
+ Z* ?5 T4 y3 s0 z1 r" e6 {
9 M/ f/ L$ ]1 [8 xFiler提供了一个方便且通用的抽象,可用于为现有应用程序提供正常外观的文件系统或Web API,以用于向下/上载,而无需进行修改。7 o2 P: v$ x( u/ B
) ^6 G  H% T( r' V9 w, b; {
可以使用文件, MySQL, redis等保存 filer metadata, 只需要启用或者停用对应的配置. g5 W' V7 B% q5 k4 L: d

1 `: O& K1 u4 B& y先生成一个配置文件,如下图* `' K/ c8 J$ ~: ?% `+ @( s

) p2 U  b/ C" T! J+ ]4 P[root@k8s weedfs]# ./weed scaffold -config=filer -output=.4 g4 r- P, w! _8 S8 J( L# P0 i  R
修改filer.toml,把filer的数据目录指向导/data/weedfs_data/filer/leveldb2下
# R* Z! H7 O& d- b2 u2 C& `  I( H0 i0 C- p% q# @" t: u* W# V
mkdir -p /data/weedfs_data/filer/leveldb2
2 B) j" r4 s7 O[leveldb2]
, k. m' b# j4 t" Q# local on disk, mostly for simple single-machine setup, fairly scalable/ i; D1 Z1 S2 r/ n) V/ [; u" Z
# faster than previous leveldb, recommended.
/ s* U$ ~5 Z; G8 k: G' Cenabled = true; y" |3 c8 x3 r% K5 @
dir = "/data/weedfs_data/filer/leveldb2"
: z% H5 s8 L3 h  G; j2 q1 D7 q& Q然后启动% C: |: ~3 z9 v" s2 u8 N0 E
2 O% u* L, g/ a# d# Y! ^
[root@k8s weedfs]# nohup ./weed -v=3 filer -port=8888  -master=localhost:9333 >> /data/weedfs_data/filer/filer.log &. C5 f5 @/ Y* }& e$ |
[root@k8s weedfs_data]# ls filer/*
) y0 J1 G8 c0 Zfiler/filer.log6 a* p% v/ M% ]6 U9 I
% r* \$ [& P% }9 S6 O
filer/leveldb2:
6 E4 g3 c, q  P' n, }6 o0 w) Z00  01  02  03  04  05  06  07) n6 {6 q$ ?0 U! d5 ]
最后
- N( t; d! a4 |- u( b
, g! f1 e! K5 y9 u7 C. z  _所有的启动完成以后,如下图所示:
$ G; H0 d1 |& ?; P9 d
4 N0 j5 z1 U2 k" V/ Q$ r" _# ]4 b[root@k8s weedfs_data]# ps -ef | grep weed) s; ?1 r  @$ P$ o8 M+ _0 }
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
6 \3 w) i0 q: i+ Wroot       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 ^0 [5 X, x1 a9 Aroot       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/ [4 S0 |( x& o- u
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 J, O1 c1 Q0 m6 W! Q3 iroot       16458   15806  0 17:06 pts/3    00:00:00 ./weed -v=3 filer -port=8888 -master=localhost:9333
& v% w$ G( N+ D8 E7 Y- Nroot       16469   15473  0 17:07 pts/1    00:00:00 grep --color=auto weed
9 [8 M; m2 A" h0 ifiler的mount挂载3 k; v6 [% |4 j' j) i6 |
; v* M7 T+ I+ T7 x
为了方便本地操作,把一个collection里面的内容挂载导某个目录,方便操作
" m) z0 k% P* D; M- b% A8 Y( _/ p$ x2 |3 D" t
[root@k8s weedfs]# yum install -y fuse$ S! X( e7 L' C0 @# W
mkdir -p /data/weedfs_data/filermount/data/ N- {# F$ Z2 l1 n+ [. i0 \
nohup ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/   >> /data/weedfs_data/filermount/wefsmount.log &
8 O* Q! R; s7 X
4 O$ W) J/ x" G* U2 f6 d  N./weed mount -filer=localhost:8888 -dir=~/wz/mdir(本地目录) -filer.path=/(上传的filer中的目录): y' o8 U7 m  A6 n7 F
- D2 D: s! B3 a

. M1 _( {9 f- r0 V5 x' p直接往weed filer中拷贝目录或者文件把wubo目录拷贝到/ 根目录下也就是本地目录目录下/data/weedfs_data/filermount/data 下面
) P4 D0 p4 V# E  D6 [5 d2 G- y' ^9 ?
2 j. S: @0 I* W# v# r  Z0 d! r+ i  o. c[root@k8s weedfs]# ls wubo/
0 z$ Z7 }. ^- Ma  b  c) w: f2 r" c6 V# s( T
[root@k8s weedfs]# ./weed filer.copy wubo http://localhost:8888/
' \  G, M$ C0 i6 W, c% q& Yuploaded c to http://10.10.3.163:8084/1,030dfa7a236 d7 g3 J2 s" X
copied c => http://localhost:8888/wubo/c
& J5 \1 T% I' ]7 [7 a; u3 Quploaded b to http://10.10.3.163:8084/2,02a5ddaae7/ h7 m7 ?9 s; s. w1 q' |
copied b => http://localhost:8888/wubo/b
( D$ C) C! E8 ]- l$ q5 zuploaded a to http://10.10.3.163:8081/4,04153475ab
; z$ J& e4 A+ q# C# L# Kcopied a => http://localhost:8888/wubo/a
6 I6 S% T4 `. T! D; L% Z6 O  G2 vcd  /data/weedfs_data/filermount/data, 就可以查看具体上传的文件
- c8 `7 S# M: U  _- N+ g2 x, \6 k2 O' J4 S
[root@k8s weedfs]# ls /data/weedfs_data/filermount/data
- p* B3 f. }8 rtopics  wubo3 c  l$ K0 V9 r5 d9 X  W9 @
[root@k8s weedfs]# ls /data/weedfs_data/filermount/data/wubo/2 p! U4 F7 V. v. j/ ]. j0 u: @
a  b  c
( N; I( T/ o0 p2 D1 k# ?浏览器查看根目录文件
+ i0 k! g! i1 [0 q+ b, t9 c. E( q: P. `% {1 u1 O- g

, ]. }; e5 P1 Q3 s$ F1 U
$ K: C4 ?8 u/ s7 {测试% M9 L: w3 T" ~" Q
curl http://IP:9333/dir/assign
* y5 W$ [8 h4 V; }0 d{"fid":"4,02d6944eef","url":"IP:9080","publicUrl":"172.19.131.45:9080","count":1}6 t$ u: |( b7 G2 I
关于filer mount的问题4 ?0 W/ d' z4 Y. p6 \
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data本地目录) -filer.path=/(上传的filer中的目录)2 z$ j( D9 @( \/ ~

- H& \. |) E0 R8 L6 xweed mount 像访问本地目录一样访问文件系统,前提是开启了 master volume filer) @+ b; I9 y; W2 |  c
(它使用bazil.org/FUSE,它允许在Linux和OSX上编写FUSE文件系统。在OSX上,它需要OSXFUSE); f9 E% ^) _7 @2 h$ q" }6 _
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data  -filer.path=/home/chris -collection=chris
& ]! f& V% y9 q+ Cweed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data  -filer.path=/
' S4 G8 t, _+ Q6 `  U% J& j1 o关闭挂在需要关闭mount并且手动umont  -l /data/weedfs_data/filermount/data 目录,如果一般用户失败请使用root用户
! N2 w2 x& L" y: H% B
& G; |: ]- n# H$ @- e其中mount只是为了本地操作方便,不想本地操作,可以不使用mount5 N* ]: }3 v" C2 ]

- ]9 k6 _) x4 f) |3 [3 y( @$ K" \使用7 F( X2 V0 y1 r: G# C
上传文件0 V- c: Y0 l) z1 U" o

7 h3 }+ I4 p0 Q5 k# g要上传文件:首先,向/ dir / assign发送HTTP POST,PUT或GET请求以获取fid和卷服务器url【理解:master负责管理卷,并生成要上传文件的fid,并给指定需要上传文件的卷服务器,所以我们在上传文件之前,需要向master请求获得这些信息,然后根据这些信息直接往指定的volume里面上传文件】
. Z  C9 B, j- [* s: rSeaweedFS在卷级应用复制策略。因此,当您获得文件id时,您可以指定复制策略。例如, F5 |) i% U8 B, ~; _

  O5 \1 J2 x$ l& N8 s% ]curl http://localhost:9333/dir/assign?replication=0016 V5 t/ O# ?) X  y8 [+ V+ Q
当申请卷信息时,报如下错误。这是因为我们使用的replication模式是 001,即对于一个needle来说,会在同一个机架下的两个volume中保存相同的文件。由于上面我们创建的3个volume都分别指定了不同的机架,所以本教程目前的拓扑(逻辑)结构就是: 只有一个数据中心(默认的数据中心),包含有三个机架 rack1,2,3。每个机架下各只有一个节点(datanode --默认的节点,相当于一台机器,即localhost),然后这个datanode下面又有一个volume server(创建的,比如8081)然后这个volume又会创建默认
  S5 q6 h+ X) \' U" B5 N! C) v; b# h. k7 L
[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
& X. t( ]. {! L$ t( ?{"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]#
# t8 E# ~. E0 H, ^$ @) j% N* D拓扑结构如下
# g, I! ]$ V: S" s1 b: \4 t6 ]# j+ t" w9 L; P/ p
0 p- p! W9 s9 O8 i
6 F4 Y2 J' n2 e3 w
数据中心(datacenter):包含多个rack(机架)相当于机房! v4 z! P9 m) V4 z5 B
* d  D. `  g& v; m( r; A# ^8 j8 W4 u
rack:属于一个数据中心(datacenter),类似机房中的一个机架4 j" S7 G- M' T+ ^" _" L
5 O# j" \4 F0 d0 D
datanode : 存储节点,存储多个volume,类似机架中的一个机器 weed volume, _( ]' O! V9 ]) M6 c2 ]9 r
5 H1 y' P! ^& o# Y2 j
volume server:逻辑卷服务,多个逻辑卷服务,每个逻辑卷服务(volume server)可以有多个逻辑卷(volume ),默认7个
- _) h3 q" L& z. |/ i* ^
7 w4 P4 w% v8 R0 l* H6 qvolume :逻辑卷,存储needle文件对象8 K6 t  L9 A3 X, {1 |& ]
4 V: ?$ Q8 ]$ b& r) ?" E1 c
needle: 逻辑卷中的object,对应存储的文件
! [5 [& K5 {/ |& P8 |5 j' d: \( {( ~5 \; v0 _
collection:文件集,默认所有文件都属于""文件集。如果想给某些文件单独分类,可以在申请id的时候指定相同的文件集
2 v/ P  z, ]& {% u
2 c6 y- A; ^/ s8 P& pfiler :指向一个或多个master的file服务器,多个使用逗号隔开。 weed filer* g% O- \& B" W4 h: b
9 d6 B, G. [7 s) x4 n6 o8 {
weed volume会创建一个 datanode ,可以指定所属的 datacenter rack和master ,会根据配置存储文件,默认一开始没有volume,当开始存储文件的时候才会创建一个volume,当这一个volume大小超过了volumeSizeLimitMB 就会新增一个volume,当volume个数超过了max则该datanode就不能新增数据了。那就需要在通过weed volume命令新增一个datanode。
$ W* W  x' B. @
/ Y  z7 N  {4 q0 s: A. U按上面的添加volume的方式再添加一个vold
1 o; `1 D* J# v/ M1 b3 Z: r. o" k[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 &
/ @% W$ v( ^$ |+ s9 ?% B* Y并重新申请就能返回如下结果 # h" R' w. w& o7 v( q

: }' x3 Z- x. F( S3 i, }& j& M[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001  F) p7 w4 x) D
{"fid":"4,01c1810497","url":"10.10.3.163:8081","publicUrl":"10.10.3.163:8081","count":1}[root@k8s weedfs]#
" w6 y' [, W$ `$ N1 X服务情况vola和vold 属于一个数据中心同一个机架(rack1)
0 j% z' c$ R( P( G
3 r* |- e" \* w4 b0 ?" Z# s[root@k8s weedfs_data]# ps -ef | grep weed) u7 m' [* E' e2 B" o1 G  F4 J
root       16171   15806  0 16:52 pts/3    00:00:01 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001( m2 C& }0 T, c* C) F6 J
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=rack14 w3 l& O* E3 B  \: o
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
: k8 i$ O) o$ `3 g0 r1 W* o$ Jroot       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
* e* M9 N2 \  p2 Sroot       16458   15806  0 17:06 pts/3    00:00:01 ./weed -v=3 filer -port=8888 -master=localhost:9333
; I8 p: k3 S: ]" `8 vroot       16811   15806  0 17:11 pts/3    00:00:00 ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/
8 a3 G  Y$ X" w* a. ^1 hroot       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=rack17 `& |$ b8 ~4 \, I3 [2 P! C
root       16850   15473  0 17:22 pts/1    00:00:00 grep --color=auto weed
* l: A8 F* n0 d8 A1 z 这个时候看一个各个volume下的情况,如下图
9 i" d. Z5 S3 h' ^, z3 F, U因为vola和vold同属于一个机架rack1 而replication策略又是001,所以vola和vold都有数据,并且数据是相同的两份。+ ^0 @( w+ p" o* Z' a3 o3 T
- v! z# z5 G6 Z; r2 W* X1 a
[root@k8s weedfs_data]# ll vol*% b, f& @. t  O; J& N: _' \0 ?
vola:( b& ~0 u: ~. a- T+ ^, \( O
total 64" l3 F) D, c- ?1 F9 d4 d' V
-rw-r--r-- 1 root root    8 Feb  3 17:23 1.dat
( d  K# m$ D8 |$ o* S-rw-r--r-- 1 root root    0 Feb  3 17:23 1.idx6 ^& R# N" I5 s: z% K1 X
-rwxr-xr-x 1 root root   57 Feb  3 17:23 1.vif( }" t3 U6 l1 c; v
-rw-r--r-- 1 root root    8 Feb  3 17:23 2.dat
, H7 `1 g* H) x: y1 w& D$ M+ K-rw-r--r-- 1 root root    0 Feb  3 17:23 2.idx3 ?3 v6 W# A2 S3 O
-rwxr-xr-x 1 root root   57 Feb  3 17:23 2.vif
- Y8 t) Q" y* g* }+ b3 c-rw-r--r-- 1 root root    8 Feb  3 17:23 3.dat
+ H! b- q+ m% [+ t' N-rw-r--r-- 1 root root    0 Feb  3 17:23 3.idx" R- {5 x5 r0 c# E& z
-rwxr-xr-x 1 root root   57 Feb  3 17:23 3.vif
  ]% R9 P3 L5 V5 g( k8 d-rw-r--r-- 1 root root    8 Feb  3 17:23 4.dat
) S  T/ w; k! e+ _8 V0 x-rw-r--r-- 1 root root    0 Feb  3 17:23 4.idx- N0 Z- k9 r% J. f
-rwxr-xr-x 1 root root   57 Feb  3 17:23 4.vif; t! W$ \9 E5 G4 L
-rw-r--r-- 1 root root    8 Feb  3 17:23 5.dat: s4 T0 E4 Y6 @! e- C0 H
-rw-r--r-- 1 root root    0 Feb  3 17:23 5.idx* [0 F1 B% m: {) p
-rwxr-xr-x 1 root root   57 Feb  3 17:23 5.vif
% t3 y; G3 n: B" o-rw-r--r-- 1 root root    8 Feb  3 17:23 6.dat
5 J+ ^) ]) K6 z* I$ Z2 N-rw-r--r-- 1 root root    0 Feb  3 17:23 6.idx
- E4 C3 B" l+ Z- O# @  z$ K" ?-rwxr-xr-x 1 root root   57 Feb  3 17:23 6.vif5 G$ h2 D$ n" ~" e+ c$ Z. d
-rw-r--r-- 1 root root 8569 Feb  3 17:23 wefsvola.log$ l8 H5 n' b) T2 A; C3 @
-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log, W4 ^6 n% h( [. c8 l  K: t6 @& U
4 X( N& [2 S( S8 x9 }% r7 Z
volb:3 Z5 q# N) \, ~' p1 W
total 4
: Y3 W  a9 g/ ^6 A-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolb.log1 ^2 l$ Z3 O  S. C, }: t

5 {7 S! T& t0 `- I3 q, u+ Wvolc:5 S1 r  U* c1 x( N% d8 l  s/ ~
total 8) x! J* n, d  Z% d' v2 T
-rw-r--r-- 1 root root 4644 Feb  3 16:56 wefsvolc.log2 Z8 N+ Z4 D/ R, U7 s6 J+ |

# U# w# w9 k, }* d6 q2 Q6 Rvold:5 c; V" z7 ]. P5 f
total 608 d' ~9 G- x2 n2 ~5 f3 ?- S, B
-rw-r--r-- 1 root root    8 Feb  3 17:23 1.dat
: |' S: p0 J/ ~1 M-rw-r--r-- 1 root root    0 Feb  3 17:23 1.idx, C; i2 W+ b' g
-rwxr-xr-x 1 root root   57 Feb  3 17:23 1.vif) ]! e% `' e8 ?3 U. U
-rw-r--r-- 1 root root    8 Feb  3 17:23 2.dat& d8 V$ s; C, W& B/ @' Y+ R
-rw-r--r-- 1 root root    0 Feb  3 17:23 2.idx
  ?' A6 W& g8 x; E-rwxr-xr-x 1 root root   57 Feb  3 17:23 2.vif
% u0 e# G6 c7 d; u-rw-r--r-- 1 root root    8 Feb  3 17:23 3.dat
! s7 z. \/ u$ P) E-rw-r--r-- 1 root root    0 Feb  3 17:23 3.idx
" b! o' M6 T+ x-rwxr-xr-x 1 root root   57 Feb  3 17:23 3.vif
. a' K$ z2 O+ W. \, F# z" ^-rw-r--r-- 1 root root    8 Feb  3 17:23 4.dat) w- C1 B! c/ r8 E8 C) c
-rw-r--r-- 1 root root    0 Feb  3 17:23 4.idx
, a  a/ [% q2 t1 h1 A( ~-rwxr-xr-x 1 root root   57 Feb  3 17:23 4.vif5 H# c) y+ V( S7 f
-rw-r--r-- 1 root root    8 Feb  3 17:23 5.dat" G6 }. i9 i' m! n
-rw-r--r-- 1 root root    0 Feb  3 17:23 5.idx
0 [1 l) w& C0 e! |% {' ]2 Q-rwxr-xr-x 1 root root   57 Feb  3 17:23 5.vif
7 C# f* s& m4 i  X, r3 L( g. o3 \2 I-rw-r--r-- 1 root root    8 Feb  3 17:23 6.dat* z- o' d) w+ }/ L0 G
-rw-r--r-- 1 root root    0 Feb  3 17:23 6.idx/ O2 a* ~) R' Y6 x' J. x, N2 S" Y! R
-rwxr-xr-x 1 root root   57 Feb  3 17:23 6.vif
6 o: D( E5 W; j+ c- A-rw-r--r-- 1 root root 9604 Feb  3 17:23 wefsvold.log$ j* G. h* w  l( l+ ^4 a( N$ P

3 A* K( i0 f8 L3 Uvole:6 ~, H6 _6 m! U7 Q+ X& p8 R" Y
total 4
, f- y, L7 \# A- D: m-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvole.log- `; ^. N/ \& V  q! P- \

- }  v- J$ W8 @6 Svolf:5 {; i8 k& K6 \
total 4
. D. F8 ]- n, o2 p/ Z-rw-r--r-- 1 root root 1151 Feb  3 16:55 wefsvolf.log" [5 `3 P. d: l) K) N" J5 D
[root@k8s weedfs_data]#/ C4 W/ }8 H% V8 G1 D8 z
同样的操作也rack2和3也创建相应的volume% Z- W3 Q+ W, y3 j% v( e

9 j0 L# h% f: c4 N" s! u; }7 j; @6 ?[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 &8 O$ }; G4 x, C7 r$ Q
[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 &! y& h5 n' S' t$ `% e( ^
服务启动情况
" z1 }( A+ C  z
, G. X4 v  H( X[root@k8s weedfs_data]# ps -ef | grep weed
3 b3 g) k. i" L1 g" Yroot       16171   15806  0 16:52 pts/3    00:00:02 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001
# L7 O. y! d& ?: R7 P% w5 Nroot       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$ I/ h0 ?! a( S" P8 Q) C* I
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
+ N8 Q, G% U( ^* M% _) h) croot       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
6 U. Z, w) [+ }8 j) w% o# D0 M8 h3 p' Aroot       16458   15806  0 17:06 pts/3    00:00:01 ./weed -v=3 filer -port=8888 -master=localhost:93331 n( d3 I% C8 g- |, j0 f5 @
root       16811   15806  0 17:11 pts/3    00:00:00 ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/
' s2 H% H  m5 H% V  Groot       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
& C; O- c8 B7 t+ S; Yroot       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# i" U2 h* M. _$ q
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' Y" K% W, k9 r, q5 q( H& m0 T: U
root       16873   15473  0 17:26 pts/1    00:00:00 grep --color=auto weed" i5 a9 s7 v/ ^2 i2 \3 {- C( @
上传文件/ H, k2 t5 X! t" x& e
上传文件之前* u5 Y0 a  I% N( \% \' {( M
/ g7 h" W' `$ U
[root@k8s weedfs_data]# ll .
; F9 z( C2 U( R! H5 G8 q- d" @total 0
5 d* Y& s4 [+ }6 `/ r' }$ L1 Adrwxr-xr-x 3 root root  39 Feb  3 17:06 filer
$ O% |1 q, h8 q1 v% d) vdrwxr-xr-x 3 root root  39 Feb  3 17:11 filermount( V+ v3 [- K) K: r$ Y: |
drwxr-xr-x 3 root root  67 Feb  3 16:52 master  s& L" B2 F; N7 t
drwxr-xr-x 2 root root 280 Feb  3 17:23 vola
* v/ H& I# [: ]" wdrwxr-xr-x 2 root root  26 Feb  3 16:55 volb
% r0 l2 @- x0 X' S1 mdrwxr-xr-x 2 root root  26 Feb  3 16:55 volc1 |! A  T& ~+ Q* h  C
drwxr-xr-x 2 root root 260 Feb  3 17:23 vold
* e! I% z$ O. Y" s+ f. B7 n6 kdrwxr-xr-x 2 root root  26 Feb  3 16:55 vole
& U. p$ ~2 L+ i6 ^1 Gdrwxr-xr-x 2 root root  26 Feb  3 16:55 volf' v# N7 L5 d2 W: I. Y
[root@k8s weedfs_data]# du -sh *3 F. I$ y. F3 S3 w# b
104K        filer
' f! Q/ t9 X2 |, U% D0 l5 o4.0K        filermount) T0 a3 c, Z" k4 K2 T
44K        master4 a+ n4 r4 A6 m# B( r' T) U' N
76K        vola
1 c- H) _" K2 x3 Z0 O  z. y5 B4.0K        volb0 [8 r1 C2 B4 ]
8.0K        volc
3 o! T- C% r/ D) ?( J. Y! V76K        vold, Q/ z3 V8 y$ Y
4.0K        vole2 }2 h2 B" j4 G( W  G' j
4.0K        volf) Q/ Q7 ?# }- ~9 i. X& B  S
[root@k8s weedfs_data]#" D3 Q( @: T" y; N- E9 O; f) M
上传完以后,再测试了一下下载8 p) B) g8 Z6 d$ p
- _) Q- E5 S0 l8 M7 O
保存文件ID
5 g6 J& |$ M6 q: q: M现在,fid在这种情况下,您可以将4,01c1810497保存到数据库字段中。0 N$ A1 K1 i( N1 I

# @$ C' A+ l5 D, ?开头的数字3表示卷ID。逗号后是一个文件密钥01和一个文件cookie c1810497。
+ A& V, Z& `6 y5 ]% q% I/ V6 m& j4 g7 l% O2 [
卷ID是32位无符号整数。文件密钥是一个无符号的64位整数。文件cookie是32位无符号整数,用于防止URL猜测。7 ^0 p( r6 N1 @8 o
7 Z% ?% y; `: i9 H$ m
文件密钥和文件cookie均以十六进制编码。您可以使用自己的格式存储<卷ID,文件密钥,文件cookie>元组,也可以将其存储fid为字符串。; J5 U! W- A0 Z0 u$ r& r

, C2 c, [& U5 b6 E9 d; M如果理论上以字符串形式存储,则需要8 + 1 + 16 + 8 = 33个字节。char(33)就足够了,如果还不够的话,因为大多数用法不需要​​2 ^ 32卷。
+ L* k1 }$ h# }; n0 Y2 f1 H$ q3 l" f& }! I1 B6 }+ v
如果确实需要空间,则可以使用自己的格式存储文件ID。卷ID需要一个4字节整数,文件密钥需要8字节长数字,文件cookie需要4字节整数。因此16个字节绰绰有余。6 A1 Q" |) e9 d$ v! \4 m' S
  ^' Q& k$ f8 h: v0 g; G5 H6 W, z" K
[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
3 V8 h2 [0 m$ n1 ~# f2 d: c{"fid":"4,01c1810497","url":"10.10.3.163:8081","publicUrl":"10.10.3.163:8081","count":1}[root@k8s weedfs]#; v# ~- C8 s' a2 j- l! v
[root@k8s weedfs]# curl -F file=@acme.sh.tar.gz http://10.10.3.163:8081/4,01c18104978 Y; N$ n0 M+ s) Q
{"name":"acme.sh.tar.gz","size":205121,"eTag":"0e2e8219a406a0cb817f24716caa9432"}[root@k8s weedfs]#$ J: ]& P- N9 {+ |$ C7 i+ {$ N
下载:
- ]3 s- m  Z" Q8 O0 }6 ?7 u+ k, h! T+ N0 a3 w4 ^  b4 j
[root@k8s weedfs]# wget  http://10.10.3.163:8081/4,01c1810497: B$ w8 k1 J1 ?" h+ R0 D3 U
--2021-02-03 17:29:44--  http://10.10.3.163:8081/4,01c1810497/ X3 E' e# v* W' K  F3 T0 l
Connecting to 10.10.3.163:8081... connected.
" G# C) v: C# [" M. o. T6 s( A6 jHTTP request sent, awaiting response... 200 OK% K6 o7 m) b- y$ p! Y1 Z
Length: 205121 (200K) [application/x-gzip]
. V6 x9 n2 e% OSaving to: ‘4,01c1810497’
3 d( `3 Z- X0 E* Y
) U7 F' J' t( n$ @# d4,01c1810497                                              100%[===================================================================================================================================>] 200.31K  --.-KB/s    in 0.001s  
7 G# v; O- C3 ~' X; ?
- Z8 h- X, E0 I; k) |/ K1 X  ^2021-02-03 17:29:44 (249 MB/s) - ‘4,01c1810497’ saved [205121/205121]7 u* r; \# R4 v' m2 L! U. w

; Z0 q& I# z  B" Z) a" {[root@k8s weedfs]# ll
5 T8 [  l/ X. v) w; V# X: s6 Ktotal 70368" O# s  w! ~, ~! V
-rw-r--r-- 1 root root   205121 Feb  3 17:28 4,01c18104971 |* R2 f  C* x! G$ |
-rw-r--r-- 1 root root   205121 Feb  3 16:11 acme.sh.tar.gz
1 }& \. R$ c) ^' z. F$ m-rw-r--r-- 1 root root     5718 Feb  3 17:04 filer.toml* x; |+ H5 d% D# ]4 |. T! ~& ^( x
-rwxrwxr-x 1 2000 2000 71629836 Feb  1 12:50 weed
% ~. O# C  i' b/ I3 V. W) `9 q1 W比较上传前后卷空间大小变化,可以发现,卷空间增加的大小正好等于上传文件的大小% ~- C+ P& \6 Q8 Q! }! }

  i3 Y* O; M) B7 Z[root@k8s weedfs_data]# du -sh *
3 |. k0 t( g( L) c, ?104K        filer- D3 K) w# k2 \2 h* X
4.0K        filermount7 Y! D9 D; i  Z3 m9 P
44K        master
5 q/ p$ ?$ U) C' [) b76K        vola
" D3 h2 i1 R' M! E4.0K        volb
/ S* {: N! t3 u8.0K        volc- X6 s" s7 w' G* f8 o' ]! ]( P% F* x
76K        vold
" ]- Q% x% U2 }4.0K        vole
. t! }- m* ]+ K+ r# o( i4.0K        volf
4 v1 s3 a! }  G, U* Z& s# W  B5 g[root@k8s weedfs_data]# du -sh *
4 x" @5 q5 s) T/ l4 c104K        filer2 Y, |$ e3 u* L, b. V
4.0K        filermount) \6 r- V  O: A* v3 g: Z
44K        master
9 ^* v1 e* n2 N' V288K        vola
0 k4 a% Y3 |, ]; |) P! ^% H! M4.0K        volb7 x8 V; r! C1 ~8 z, m+ G- H) u
8.0K        volc* R6 h8 Y. |1 D: I9 R
284K        vold
" N& v5 s7 N, [0 ]& S% s4.0K        vole3 I- ]* ?. r! w4 M7 B; z
4.0K        volf
) ?( e( f& k" b2 }  t6 Y" J删除文件:- N  m  A! ?3 |6 h6 {( Q8 m
因为weedfs对删除文件,磁盘空间释放需要额外的操作,这里做一下测试,验证一下/ Y0 C7 ?" Z6 [! N( @
调用删除api 删除刚刚上传的acme.sh.tar.gz3 M, T$ H* [; ]( U3 s7 U

* W! t: H# d; a: j5 [2 @& @[root@k8s weedfs]# curl -X DELETE 127.0.0.1:8081/4,01c1810497
1 `$ {& m6 u& O{"size":205147}[roowget  http://10.10.3.163:8081/4,01c1810497
: s$ v0 L* b9 b' ?/ @* F, m5 b--2021-02-03 17:34:19--  http://10.10.3.163:8081/4,01c1810497/ h& [- q1 T* Z$ ^
Connecting to 10.10.3.163:8081... connected.3 b! o0 A/ E+ ?: g! c( K- a
HTTP request sent, awaiting response... 404 Not Found
8 q8 A8 P' Y/ N+ y7 h! F2021-02-03 17:34:19 ERROR 404: Not Found.+ Z; J: c$ S9 P4 ^; H2 X! K6 t) W
删除在wget 404 说明已经删除,但是果然如官方所说,删除完以后,并不会释放磁盘空间. Z& f' m% [# M, ]3 v
  L( E8 _% `- ]1 u  R
[root@k8s weedfs_data]# du -sh *+ M, q# ?) q1 i* g7 @" M
104K        filer
1 a& ]1 L; T# D( D5 Z! I( t7 b0 S4.0K        filermount- ~& N. I; o1 v& }4 s
44K        master1 Z) b7 Q- z3 ]2 ^* Y
316K        vola/ J5 G" D8 h* s% g1 w% g
4.0K        volb7 v  k  l+ p5 b- [; f- `
8.0K        volc+ D) I4 I, |& u4 w# z: B9 C* i8 y3 T
312K        vold2 r. `6 {* u# s: |- q
4.0K        vole
. r- ^% H- j: z' X$ e4.0K        volf
8 m; K/ t/ p; m4 z* E) a[root@k8s weedfs_data]#
1 U( c9 c. m  g# k% ^, S使用下面的api查看卷状态信息,可以看到,id为4的卷文件数目是1,因为我删除了id为4的卷上面的文件,所以下面id为4的卷信息显示"DeleteCount": 1。 (有个疑问是,replication为001的模式,为啥没有看到其他卷上面有删除记录)
$ g5 Y$ `- `' v/ h0 ]1 I' ?
& b4 _8 m6 ?$ j% Z+ Z$ A" {& L[root@k8s weedfs]# curl "http://localhost:8081/status?pretty=y"( M% b, j0 M4 T4 m' ?8 e) ~
{
/ W2 F  z; X  U; D2 U+ D  "DiskStatuses": [
( c" S8 ^! `. n) E+ |* c5 M    {$ B: B% ?2 ^+ n2 A4 Q. w$ I
      "dir": "/data/weedfs_data/vola",
) F2 \  g* T% K, U" ^' m      "all": 214432849920,
& }2 j9 R" F, @  u5 {8 ?; i! @6 R      "used": 5096587264,  v. Q: i$ y- l; B
      "free": 209336262656,) u% l( X* @3 _2 T
      "percent_free": 97.62322,
8 J3 O1 v  \0 G& c! @& i1 W0 Q      "percent_used": 2.3767755
# ^- |9 [5 D. Q0 o$ E8 W    }
: @; J5 p( s7 j. M+ M. K" O  ],: `8 X0 C8 o4 T
  "Version": "30GB 2.23 318a3d2",
: x- u- R; i6 `! F2 d. u  "Volumes": [
6 f: l: z! f% f    {% i% g# M( m4 c9 O! I8 {
      "Id": 1,3 D5 L1 W) k$ `! z; H* J! L. Y
      "Size": 0,
  w1 u/ a% y3 \7 G      "ReplicaPlacement": {
- V- m, j% F6 B) M  ^  }( g) ]9 G. X6 \        "SameRackCount": 1,9 \! u2 t8 R7 l
        "DiffRackCount": 0,% Q7 l$ [2 K1 p+ R9 e3 T5 f
        "DiffDataCenterCount": 0$ H) _2 \" ]5 D0 S4 F; F( o
      }," x% U; \% c3 g( m, K( R5 T; E0 G4 ]
      "Ttl": {% g, y- i) b' ^, P! C$ [2 o
        "Count": 0,
2 d* g6 y$ |4 Z        "Unit": 0
: i/ A3 G7 w9 u/ N4 s      },2 j# j( \# ^! M) O( U
      "Collection": "",: M0 C) b8 }( n+ ^
      "Version": 3,
* M4 i. o2 R  D  n- X; Q      "FileCount": 0,
6 Z3 j1 B8 c4 Q1 t. @& {% ?      "DeleteCount": 0,# B/ q" a6 b+ a+ P
      "DeletedByteCount": 0,
+ ?( v* w5 L; `: X9 l4 y( E      "ReadOnly": false,
- H; Q2 U1 ^% {' p4 Z4 f, ?* G, }      "CompactRevision": 0,3 L% `/ x. h4 g3 r9 e0 F
      "ModifiedAtSecond": 0,
' _8 Z+ ]) f) r7 T. F) v# w      "RemoteStorageName": "",1 r8 y5 b7 A+ b* A% r
      "RemoteStorageKey": ""0 Y" v2 |* c# S' A( _
    },
5 F4 c. ~8 @) x% r1 A    {
: N6 O" q% |/ O$ l( P: O) L+ S% s      "Id": 2,- r# }( Q! q* z
      "Size": 0,. Y* Q* {0 V, d5 X
      "ReplicaPlacement": {
- i3 d, _' X' T) J, Z        "SameRackCount": 1,
7 r! b7 w* R2 d5 e/ Z/ O" E        "DiffRackCount": 0,5 |3 d5 {: u3 R' B' y0 Q
        "DiffDataCenterCount": 0* \* b1 v2 K6 G+ M3 P( n
      },6 {4 {, `2 [4 ^% t- Z  X
      "Ttl": {  l% Y+ a0 M2 Z
        "Count": 0,
* ?6 O4 J, R' U$ M: T5 R$ t& L- s5 b% E: y        "Unit": 0
* K) F( k: r, G' U' m1 o      },
& Q% w- n  D; c( H" Y4 y+ R      "Collection": "",
) F" P( Y5 p1 O0 q      "Version": 3,
( v0 a# Z: _! o      "FileCount": 0,( E4 t8 Z- p; F9 w, w* `" w7 o
      "DeleteCount": 0,$ K% }0 p+ H! g  z0 k
      "DeletedByteCount": 0,6 _4 U8 ~2 W0 ]
      "ReadOnly": false,# F& _3 Y$ W& }" G: m
      "CompactRevision": 0,6 |  f! ]2 J! t; c+ ?4 ]
      "ModifiedAtSecond": 0,
6 L9 o: z2 f( o$ E( Q1 c      "RemoteStorageName": "",& z/ \4 j& d' ?$ g* D" ?
      "RemoteStorageKey": ""
# d: I. N6 T7 `+ e8 t% e# S    },& }% \& O3 c5 g* g7 }2 w
    {" m: L# b! e) F. |
      "Id": 3,
+ g$ W6 v* F+ u1 Q" C+ S+ X      "Size": 0,
7 Y; F8 t8 S( R# ?5 k% p6 l. N+ d      "ReplicaPlacement": {
1 p$ l0 E8 ?0 ~$ q0 x        "SameRackCount": 1,
- k. x; |& [4 s. k' [/ J6 T        "DiffRackCount": 0,
, }  p6 J; D3 l! z; A5 ]9 [0 ~' x        "DiffDataCenterCount": 0+ t0 p3 W1 I4 K* Q5 g0 F" D+ H' t" a
      },
: b+ D1 y9 w! C8 B( |      "Ttl": {
  W" M! V: x* g7 N7 W! g( s3 l        "Count": 0,( H( I  v5 i. R6 `; z
        "Unit": 0  u7 h* a- d" @
      },6 L+ O5 Q/ n: p+ z/ \  |9 f0 m
      "Collection": "",0 Y- Z4 V/ Y* L" b" O; }8 n9 e1 P
      "Version": 3,
% G: O( i. [% z) ^. i) R: H      "FileCount": 0,
1 }( X% N2 M  y7 A1 G& A      "DeleteCount": 0,
: T# i& u, I7 W$ L/ Z! N+ M  y      "DeletedByteCount": 0,
3 H7 K) |; ?; P      "ReadOnly": false,0 J% [/ j1 w2 j. Z$ l  K
      "CompactRevision": 0,8 V( I! {1 }4 _9 E4 ?
      "ModifiedAtSecond": 0,0 \( g5 y! O3 J3 J9 |
      "RemoteStorageName": "",  U. d2 u, M' `! j$ A# ~; w
      "RemoteStorageKey": ""% o& C. y; {" \% }
    },
5 P. h+ @" T- o, X. j/ M* j/ b    {
$ u8 F0 f% B, `  g      "Id": 4,0 c( h; [9 d2 l, e- s, r
      "Size": 205147,1 u% W* p- k* F9 J3 S+ P; ?
      "ReplicaPlacement": {) P" R- A4 c. ?+ b: b+ t  p! l) i
        "SameRackCount": 1,0 [& r2 \$ E4 X+ f' |1 J: x
        "DiffRackCount": 0,- [8 c9 [7 p5 u# ^- ^1 j
        "DiffDataCenterCount": 00 X6 @: e" k$ `6 l9 ?2 l8 M4 H
      },- U! e. l( n) |% S1 j) H2 Z4 ]5 L
      "Ttl": {
+ j7 o8 U! x! M4 t        "Count": 0,
# W$ A0 o" g4 ]; j8 W0 o) M        "Unit": 0. i8 Y3 o9 ?3 C
      },; |; d7 X' x. j( G
      "Collection": "",4 a, I" g/ }# ^' H
      "Version": 3,
" I# K; x0 _( f* d) T2 l! _      "FileCount": 1,
/ \, x7 [  {! n- {& P. k' c* ~      "DeleteCount": 1,0 a4 u2 _# E1 X5 R/ P0 N4 b
      "DeletedByteCount": 205147,! C- |! u& [% `( X  B* r0 Q. O. a4 z
      "ReadOnly": false,
  u+ O* y$ @# Q6 R      "CompactRevision": 0,9 m( s  }; V9 F, }0 V2 o& \( L1 h! y9 w
      "ModifiedAtSecond": 0,# e9 T5 ?1 B7 g; O9 b  k
      "RemoteStorageName": "",8 c( N$ D1 n+ H$ I
      "RemoteStorageKey": ""# K0 C" ?2 i8 u8 q6 P/ [8 J" p0 k! m
    },! Y6 k5 C- f9 {/ j" ^
    {
, ?# X0 }# k* }& K7 ?4 r! r      "Id": 5,
. Q3 @! ]  _, x) Y- O/ r; l: O      "Size": 0,: V, w- D& S, }$ n- u  \6 N
      "ReplicaPlacement": {
, M" s+ F3 F0 C3 I: R        "SameRackCount": 1,( {/ O$ o( [, p
        "DiffRackCount": 0,% e* |# k, L* s- m" G& `
        "DiffDataCenterCount": 0
. ^# R, f$ C# d0 h  J      },3 `% U9 C6 j3 P3 s) d% p# M( ?
      "Ttl": {
2 e3 S6 m3 i2 F& B  |0 ^        "Count": 0," U8 A8 c( t! B$ {. @; p
        "Unit": 0; g" v) j2 i& u3 ^. ^4 i% m
      },
, D( b  X8 O( B; G- M9 s      "Collection": "",
7 V% p8 J4 T4 b  A. w" C5 S2 O6 X      "Version": 3,+ x' B# F8 H% V4 `! V% p" ^, O& j
      "FileCount": 0,
! f- |# U2 c9 h0 o) h      "DeleteCount": 0,
2 C, u6 m) [: i0 X: A      "DeletedByteCount": 0,+ u( B/ v# g4 H! w6 ~
      "ReadOnly": false,
$ j) L. G9 P6 M      "CompactRevision": 0,' Y$ g; x# k) Y, V) r: E
      "ModifiedAtSecond": 0,6 [+ k( _, l, L9 m4 }% _+ Y1 |7 P
      "RemoteStorageName": "",7 J' f9 f  X0 v8 I
      "RemoteStorageKey": ""2 l) f# L$ ^  f9 I1 _$ b6 V- m
    },
2 }6 S: ^6 I% H2 Y. Q+ i+ n    {
  c- B8 H" ^- U; R. V/ b" S      "Id": 6,+ q0 r$ _* a' x
      "Size": 0,
, v& w' u, X; d. p4 U/ M2 a      "ReplicaPlacement": {+ i- E+ `5 J: E: \  k
        "SameRackCount": 1,3 B; p2 A% M- Q
        "DiffRackCount": 0,
" I8 `7 v8 g4 u2 b) v& h- @& d/ I        "DiffDataCenterCount": 0
1 x; f0 H0 V! i0 k      },) G9 D# @, `  t+ ?8 i, k
      "Ttl": {* W0 ]0 {5 H8 q5 l: l6 y. F
        "Count": 0,
6 }* g$ C# K1 p5 ]  E2 z  \        "Unit": 0
" \- }3 H# K) ]3 l  y      },; b1 _- L' ]3 S* f/ o( r; b
      "Collection": "",9 w6 J8 t9 ?( f* ~$ U  v7 w% ?! n8 Z+ p
      "Version": 3,
4 |1 t& w; e( ~5 @+ g. J+ `      "FileCount": 0,
  C5 ]1 w; p/ y7 @1 F* b2 h      "DeleteCount": 0,
' }6 q$ ^0 B9 k. c% J      "DeletedByteCount": 0,  ], L' B- e: A+ z( J
      "ReadOnly": false,% F' G& ?6 N, T3 p1 W. s1 `# f1 H
      "CompactRevision": 0,
5 ^0 X( L6 \% I5 R! E      "ModifiedAtSecond": 0,2 G: m6 ]) X$ q" E) m: y/ Q/ c
      "RemoteStorageName": "",
- ^6 R  I6 X; S3 k9 y      "RemoteStorageKey": ""
$ _0 _8 K6 I) T- s+ g/ W! ^    }5 m& t  v" s2 `+ g
  ]  f# V* Y3 c3 r& n0 w$ W: M. f
}1 X2 E% C2 `% _/ t# o) j
既然空间没有释放出来,那么我们就按官网的说明,手动释放一下。  b" D1 k1 o) f! m+ A
' L, x" L# u' i2 b% U% E+ c
[root@k8s weedfs]# curl http://localhost:9333/vol/vacuum! s% v" A+ A/ |+ b4 v. P( e% ?$ |
{"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]#
! {2 o7 H0 Z( h* Q$ D; U前后对比3 I. R  t) y4 m" C( \1 M
1 z- T, m) S- }1 N: P; s) X
[root@k8s weedfs_data]# du -sh *
4 L, B) W+ B( a2 X6 `' f104K        filer
' ]  ~4 S( C9 I) ~5 f( S4.0K        filermount
. n) W/ D' W6 C3 [! q44K        master  u3 M8 e8 V9 {- o
316K        vola
- h6 h' k8 K8 T7 }, j8 F4.0K        volb
. ?$ D; T% V  C8.0K        volc
. H4 b; B5 o+ J$ U' a3 y. C! P312K        vold* E0 O0 d3 N# f% u/ d  ?
4.0K        vole
0 t0 M! [, Q5 d4 V1 N4.0K        volf/ N. ]( S+ D$ A; @
[root@k8s weedfs_data]# du -sh *! P* O3 \  t0 D+ a
104K        filer$ H5 H8 D( P: _9 ?! k( }: t
4.0K        filermount
: m! B1 _- s- e2 \. D5 X' D, C48K        master
9 w  K7 q+ p: c- k180K        vola, T6 L0 p+ d4 k
4.0K        volb" K$ D! d  }! {
8.0K        volc* S0 {# ~, _5 X$ N0 E9 i
176K        vold
# R0 O. t0 {5 X- Q: `4 g; a4.0K        vole8 u9 S8 m6 B+ i+ X. ]2 b
4.0K        volf' U' C+ l) |# q: e% C
[root@k8s weedfs_data]#
3 h$ y$ @8 p- T7 _发现磁盘空间果然被释放了。这个时候再查看一个卷信息# U; {5 g6 f4 S; [
9 R% W1 }$ D3 W" G8 ?& L
[root@k8s weedfs]# curl "http://localhost:8081/status?pretty=y"6 q# g6 q6 T( R" F: p: S! z9 L
{
+ {& l9 O+ z3 U* E% X" N( |9 a  "DiskStatuses": [+ K/ y4 m& V' H3 J% V
    {* Q# ~% S/ Q8 ]" m. D: C# i
      "dir": "/data/weedfs_data/vola",
2 c9 b" ]$ S5 n, Z  t      "all": 214432849920,
5 K5 m2 J2 }) l0 V      "used": 5096337408,! |3 u7 Y6 Q& c; V
      "free": 209336512512,
5 d9 L7 {5 a( p0 f1 ~' f$ l      "percent_free": 97.623344,
5 W& J* i8 z0 M) ]8 g3 r      "percent_used": 2.376659
% j8 e8 t, {% I0 E* A6 _    }; y6 T/ ^4 Q9 D3 T
  ],4 f2 ]4 i, l& D$ t
  "Version": "30GB 2.23 318a3d2",
3 X: \4 d- q# X9 W+ e' \* F  "Volumes": [
. {, _) e$ s" \3 |$ k5 z' x    {
+ o5 C! z0 e; j# |      "Id": 1,5 c! a, q2 D8 h/ _- o
      "Size": 0,
/ a% u  V6 J1 [- h( G- \      "ReplicaPlacement": {
0 e+ A# w9 d7 c; N  o6 I: [$ L        "SameRackCount": 1,% k: c. k. q  Y( ?; g8 W7 J
        "DiffRackCount": 0,
! t/ S, g* [* k1 H4 z/ A1 E        "DiffDataCenterCount": 0' F5 C4 U( t* V- ~6 r6 }
      },
/ w) S. h, d# C1 F8 n! m      "Ttl": {  h" s7 M7 U, t  k; {
        "Count": 0,
3 T0 ?2 D' z6 m: ]: N+ C4 J        "Unit": 03 P7 v8 C! ?( B2 N/ J8 S! x  T9 \4 O2 Y) d
      },
- s0 t* M; o5 _& `      "Collection": "",
3 ^8 O4 I. o4 S6 W2 I' H2 N      "Version": 3,
0 b; o4 M  Q  P$ @* B      "FileCount": 0,
8 \5 x2 h$ ]( a7 N9 \- d      "DeleteCount": 0,
# r: W% |. R1 s7 H/ ?, Z" d# F% k6 t      "DeletedByteCount": 0,) a2 D8 y1 T) u( m; _8 l& Q: I
      "ReadOnly": false,
$ t( n3 \, [4 w* e2 G      "CompactRevision": 0,& N( l8 z+ d1 m
      "ModifiedAtSecond": 0,, O& R  y5 d; G: M* F: W
      "RemoteStorageName": "",! C% _9 Q- y$ \9 P- N: G& C
      "RemoteStorageKey": ""
, f6 q4 F* E/ v! q* P  R    },6 [+ v. z# j* T, \- `' o8 z
    {% ]% b# c" P# r3 j: `! ]
      "Id": 2,: `5 q2 u: V8 c7 E, o% [( v
      "Size": 0,
( m! u& O, y0 ^& U( R' p      "ReplicaPlacement": {
# @" a' I$ u5 c/ e        "SameRackCount": 1,
; @, X! D" z. i        "DiffRackCount": 0,
$ l% N# }9 f9 [% m3 s3 X. Z" _0 z        "DiffDataCenterCount": 09 j7 @) a- C1 A) n# G# j9 Z3 P
      },- S8 j) I' V2 t7 m/ w2 F
      "Ttl": {
( X0 E8 H8 h5 o0 e' l        "Count": 0,
$ L- \6 u" p+ P1 t        "Unit": 0
7 ?+ a' J; o1 x' e" l# u/ z) O      },) t4 @' k6 C9 _& |! C
      "Collection": "",2 m4 e9 R$ A. p" }. e3 s7 E
      "Version": 3,
. Y2 a8 b1 z) J      "FileCount": 0,9 K% O) M- H- _+ r* x
      "DeleteCount": 0,
9 m- d* B6 P$ n9 Q/ E      "DeletedByteCount": 0,# E1 w3 _9 p8 I: d
      "ReadOnly": false,
- s1 M% t6 ^. ^  [( I5 b# G      "CompactRevision": 0,4 z2 n8 F8 c; v$ z
      "ModifiedAtSecond": 0,
7 a: X# f/ N8 ^      "RemoteStorageName": "",! s0 z3 r% s. b" t! _8 K
      "RemoteStorageKey": ""( b6 I. _/ f( L- I; G+ I
    },
& ^# l1 @+ J9 N0 _: K% u+ b    {
. g$ J$ G) ^/ x2 Z7 y8 g      "Id": 3,
( v4 B" @/ G  `8 _' `3 p      "Size": 0,
7 e. Q+ Q) g# W2 X# m1 }4 m! f      "ReplicaPlacement": {
# j+ q7 P+ {0 `1 Q5 r  \5 R2 ?        "SameRackCount": 1,, ~; L0 n$ z1 a& ]
        "DiffRackCount": 0,; ?0 j# V: \' n* F- S1 s
        "DiffDataCenterCount": 0) R1 `! G+ j5 ~2 I* C* e
      },+ R( C7 t7 Z8 B& A; V! m# @8 b
      "Ttl": {
- N* G" _! p7 l# w; r        "Count": 0,
: n+ v( x% \& m' }8 b        "Unit": 0
. S/ \* Z# W* a      },' D* m; J- H" |; W2 x  f7 o
      "Collection": "",/ I; Y2 e* d8 v, ]
      "Version": 3,/ x: @% ^3 }6 {  a: m, D
      "FileCount": 0,/ c4 m( b' z7 x. ~  S  k3 `
      "DeleteCount": 0,
* w% p% h, b% D* B8 M' g6 B3 Q' {      "DeletedByteCount": 0,
* S- v/ t% E+ |+ O6 H+ J: p      "ReadOnly": false,6 V6 \) }$ G2 ?' i
      "CompactRevision": 0,
( P4 A, v. m& R8 b7 g0 q+ l3 k$ \      "ModifiedAtSecond": 0,* P$ y# r" g7 [4 f1 m5 `1 d4 O' u
      "RemoteStorageName": "",. ?9 e% J* j6 E
      "RemoteStorageKey": ""3 v2 N# v( A4 u+ {% l; i6 o$ Y
    },9 e9 t" n4 O1 `% K' J
    {
3 s. Q) ]& @4 [4 R, O      "Id": 4,
$ r0 u) H; P1 y" w& r2 ]% a      "Size": 0,4 i* S: u: m1 A8 g5 r( S
      "ReplicaPlacement": {/ L: S' X3 r! Y4 C" Y0 }0 M5 ?
        "SameRackCount": 1,& p) I" c* g% s  w. @5 I5 Y
        "DiffRackCount": 0,
, [9 o: d. ?8 ]2 E        "DiffDataCenterCount": 0
# M; @; N  _: O8 E* P      },
! c* s  B9 K% ~4 x( ]! J      "Ttl": {
, S2 _7 L( J% |8 f) A2 ^        "Count": 0,  `4 V9 r; ]$ C) w& B
        "Unit": 0
9 v/ @' A7 X' o$ ^, C  G" v( r      },
7 b% _8 C! z2 J      "Collection": "",9 V) k) N; n5 X( r  ^) _
      "Version": 3,6 O& b6 e3 }' h8 r% z2 Q0 O
      "FileCount": 0,- j% f# r0 Q5 q" C8 W$ j# H$ z. _
      "DeleteCount": 0,
2 x8 H/ k0 _% ~6 z( ]6 a( g      "DeletedByteCount": 0,+ p' M) b+ {% \, x) r2 O+ S# R
      "ReadOnly": false,3 ]6 f& G$ V" }+ h9 F( Q' s& }
      "CompactRevision": 1,  \$ P+ [; u+ @! z: s$ }& z
      "ModifiedAtSecond": 0,
: u6 N, T; ~/ F4 l      "RemoteStorageName": "",# e/ L2 H$ e1 N6 }
      "RemoteStorageKey": ""
; x2 g* m! I8 L8 G    },% B; T' d8 C% i/ ?( Q& l
    {
1 B) H" H3 M+ V* H% z; x8 F# W# e      "Id": 5,
% {3 L# j7 e* x" h9 j. [. r/ H      "Size": 0,
5 a' @( p+ J0 j- t6 T. `4 l( ]      "ReplicaPlacement": {5 o/ s9 H! |7 C+ t  B$ h& k& H4 t7 Y
        "SameRackCount": 1,
5 G2 R) I% l4 b* L, p        "DiffRackCount": 0,
. \. \0 G  t) \) X/ h  A% k        "DiffDataCenterCount": 0
/ O) B% D: {4 t5 V      },8 N  `7 u9 H. U9 P$ d
      "Ttl": {
0 F& A* b) e7 o. A. B; M; Q        "Count": 0,
  a/ S5 E) S  Z! V9 [        "Unit": 0, R  r# v: e; v4 U& `
      },# L1 y6 _. N$ r1 c: J) ^3 v6 c
      "Collection": "",
1 m: L3 i2 x4 j% h; |      "Version": 3,; F7 z2 S# Z! d. Q
      "FileCount": 0,! u8 X) ~0 `8 L
      "DeleteCount": 0,
9 D+ G/ v1 a$ X/ q/ L) ]4 j" q5 @( T      "DeletedByteCount": 0,
; w0 W8 O  a! V2 w      "ReadOnly": false,
1 p% {- i5 K5 y3 N      "CompactRevision": 0,
' F" P: ]* _7 s9 E      "ModifiedAtSecond": 0,
8 p# U3 V; A, `- ~3 a3 M      "RemoteStorageName": "",8 G, Y- O& V9 c9 C* F; K! i
      "RemoteStorageKey": ""
+ |6 ?+ x: N) E2 l; h& p' v+ {$ f. c    },
# J. i: L6 L4 i    {
, g2 s6 T2 S; t5 N' s9 L- {7 {! [      "Id": 6,
6 K) d* J5 ?+ O      "Size": 0,. m6 `: c' `" k7 \
      "ReplicaPlacement": {
1 M) U3 t+ W  y6 D" J  z0 N2 J        "SameRackCount": 1," H" W2 Z, `" L4 N. Y6 V
        "DiffRackCount": 0,
6 a) Q1 p0 n4 k        "DiffDataCenterCount": 0
5 {" Y0 J) q# h0 p0 V8 E2 u, L0 _      },: ^% ^+ K3 S+ Y, |
      "Ttl": {
+ P3 [7 ^! l7 d- ?        "Count": 0,
; A+ d# j9 y8 z" g6 F5 O! u        "Unit": 0" O8 H; y" M8 r: }- N  Y1 s" w
      },; f8 h- F% g# V( |$ p
      "Collection": "",
3 S: [7 B3 t$ M8 P5 ?      "Version": 3,
4 L) a) I# I4 p3 A" N      "FileCount": 0,
  g" t) I0 {& ]6 y+ ^      "DeleteCount": 0,
% N# x8 @6 d8 L6 l; e      "DeletedByteCount": 0,7 m3 h1 }' |: m/ j
      "ReadOnly": false,
2 }' k+ ?: A: E' _8 M, H) }2 q      "CompactRevision": 0,
' U: ~1 @6 }# T0 z      "ModifiedAtSecond": 0,
- ?: J7 q: o7 ~$ ^  G3 F      "RemoteStorageName": "",8 u- Z$ m1 D+ l6 H
      "RemoteStorageKey": ""; d0 d" U: l% P) i0 g6 i' {3 W
    }' C! J% P( }( c% f
  ]0 l' t1 j6 `# j
}[root@k8s weedfs]#0 p8 M! ?9 f8 b0 I0 J/ i4 ^! P  ^
发现id为4的卷下的DeleteCount也变成了0了,验证了官网所说。
2 K. W. w2 H* e: b: T$ j: X, \7 L/ K
常用api记录4 P1 o& R; p, F; J; ~, X' I
weedfs的使用- E, L+ J  z) z) f& I8 y# i
master% w' f* y5 W; L  V. x8 Q4 Q, L
申请volume信息:curl http://localhost:9333/dir/assign?replication=001 ###文件上传首先需要请求master, 去分配一个逻辑卷和fid
' q; L/ ~) e4 i4 f$ d, K) h! U3 N查看集群信息:http://$IP:9333/cluster/status?pretty=y
9 ^- k& \" f3 z: `% T2 L' S& q  h查看某个卷的上传信息:http://localhost:9333/dir/lookup?volumeId=3, C4 _* ?' I0 v1 X
上传文件:curl -F file=@/home/chris/myphoto.jpg http://127.0.0.1:8080/3,01637037d6/ r7 R+ O6 ?( S% K9 Y. T/ f" n
请求一个上传了的文件: http://localhost:8080/3,01637037d6.jpg4 s2 |7 W- B4 R" `4 M7 N$ c3 d
删除文件:curl -X DELETE http://127.0.0.1:8080/3,01637037d6
% a' i2 l+ c$ }) ]6 x9 |查看集群toplogy结构: curl “http://localhost:9333/dir/status?pretty=y”
- Y. m- ]+ p2 q上传一个目录:curl -F file=@/home/chris/myphoto.jpg http://localhost:9333/submit
. g* s) I2 N, f/ ^强制垃圾回收:curl “http://localhost:9333/vol/vacuum” curl “http://localhost:9333/vol/vacuum?garbageThreshold=0.4”
2 f5 y/ i* o, Q( s( ^1 g  D给某个collection指定volume的数量:curl “http://localhost:9333/vol/grow?collection=staff&count=1”
- C6 B1 V2 F; x2 r( N' Q5 l4 }8 q6 H: [, }' D
volume
7 m' j4 N) W" ~) [. F* u查看volume中某个大文件被分块的清单:curl http://127.0.0.1:8080/3,01637037d6?cm=false$ @  R* |+ J7 p6 U) H- a5 T
查看卷信息:curl “http://localhost:8080/status?pretty=y” ##可以看到删除了多少文件,以及删除的大小。这个对调试还有多少空间没有释放很有帮助& d9 B9 O% I' z5 N. W

4 M; V2 h% `0 }8 S  `7 U下面是使用filer的一些api# Q5 V7 h, b  `# }# J

7 K$ p- K% i2 h3 ?6 C! |* N5 O7 L' Q# POST a file and read it back
( `2 k+ m8 }7 j$ U4 N; hcurl -F "filename=@README.md" "http://localhost:8888/path/to/sources/". y6 y! C+ I& U& w, t; z' s
curl "http://localhost:8888/path/to/sources/README.md"' m# l( {6 O7 M0 T
( Q2 d! a. `+ S9 i# |& |' O
# POST a file with a new name and read it back
5 u$ l# f/ T* b& B% f1 V- Xcurl -F "filename=@Makefile" "http://localhost:8888/path/to/sources/new_name"
2 m- S* {- r" b/ ~( zcurl "http://localhost:8888/path/to/sources/new_name"1 |) m8 W% {) @/ U

) P0 @# `' O, P3 R# list sub folders and files, use browser to visit this url: "http://localhost:8888/path/to/"* Q) B* z4 I1 B7 s2 J
# To list the results in JSON:
1 q" t% i) J# o: u0 S8 Q' ycurl -H "Accept: application/json" "http://localhost:8888/path/to"9 {4 K7 z* N- t* l, [
# To list the results in pretty JSON" h  P+ O6 k) ?; R, u3 ]
curl -H "Accept: application/json" "http://localhost:8888/path/to?pretty=y". p3 K* [6 A  ~  c& l

3 R- A7 P" p- j# l5 e' `2 J9 r# The directory list limit is default to 1000 X+ P; t$ Y! ~. |
# if lots of files under this folder, here is a way to efficiently paginate through all of them
. r  f- [7 W% U4 d' b0 hhttp://localhost:8888/path/to/sources/?lastFileName=abc.txt&limit=50
$ B5 F# ~$ P8 s. {
) p" B% H% z4 G6 j# @6 _( E! P! \" B- u
  \  h* s: V3 p8 b/ F( M: T) [8 C
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:37 , Processed in 0.069843 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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