|
|
搭建! h: a; E7 x- k3 ?8 G
6 V0 p' J- X- L
有两种安装方式,第一种下载编译好的直接使用,第二种是下载源码进行编译。由于暂时不更改源码, 故使用第一种方式运行. V* [ }- Y; G# w* o! f, Z: s
下载地址:https://github.com/chrislusf/seaweedfs/releases 下载完成后,解压出来直接运行。
, J5 u7 N; i1 ?; W8 K2 O相关定义意义说明
6 q' l2 R: X+ ~5 C7 M {! s% M" j b% p' x# z) g
因为是研究测试使用,就粗糙一点,都是在一台机器上完成3 }; l& e# K6 D ]+ x# T
计划: 一个master(master只能为奇数个【好像master是以ip来做确定个数的,我做实验时,使用不同的端口启动三个master,在申请卷信息的时候报错,所以这里改成一个】)三个volume 一个filter2 T4 E4 c' ~0 l! n3 n
4 m1 x3 S2 P9 Y0 {5 T' }5 W
从官网的release仓库选择一个版本下载下来,
! s1 i n) Q. {; X3 {; \, O$ z. G# u) a; U h- r
wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz. [1 }2 | L G/ N
( W. f7 F% j9 o0 i' f5 A2 R
上传到/usr/local/weedfs目录
7 c( A. s5 \; [4 `" E* G; T9 _& U9 M G
mkdir -p /usr/local/weedfs/
! K5 g! r( W3 |. Kcd /usr/localweedfs/$ @% | q9 H. J$ h5 K' l# A
tar -xzvf linux_amd64.tar.gz
* u9 N. I# ]) u" ^: ]得到一个weed可执行文件,weedfs的master 和volume的可执行文件都是它。
- R; i/ O B! e* h8 K/ W6 R' z4 M创建数据卷根目录以及各个数据卷目录、master数据目录和filter目录
% _" J1 l9 t# M7 r9 i/ y& ]# h; @3 ~& `! I; u
mkdir -p /data/weedfs_data# [" l. q' U. c; R( [ k3 l% h
mkdir -p /data/weedfs_data/vola) k, D6 u5 E3 }6 X
mkdir -p /data/weedfs_data/volb: C t: U1 G4 w$ z' j5 J
mkdir -p /data/weedfs_data/volc
- D' N6 \9 F S5 D) [mkdir -p /data/weedfs_data/master: \) v8 i( j$ @
mkdir -p /data/weedfs_data/filter$ c" q& C2 O9 U4 a5 x- ~0 N
启动master 9 U$ z& _9 A" H
5 I, B. ^* C8 {. H) K' h6 H
[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来区分的4 I2 Q9 y% Y: v M# e
[root@k8s weedfs]# nohup ./weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication="001" >> /data/weedfs_data/master/wdfsmaster.log &
5 s0 w V O) i5 H启动完成以后就会生成下面文件和文件夹
8 Y% ]1 r# T7 g, U4 y6 A% D
3 g) a. z. V6 E8 i t9 d% C[root@k8s weedfs_data]# ll *
* u& l# |- ?+ D3 Nfiler:8 b- [, Y z! c0 K. H k
total 06 D4 v; m" Y0 C, t2 z
drwxr-xr-x 2 root root 6 Feb 3 16:17 leveldb2
& D+ H$ T9 a& y& x# C3 D/ F- ?7 _ a( J/ ~1 o. T
filermount:: Z9 I' o5 H, `! t. m5 G# o' v3 f
total 0
. e; G6 o' m! s/ A7 K/ Zdrwxr-xr-x 2 root root 6 Feb 3 15:32 data- C) f, S: D1 M9 R1 g
4 i& }& Z3 J4 H3 D ~
master:9 V S# K4 L7 B$ s
total 16! ^- y, j; {3 {5 W c
-rw------- 1 root root 28 Feb 3 16:52 conf' q0 B) _ ], K4 |1 ~
-rw------- 1 root root 112 Feb 3 16:52 log- X5 _ ~+ c% ~+ F) w2 i V
drw------- 2 root root 6 Feb 3 16:52 snapshot
9 J% ?. J, d- f) I4 V. u( m-rw-r--r-- 1 root root 4513 Feb 3 16:52 wdfsmaster.log
p) |7 q6 q5 X. @( \. p: v7 h& u6 i4 M( E
vola:
/ u9 Q+ G- B X) ~# vtotal 0
/ C; p' o. u/ A* K6 m: w" P# e: B! ~* j$ Q% S2 y; i3 P/ j! N1 V
volb:
, F. ~. W/ ?8 Z0 R, \9 x7 ztotal 0
$ l0 Z* B2 B; P8 i1 d
/ k+ O; Z* W8 Q' X% {$ v+ Yvolc:
/ K% d9 e2 D+ g' Stotal 0
7 V* ~+ { l% i: D" P. [5 h4 I1 M6 Z. g% p
vold:8 ^+ l# R c A4 V
total 0- r; c8 U6 E& r! j' w, w
* s \1 i# G8 \/ y ?2 v2 O5 c+ R4 y
vole:
. [: b0 P# W$ ^total 0
9 Y6 A& x7 }( w a' ?) u# p" D! F4 I! N( W# q" |
volf:
+ `: v. j" @ B3 {. f O% Ototal 0
& v6 Z- H. Y6 Z1 u# p$ z) Z[root@k8s weedfs_data]# ps -ef | grep weed
5 e, ^. }; C9 d3 E: _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 \' d2 e$ l- F Q9 u: n
root 16190 15473 0 16:52 pts/1 00:00:00 grep --color=auto weed" N7 W: ?4 S4 o& |+ D- N* g
[root@k8s weedfs_data]#
0 T9 Y3 I7 G7 D* a启动volume
' |4 h+ |: t! ~4 m$ u# @
% R7 L0 C! f/ R- j; e; F) r[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 ^! ~( G# i! J: s8 e9 Y
[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 &
/ |* H. y9 F' E8 O7 i. ~/ P[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 &- |) Y2 `: N5 R2 Z3 {
启动完成以后就会生成下面文件和文件夹 " R. j# h( A- x J0 h1 K6 g) Q
$ X' Q6 {) S) d. p0 h
[root@k8s weedfs_data]# ps -ef | grep weed
% H, M6 o, ?! l; s% troot 16171 15806 0 16:52 pts/3 00:00:00 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001
% U7 j, A, O- Q& ]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
. h9 b7 y* g( ]9 d3 [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
# N4 I$ s1 m% Q+ Droot 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+ L# @$ W& z8 }' M) w) s# U
root 16378 15473 0 16:56 pts/1 00:00:00 grep --color=auto weed
% d) ?' ^; h, f% m$ X" _[root@k8s weedfs_data]# ll *; i5 `9 Q* S" x1 L6 j) q; r. `
filer:( `( v5 N6 l4 R: {3 N5 b% y* g
total 4
7 s: i8 e' E; N-rw-r--r-- 1 root root 2715 Feb 3 16:55 filer.log
1 S% J+ ^; s6 ?8 ydrwxr-xr-x 2 root root 6 Feb 3 16:17 leveldb2& m/ g% {: v) `5 K% G& }' i& Q; C
" m2 G c% V9 ufilermount:
5 i8 C* T9 o: n Ototal 02 h- _% f7 b% G# @7 d- [" J
drwxr-xr-x 2 root root 6 Feb 3 15:32 data
5 Q4 y% n4 m; G. \-rw-r--r-- 1 root root 0 Feb 3 16:55 wefsmount.log
# R( I( m' Z# T0 e1 @
. I2 |6 d5 k/ ^/ W! Cmaster:
( t! n# N% Z$ e, v& |total 24
7 w+ z8 q, }. m: m-rw------- 1 root root 28 Feb 3 16:52 conf
' t1 _6 D) R# j-rw------- 1 root root 112 Feb 3 16:52 log7 h( {( v, W6 w- t) W5 K; V
drw------- 2 root root 6 Feb 3 16:52 snapshot g; F l1 m2 J: `
-rw-r--r-- 1 root root 14495 Feb 3 16:56 wdfsmaster.log
3 n+ E6 e# F+ Y# l i3 A. w5 B; ~0 T% L6 w1 d1 d% T2 h7 z, m
vola:
; I4 I3 T+ e3 a6 |4 xtotal 88 }0 }( l& \+ ?
-rw-r--r-- 1 root root 1267 Feb 3 16:55 wefsvola.log
, p5 M! h& o' `-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvolb.log3 ^. q7 `. J% M7 N
4 i& E; ~/ g# \volb:1 Z+ N7 W# x. Z% d% h) ]' o0 J
total 43 q; ] D# N: t+ V$ [% ]
-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvolb.log
/ b/ Y( B. t0 ^- Q7 k6 T, b6 ~) p0 d% Q3 d/ h' R, q: g
volc:
h0 g* O1 s( l3 ]9 Z" `! Mtotal 82 ~! b$ I$ J3 |( Y: Y
-rw-r--r-- 1 root root 4644 Feb 3 16:56 wefsvolc.log
) J. B/ M" i3 ^* \) I- G q# @3 \) {1 x" `: y
vold:
2 d h2 R* S* j+ N+ R2 _total 4. W3 ~7 u4 ^+ R* h4 T) F4 ?# }" M! s
-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvold.log- T- L2 D( m& U3 h. w( Z* j
& l' e5 W: q+ g% B: P- Yvole:; R# N% V0 ?7 C9 x
total 40 t4 d2 w) r/ ~' [; [5 v
-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvole.log
6 V. A1 i8 T! s. X8 Y! _1 G5 P0 ]0 ]) c* f; R3 m
volf:3 O( p$ o6 H' t/ a+ f4 r
total 4
5 S+ u Y. s+ v+ K+ y1 P. [8 Q-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvolf.log$ M* Y) ^* J5 Y; Q
[root@k8s weedfs_data]#
2 u' ^6 z% z* @8 L4 R此时volume下面还没有任何数据,volume server会在第一次写入数据时建立相应的.idx文件和.dat文件
7 w$ u. z$ `9 b# l7 f; l$ Q( j
/ i4 ^: s* q7 x2 N启动filer
2 h0 n% Z9 x9 S2 [1 b, y; F5 W& T# m# ?2 D" r
文件服务
- W" ~+ W1 \2 b5 `1 K, f2 ?0 S& h0 I" l8 d5 _' o
可选的文件管理器服务可以减轻您的负担,因此您不必这样做。* ?' }# O9 @( s N. q
9 k1 I4 l* @3 b J4 ^9 O它通过HTTP或UNIX FUSE挂载将SeaweedFS卷和对象组织到用户可见的路径(如URL或文件系统)中。
^, C& P |0 a: o
* V! V9 p; n* |3 C HFiler提供了一个方便且通用的抽象,可用于为现有应用程序提供正常外观的文件系统或Web API,以用于向下/上载,而无需进行修改。
; j% Q& }1 v4 H; D& z8 w
3 z& Z) ~, x8 f7 v* c# ^2 F可以使用文件, MySQL, redis等保存 filer metadata, 只需要启用或者停用对应的配置1 h0 u3 k/ K5 g9 V
0 _. u0 p% ` { t6 ]; ^6 b
先生成一个配置文件,如下图
* D4 ~/ M6 O+ F& g
: ^8 x7 [" w# ]6 \2 N& i4 P[root@k8s weedfs]# ./weed scaffold -config=filer -output=.
( K; B: Z* }, f; H3 J修改filer.toml,把filer的数据目录指向导/data/weedfs_data/filer/leveldb2下
6 [8 M" h, {2 }6 B3 ~ X/ Q% x; ?7 ?
mkdir -p /data/weedfs_data/filer/leveldb2# K# D2 W9 F, W6 N
[leveldb2]
$ ~: B- m( X* c+ X6 l6 G, ]# local on disk, mostly for simple single-machine setup, fairly scalable$ d5 D. ^% n, h; s) h' O2 h
# faster than previous leveldb, recommended.1 d' k$ ` y0 E* ]4 v7 u5 K
enabled = true
/ C0 a' \) {; ~' W5 C$ Z" i5 @; Ddir = "/data/weedfs_data/filer/leveldb2"
+ h# M$ Q! z( Q# O然后启动
2 D* T# _3 t+ g G8 t5 i8 Y6 Z1 s; o* \9 I( `1 O& `# l! R3 D
[root@k8s weedfs]# nohup ./weed -v=3 filer -port=8888 -master=localhost:9333 >> /data/weedfs_data/filer/filer.log && d& E0 d+ h/ D
[root@k8s weedfs_data]# ls filer/*( _' O" _- l8 p+ |" y
filer/filer.log
) ~$ x6 ^: ]9 K/ z5 \0 U3 Q2 q! U: ]/ O s2 e& C
filer/leveldb2:
- q3 j5 W$ o9 h. `- k: D00 01 02 03 04 05 06 075 b& o3 Y! ?* E+ U0 R0 z M. p
最后 t; Y: B( d* C
* g. ^, ]) \, c- k ?2 C8 s% x8 A d! _
所有的启动完成以后,如下图所示:
: F! J( H! s$ I' \/ ~2 m) f' p. o% t: G
[root@k8s weedfs_data]# ps -ef | grep weed5 t- J( q2 r/ I. F/ j; 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=001/ [, U9 t f6 ^* u
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
+ W7 N9 Y5 Q, Q3 @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
8 r0 k) s/ N: g, wroot 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( T! w- O4 O% K1 p1 x
root 16458 15806 0 17:06 pts/3 00:00:00 ./weed -v=3 filer -port=8888 -master=localhost:9333
/ z: X0 s7 m' _+ P8 proot 16469 15473 0 17:07 pts/1 00:00:00 grep --color=auto weed
+ b8 V/ C; b; G5 D+ p+ e$ `0 Xfiler的mount挂载
: |( G" n: }. v7 ?
6 a* m2 {9 v1 g1 {8 C( ?0 y为了方便本地操作,把一个collection里面的内容挂载导某个目录,方便操作
$ d/ N- O) j! e% \/ T( u \4 E# r5 n8 S0 m' L. ]3 T
[root@k8s weedfs]# yum install -y fuse
! n, ~* U/ q8 i) f% Smkdir -p /data/weedfs_data/filermount/data
# I2 V( B0 D5 |; f1 g w @4 rnohup ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/ >> /data/weedfs_data/filermount/wefsmount.log &3 X; g+ z6 t/ T7 D: \
. E) E: Y; m! g9 v1 \$ D./weed mount -filer=localhost:8888 -dir=~/wz/mdir(本地目录) -filer.path=/(上传的filer中的目录)
$ X9 m5 B" C5 }7 ]
% @4 L; w" c+ F9 J' w* b$ ^' W0 C. s5 V
直接往weed filer中拷贝目录或者文件把wubo目录拷贝到/ 根目录下也就是本地目录目录下/data/weedfs_data/filermount/data 下面) b% L4 k( s$ b6 P: n
0 v5 {2 P+ ]8 i8 S9 C7 z[root@k8s weedfs]# ls wubo/
; w6 _3 s, x% x, p7 D# p" T* Na b c* Q( y& F: T8 |# [' b( J
[root@k8s weedfs]# ./weed filer.copy wubo http://localhost:8888/
% \2 d) u/ d% p! i; H2 |uploaded c to http://10.10.3.163:8084/1,030dfa7a23
* x" e- r# W$ X9 Rcopied c => http://localhost:8888/wubo/c( R! ^; `' Y7 y" y
uploaded b to http://10.10.3.163:8084/2,02a5ddaae7
6 I7 ]$ T3 @; f. ^4 v9 }1 Ccopied b => http://localhost:8888/wubo/b
+ {) j+ f& ~0 v9 E+ Luploaded a to http://10.10.3.163:8081/4,04153475ab) U( G1 [8 Y' e# X1 I% A- q: k
copied a => http://localhost:8888/wubo/a5 \2 s8 E+ Z t, e0 S& @; s
cd /data/weedfs_data/filermount/data, 就可以查看具体上传的文件, z3 J5 z; n) L
; n& p/ b" Y* M
[root@k8s weedfs]# ls /data/weedfs_data/filermount/data
8 W# B- C# u! Btopics wubo' E: z6 \! i, l2 x4 [; {& I/ j# \
[root@k8s weedfs]# ls /data/weedfs_data/filermount/data/wubo/5 Y- z9 i5 N% i" i
a b c) a8 d% s- ]. Y6 ~
浏览器查看根目录文件9 f, E$ N' n7 [! S' Q
$ h/ W$ t( X1 z+ O
, l2 B9 P( k" S6 ?% q
# K- e* N: B' t测试
) ?' ?- y6 ]; k! f8 D( bcurl http://IP:9333/dir/assign
) u4 O( A7 \' M- u* ^; R* T/ p- Z{"fid":"4,02d6944eef","url":"IP:9080","publicUrl":"172.19.131.45:9080","count":1}
& H2 B3 W# X& k关于filer mount的问题3 d: w3 ]( M' y& _9 ?1 e, U
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data本地目录) -filer.path=/(上传的filer中的目录)8 n2 n% M6 m4 D
: W, E0 \, L7 E. [& dweed mount 像访问本地目录一样访问文件系统,前提是开启了 master volume filer
- N0 }$ ~( f5 A5 a(它使用bazil.org/FUSE,它允许在Linux和OSX上编写FUSE文件系统。在OSX上,它需要OSXFUSE)* b! b( E* b6 S8 I9 Q2 K1 B
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data -filer.path=/home/chris -collection=chris: X5 ~4 C$ ~* t8 v2 g0 n
weed mount -filer=localhost:8888 -dir= /data/weedfs_data/filermount/data -filer.path=/
$ j0 g3 d4 c' b3 e关闭挂在需要关闭mount并且手动umont -l /data/weedfs_data/filermount/data 目录,如果一般用户失败请使用root用户
' ` P( g6 O+ w1 o& }) {: W0 r2 e" {& r, `7 T
其中mount只是为了本地操作方便,不想本地操作,可以不使用mount; C4 z9 |- O$ U3 R- }
/ P4 a" }. Y4 h5 E X
使用& @5 I ^0 N3 _
上传文件; R3 y* {+ j8 w1 @: C1 \6 U' D
. n. B: j8 D2 e* h6 v5 U/ o要上传文件:首先,向/ dir / assign发送HTTP POST,PUT或GET请求以获取fid和卷服务器url【理解:master负责管理卷,并生成要上传文件的fid,并给指定需要上传文件的卷服务器,所以我们在上传文件之前,需要向master请求获得这些信息,然后根据这些信息直接往指定的volume里面上传文件】' x9 a/ J& i5 c: e) I- ~/ L2 h6 \
SeaweedFS在卷级应用复制策略。因此,当您获得文件id时,您可以指定复制策略。例如
# Z: q9 s$ a1 f7 ]. ~: M
+ {$ G# Y6 w$ T% D% [2 s, B7 }/ Mcurl http://localhost:9333/dir/assign?replication=001
. w# i1 b* S. J/ C& D$ i当申请卷信息时,报如下错误。这是因为我们使用的replication模式是 001,即对于一个needle来说,会在同一个机架下的两个volume中保存相同的文件。由于上面我们创建的3个volume都分别指定了不同的机架,所以本教程目前的拓扑(逻辑)结构就是: 只有一个数据中心(默认的数据中心),包含有三个机架 rack1,2,3。每个机架下各只有一个节点(datanode --默认的节点,相当于一台机器,即localhost),然后这个datanode下面又有一个volume server(创建的,比如8081)然后这个volume又会创建默认+ b0 X" M+ j2 z, O. ]6 r! c
4 t# \% ]1 g+ n' E B1 G$ y. H[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
( Q0 q0 `# u, s5 |+ t& 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]#
0 K( G' ^7 _/ n6 J U拓扑结构如下
7 D4 j, F* ~) |4 O( G A9 b4 I
- T+ {3 P G$ p D0 ?, F+ \; n& J
0 U& Z9 ]2 R3 T4 G9 \6 b
+ s# a( e" H8 Z7 ]# C0 O; t& C5 ?数据中心(datacenter):包含多个rack(机架)相当于机房+ \0 |9 P3 B o6 ?0 u: d4 @5 {' `
H% m8 @) r a
rack:属于一个数据中心(datacenter),类似机房中的一个机架
# X$ G/ u4 u- q# `6 B4 [
1 s" i- P/ R% t! {9 n+ N4 @datanode : 存储节点,存储多个volume,类似机架中的一个机器 weed volume
9 ]2 f! N/ Q' n3 C' n+ X A9 w2 G" o7 U
volume server:逻辑卷服务,多个逻辑卷服务,每个逻辑卷服务(volume server)可以有多个逻辑卷(volume ),默认7个3 q! I3 c) F4 @, o
+ E* m9 Q T! w1 S
volume :逻辑卷,存储needle文件对象
: {3 v) H, i. o! s& t; Z, ]: j8 R5 Q2 Y0 ]& ^/ g
needle: 逻辑卷中的object,对应存储的文件; i1 o( } M1 Q' x
1 I/ M# {+ w* Y; t( H+ t# }. h
collection:文件集,默认所有文件都属于""文件集。如果想给某些文件单独分类,可以在申请id的时候指定相同的文件集2 X5 f! l( R, O; t0 b; x
+ B9 u7 H; G) H& e) C5 ~filer :指向一个或多个master的file服务器,多个使用逗号隔开。 weed filer
% z$ G7 |( h# P9 M& Q( ~
. h }4 f: U: K% X* E9 L" h: }weed volume会创建一个 datanode ,可以指定所属的 datacenter rack和master ,会根据配置存储文件,默认一开始没有volume,当开始存储文件的时候才会创建一个volume,当这一个volume大小超过了volumeSizeLimitMB 就会新增一个volume,当volume个数超过了max则该datanode就不能新增数据了。那就需要在通过weed volume命令新增一个datanode。3 M/ a C+ H8 c# u
/ E) \# x0 b/ O; C0 i2 t8 [按上面的添加volume的方式再添加一个vold
2 H9 K! r6 G, M[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 &
2 {; C. R8 U$ e! ^, P并重新申请就能返回如下结果
9 j# I3 \% l" K4 `$ M+ S, J% G* ^/ ]9 v
[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
6 O" g& ?/ O) c{"fid":"4,01c1810497","url":"10.10.3.163:8081","publicUrl":"10.10.3.163:8081","count":1}[root@k8s weedfs]#
# B" d: f& X$ e( O) c服务情况vola和vold 属于一个数据中心同一个机架(rack1)! S/ n3 M' q) e6 g4 z! j1 h
. Y8 K: U6 e* R. b
[root@k8s weedfs_data]# ps -ef | grep weed, F& W- {% J. c6 l8 e
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
7 j( _" @; h% Broot 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=rack10 d5 `5 F. b! m& w5 k% K& ?0 X
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
$ ?. f& L- ^3 g groot 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=rack32 X+ J. T: V5 b& I/ m" A9 `
root 16458 15806 0 17:06 pts/3 00:00:01 ./weed -v=3 filer -port=8888 -master=localhost:9333
2 a+ e1 h9 j s1 J) z1 Nroot 16811 15806 0 17:11 pts/3 00:00:00 ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/' G2 Q4 P" W0 v5 a% [: U1 n. ~
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; R7 ~ R1 g" q+ u2 I8 s" q2 N
root 16850 15473 0 17:22 pts/1 00:00:00 grep --color=auto weed
" J0 j8 T2 S) k$ m# E; q 这个时候看一个各个volume下的情况,如下图. t+ P/ A ~1 }0 B2 P& ]3 q
因为vola和vold同属于一个机架rack1 而replication策略又是001,所以vola和vold都有数据,并且数据是相同的两份。& a! l& b9 @8 t3 O% U5 X% M) e3 J
! e8 o1 U. ~2 C9 Y! V7 h
[root@k8s weedfs_data]# ll vol*, @0 H1 |# f9 t6 x
vola:
& |7 e, z! A9 U' P7 Gtotal 644 Z, _# P, P# b9 E
-rw-r--r-- 1 root root 8 Feb 3 17:23 1.dat8 t" E' s! H& V! C
-rw-r--r-- 1 root root 0 Feb 3 17:23 1.idx
9 M ^( e: ]/ G/ m+ t-rwxr-xr-x 1 root root 57 Feb 3 17:23 1.vif
& E/ h4 G8 t# {/ k! v* K9 o. e. L-rw-r--r-- 1 root root 8 Feb 3 17:23 2.dat
* j2 |3 }& P( U' k-rw-r--r-- 1 root root 0 Feb 3 17:23 2.idx
8 x* R+ x3 \0 V+ I/ e# ^-rwxr-xr-x 1 root root 57 Feb 3 17:23 2.vif
5 V0 B5 t( z8 N2 r) j& }-rw-r--r-- 1 root root 8 Feb 3 17:23 3.dat
+ l* d( n, l5 h& |3 N0 s-rw-r--r-- 1 root root 0 Feb 3 17:23 3.idx
) P- A( K5 a; u3 E S8 R) |; r- z-rwxr-xr-x 1 root root 57 Feb 3 17:23 3.vif
, \, t# U7 ]% l( ^) l1 J8 Q-rw-r--r-- 1 root root 8 Feb 3 17:23 4.dat$ o- {: s6 E) q3 s
-rw-r--r-- 1 root root 0 Feb 3 17:23 4.idx7 K, U; z5 Y; P, f: P7 W4 D
-rwxr-xr-x 1 root root 57 Feb 3 17:23 4.vif- V% i& Z5 l# l1 n. D
-rw-r--r-- 1 root root 8 Feb 3 17:23 5.dat: z; j6 r! d0 r1 g
-rw-r--r-- 1 root root 0 Feb 3 17:23 5.idx( L3 h! T# O/ `6 ?' Y% z, A
-rwxr-xr-x 1 root root 57 Feb 3 17:23 5.vif
- T# Q+ F+ l# t-rw-r--r-- 1 root root 8 Feb 3 17:23 6.dat1 p7 y4 S( c& E5 m9 T
-rw-r--r-- 1 root root 0 Feb 3 17:23 6.idx
: A: a' J$ s3 B# v-rwxr-xr-x 1 root root 57 Feb 3 17:23 6.vif
( ` s; o2 v* `( B9 B-rw-r--r-- 1 root root 8569 Feb 3 17:23 wefsvola.log0 P+ R1 W3 K: F- v; x0 _# Y5 Y: c
-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvolb.log
R$ z) `% ?; H: L; g3 p% j1 W; @% b' |; d9 T2 j. m4 s' c5 @
volb:4 S) p, `. n. |
total 4) W# R9 c1 k2 G( g1 f
-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvolb.log4 Q* {7 F- _- s$ g
% q5 }5 X9 f! _. ^$ Vvolc:7 _ D7 z& `/ \
total 8, X) H/ ?8 E# n4 g; v* b) U
-rw-r--r-- 1 root root 4644 Feb 3 16:56 wefsvolc.log3 G) J# |' m" a. V* f
3 K \) i% v" d6 [; w
vold:
6 d* ~3 C" w3 c+ [: S! xtotal 606 z( t9 j; p3 `5 B" q% r. ?& \8 w
-rw-r--r-- 1 root root 8 Feb 3 17:23 1.dat; ^0 S* [8 j9 J% M$ o
-rw-r--r-- 1 root root 0 Feb 3 17:23 1.idx1 V3 [0 F; H w: ~. Y
-rwxr-xr-x 1 root root 57 Feb 3 17:23 1.vif
' } {9 A# Z* y7 S2 s-rw-r--r-- 1 root root 8 Feb 3 17:23 2.dat
7 c1 m. R6 x* L9 I; M6 S-rw-r--r-- 1 root root 0 Feb 3 17:23 2.idx
9 m$ X; M B9 b' Y5 Z# [/ q-rwxr-xr-x 1 root root 57 Feb 3 17:23 2.vif& @3 C* A8 b" {' I& H6 B
-rw-r--r-- 1 root root 8 Feb 3 17:23 3.dat
& D7 q" W5 P1 g. E: w, n-rw-r--r-- 1 root root 0 Feb 3 17:23 3.idx7 I. w& L$ h' ]/ B$ N. M
-rwxr-xr-x 1 root root 57 Feb 3 17:23 3.vif4 H) q: @/ y5 q
-rw-r--r-- 1 root root 8 Feb 3 17:23 4.dat2 q, L' U* k: B0 o
-rw-r--r-- 1 root root 0 Feb 3 17:23 4.idx
6 ?0 c9 m/ i& A-rwxr-xr-x 1 root root 57 Feb 3 17:23 4.vif, ?+ M6 w' j" n* X0 T u5 L
-rw-r--r-- 1 root root 8 Feb 3 17:23 5.dat
' I% C9 i6 t3 D. ^-rw-r--r-- 1 root root 0 Feb 3 17:23 5.idx. T- j6 ]$ E7 F; ]
-rwxr-xr-x 1 root root 57 Feb 3 17:23 5.vif5 E9 H; R+ N3 u" j ~
-rw-r--r-- 1 root root 8 Feb 3 17:23 6.dat
- S0 f3 n5 e- t-rw-r--r-- 1 root root 0 Feb 3 17:23 6.idx5 K+ `) D: K3 H- c
-rwxr-xr-x 1 root root 57 Feb 3 17:23 6.vif
/ [( ?4 j! I; Q/ t: A-rw-r--r-- 1 root root 9604 Feb 3 17:23 wefsvold.log
' t3 ]$ J3 ~2 Q# h3 @% D3 T9 _" o6 s% @" [, q5 I0 `1 M1 r
vole:
, ?% i8 |) \6 P Mtotal 4
3 Y8 S8 ^& N2 Z* e) B3 Z" a+ _' v-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvole.log
; W$ P: |& Z& c$ k! J( G
) {) K1 ~5 y3 w. y" ^volf:
3 B$ I9 g g2 {$ c6 a ?total 4& l& B0 R% c6 w1 `. f; g
-rw-r--r-- 1 root root 1151 Feb 3 16:55 wefsvolf.log
1 z& e; a1 k1 l[root@k8s weedfs_data]#$ g# ]6 [1 K- Q: E- _' X$ |
同样的操作也rack2和3也创建相应的volume1 M6 ]& v8 F7 [: ~% R
^% }7 ^6 y+ P3 r# U, Q& \
[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 &' o3 y2 T" E4 q; L; h3 F
[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 & P# r# I3 _" d) A; B: w' M
服务启动情况/ D* r p4 f; V8 r7 Z5 g6 A
1 @! _2 h, ^- `: p) t! _[root@k8s weedfs_data]# ps -ef | grep weed
6 Q; H E/ a% sroot 16171 15806 0 16:52 pts/3 00:00:02 /usr/local/weedfs/weed -v=3 master -mdir=/data/weedfs_data/master -defaultReplication=001
6 V2 |# O/ G) x9 Vroot 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
$ {" f/ z/ N/ F% 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! r P* z' ~$ z" S) z' f8 G
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
1 r8 M n7 _9 \, X0 H* yroot 16458 15806 0 17:06 pts/3 00:00:01 ./weed -v=3 filer -port=8888 -master=localhost:9333# g* ] X: O: S, u& {, A
root 16811 15806 0 17:11 pts/3 00:00:00 ./weed mount -filer=localhost:8888 -dir=/data/weedfs_data/filermount/data -filer.path=/& k% v0 K. [# 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
9 f* W& }) H7 ~5 {. o- Kroot 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
0 K7 G9 i7 ~- Y$ r3 sroot 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: _( C: S# a! G
root 16873 15473 0 17:26 pts/1 00:00:00 grep --color=auto weed
$ l( V% z) @3 i, @0 s! {上传文件
. v: w, x$ T5 t+ _# k" Z上传文件之前- d$ t& C7 m4 `
" [7 W- s/ p( R6 F. N
[root@k8s weedfs_data]# ll ." i* S% `0 I& M5 P# Q
total 0
' L0 t" i" x. O0 h% b) |( ?drwxr-xr-x 3 root root 39 Feb 3 17:06 filer( l1 c: K4 l3 q3 _, a
drwxr-xr-x 3 root root 39 Feb 3 17:11 filermount! S9 Z8 M8 F0 o1 N, S9 w) W
drwxr-xr-x 3 root root 67 Feb 3 16:52 master
2 s3 h- l8 {6 _1 rdrwxr-xr-x 2 root root 280 Feb 3 17:23 vola r8 V1 t0 S# S8 W" ~
drwxr-xr-x 2 root root 26 Feb 3 16:55 volb9 v7 s: W4 y- }5 {8 r2 L6 J; h
drwxr-xr-x 2 root root 26 Feb 3 16:55 volc& d! g a% [/ q8 U" O; q+ k# t
drwxr-xr-x 2 root root 260 Feb 3 17:23 vold6 t! J7 `, E( s& i
drwxr-xr-x 2 root root 26 Feb 3 16:55 vole/ ]% |* p1 F1 j1 \8 D |8 `$ O3 Q
drwxr-xr-x 2 root root 26 Feb 3 16:55 volf
f$ P# O1 K- A3 G9 ]2 ]& G[root@k8s weedfs_data]# du -sh *
8 J8 B( X) [. k104K filer
?$ Y+ @4 |3 T6 K: _) I- I4.0K filermount9 O& P0 q4 g# l9 @6 i3 T* o
44K master
5 V; q. D4 ]) Z6 |: p* c& N76K vola, |8 v* s) a6 `- Z: v! y
4.0K volb8 Z) l7 g0 d9 s( c/ }
8.0K volc
7 \( s8 b% v. v8 b5 t76K vold
4 s/ ~1 X* K. ^4 X4 \4.0K vole
Z, {( @5 @% p$ u2 z4 H- b7 N4.0K volf
2 E: w3 x0 _* q B. p! m[root@k8s weedfs_data]#
0 ^& `5 w+ D2 Z+ M4 q* l K# v+ _ 上传完以后,再测试了一下下载4 X7 ]. b5 ]% Y: x% k% N7 A
- }, h$ B( V& [8 O& }7 b
保存文件ID) J, O9 V8 y+ Z# y
现在,fid在这种情况下,您可以将4,01c1810497保存到数据库字段中。
/ v8 p" R4 @) }% ]9 ]1 I
\% e( I# ?- |' d( _开头的数字3表示卷ID。逗号后是一个文件密钥01和一个文件cookie c1810497。6 x7 w! a: I$ O6 u: H
0 a9 M' [) P6 E6 u/ u
卷ID是32位无符号整数。文件密钥是一个无符号的64位整数。文件cookie是32位无符号整数,用于防止URL猜测。; K/ N& [3 q; W2 x4 @- J: Y
% V3 Q" l, L8 K- s: p! W
文件密钥和文件cookie均以十六进制编码。您可以使用自己的格式存储<卷ID,文件密钥,文件cookie>元组,也可以将其存储fid为字符串。
1 {7 E$ Z. ~) N U" z( Q& D2 I4 A6 `! n5 }/ V# {6 e$ E- e
如果理论上以字符串形式存储,则需要8 + 1 + 16 + 8 = 33个字节。char(33)就足够了,如果还不够的话,因为大多数用法不需要2 ^ 32卷。4 ^. v; E' b: s
& U9 M/ w8 n/ `( U4 n) ?9 |8 b- z如果确实需要空间,则可以使用自己的格式存储文件ID。卷ID需要一个4字节整数,文件密钥需要8字节长数字,文件cookie需要4字节整数。因此16个字节绰绰有余。- @8 P$ n! A0 k, H( P2 @
& U1 W6 ]3 ~$ U) ~
[root@k8s weedfs]# curl http://localhost:9333/dir/assign?replication=001
a0 m* I5 V6 a$ L3 c{"fid":"4,01c1810497","url":"10.10.3.163:8081","publicUrl":"10.10.3.163:8081","count":1}[root@k8s weedfs]#* C: ]# [0 r5 j9 `" H6 W9 b/ S$ Z2 i& P* r
[root@k8s weedfs]# curl -F file=@acme.sh.tar.gz http://10.10.3.163:8081/4,01c18104977 s$ A- C D( ^+ _5 q
{"name":"acme.sh.tar.gz","size":205121,"eTag":"0e2e8219a406a0cb817f24716caa9432"}[root@k8s weedfs]#
- H3 X: H6 U8 W下载:" L9 W3 H/ o3 l# h* n- ~7 w' X
# P1 L$ D$ u+ }; c+ h- ^. P
[root@k8s weedfs]# wget http://10.10.3.163:8081/4,01c1810497
5 w+ J3 a/ v' P2 }! O, N! y--2021-02-03 17:29:44-- http://10.10.3.163:8081/4,01c1810497
. j4 x x; N% o7 V7 gConnecting to 10.10.3.163:8081... connected.1 H8 J/ B& O' ^5 I& e* R9 S7 y
HTTP request sent, awaiting response... 200 OK: w4 N: p: T; w" k
Length: 205121 (200K) [application/x-gzip]3 a; y! r7 t1 _8 G
Saving to: ‘4,01c1810497’7 m" o6 P* v& Z
. O4 q7 \ S1 _( [6 d9 c
4,01c1810497 100%[===================================================================================================================================>] 200.31K --.-KB/s in 0.001s 1 D+ k' I1 `' m2 G% C8 ?
) t3 o/ L- t6 I) Z& \
2021-02-03 17:29:44 (249 MB/s) - ‘4,01c1810497’ saved [205121/205121]
8 b- h4 J; Y7 } w: R ^
7 W, f' X! ?) {/ }1 t1 U[root@k8s weedfs]# ll. m$ h# L& C5 j' J1 X
total 703688 a& Q( E" \$ Y" A, t
-rw-r--r-- 1 root root 205121 Feb 3 17:28 4,01c18104979 @: t, f* x1 k& X. S; X
-rw-r--r-- 1 root root 205121 Feb 3 16:11 acme.sh.tar.gz7 z* _4 h7 e+ v2 [, Q3 n- Q
-rw-r--r-- 1 root root 5718 Feb 3 17:04 filer.toml
4 W b8 r; v0 A- ^4 R1 y-rwxrwxr-x 1 2000 2000 71629836 Feb 1 12:50 weed7 v3 I9 c# Z0 |% H
比较上传前后卷空间大小变化,可以发现,卷空间增加的大小正好等于上传文件的大小# K& q; k7 g* p9 p A
" U9 s% E: a/ _5 O2 n
[root@k8s weedfs_data]# du -sh *
* ^4 I9 g3 I, Z& b1 a0 V+ h$ I, s: X104K filer
" x& W1 x5 D6 W& ~( m0 n4.0K filermount
# P7 E4 U5 I3 s$ i44K master
/ m- K* ~6 V5 K2 K1 W6 ~76K vola
2 q8 z9 D' P& X* i& d4.0K volb
0 Q5 | W. B! ~2 r8.0K volc
' Y' @- a; w; j, r76K vold
8 @7 `9 B6 @. O7 a& @4.0K vole7 J* `5 K- w5 B0 @( D: n( ~' |' ?
4.0K volf
7 i% j7 z' B2 i[root@k8s weedfs_data]# du -sh *5 C% D4 x) U& L
104K filer
1 k) \3 A8 W# I- h% @4 V4.0K filermount+ E! ~& ^$ |: r/ M5 \
44K master2 J0 p# f c0 {/ N( n8 ^! |8 l
288K vola
( F ]" K6 j+ [7 d: t P% D9 A0 _) ?4.0K volb
3 s i, a1 u! j: w+ B$ K! o8.0K volc/ n5 V6 V+ L& N$ o0 e8 G
284K vold
% i/ K! X* u# v0 h2 M' q1 n4.0K vole
# V+ `* }4 j$ k8 M+ U4 T, K4.0K volf, K2 q" m2 t/ @, ^3 M1 ~, T1 q
删除文件:
. B; p3 {% D+ S$ D因为weedfs对删除文件,磁盘空间释放需要额外的操作,这里做一下测试,验证一下
$ v3 H3 \$ h- L: U调用删除api 删除刚刚上传的acme.sh.tar.gz, p! O9 K! [7 I" {# L
0 ?; U" x8 J) x
[root@k8s weedfs]# curl -X DELETE 127.0.0.1:8081/4,01c18104971 T/ j6 j. g+ e- ^: i
{"size":205147}[roowget http://10.10.3.163:8081/4,01c18104973 m8 T1 ~& x1 d
--2021-02-03 17:34:19-- http://10.10.3.163:8081/4,01c1810497 S# C' N) y `. i1 H
Connecting to 10.10.3.163:8081... connected.
8 Q( I* G$ r+ d+ K7 E" p) rHTTP request sent, awaiting response... 404 Not Found4 M( ^- W6 A4 z6 u2 ~7 `
2021-02-03 17:34:19 ERROR 404: Not Found.
, g0 I( W/ O1 p8 G0 w% J删除在wget 404 说明已经删除,但是果然如官方所说,删除完以后,并不会释放磁盘空间
5 |1 u C- d6 \5 Q [# u" z1 v* ~+ e' B a/ B
[root@k8s weedfs_data]# du -sh *) ~' P; s9 W1 N! U( j
104K filer/ Q1 n" ?9 r3 L. o# X6 G
4.0K filermount
$ C c, M+ a* y" T+ M# i44K master
7 {) ~& C Y V+ y2 s( D- r. i316K vola: z1 u( p x$ n- k7 a0 Z
4.0K volb9 G) {7 `( D9 ]8 _
8.0K volc# c9 R" `0 \! `; d0 s
312K vold& ]2 M+ N) |& U6 h( v: ~
4.0K vole
+ d; v5 {; E! J7 E: h5 R0 n5 g) j4.0K volf
5 P+ E6 A) X$ B. {[root@k8s weedfs_data]#
1 C9 I/ Y& S' i3 k使用下面的api查看卷状态信息,可以看到,id为4的卷文件数目是1,因为我删除了id为4的卷上面的文件,所以下面id为4的卷信息显示"DeleteCount": 1。 (有个疑问是,replication为001的模式,为啥没有看到其他卷上面有删除记录)9 c$ m# ?6 _" }; h# W: Z
6 J: p* M+ H! v5 R) ]/ ?+ [ T% s
[root@k8s weedfs]# curl "http://localhost:8081/status?pretty=y": O6 \4 Z% Q+ L$ C
{) _7 N% Z# X$ A- n* m' g5 B) a
"DiskStatuses": [
4 ?6 p3 A, A ?3 J3 T+ g( ~3 V {' q9 i5 ?" G2 K1 j# w( t4 G; ?
"dir": "/data/weedfs_data/vola",& M; k+ J3 H- P6 ]
"all": 214432849920,
& h z* U+ [' f* |8 {0 y- v "used": 5096587264,
2 @3 m s6 p/ G! b "free": 209336262656,
; j* ]' Q5 F: V/ d7 N* Y' I "percent_free": 97.62322,
5 ^: t8 T* b5 j, m6 G5 {* Y "percent_used": 2.3767755. v) Q# }) C2 w0 B J' Q
}0 o( n& X9 p' U/ O( W# \
],0 C" v; h! J4 E ], N# i
"Version": "30GB 2.23 318a3d2",' l/ L% K% c- A1 Z4 s
"Volumes": [
3 @. P/ E1 w; g1 m3 y/ j {
6 p- v0 z; ?7 A0 Z9 j1 A "Id": 1,
1 U5 O' i" r* |7 b/ ~. V "Size": 0,- K7 J: x! S' W; j- Z
"ReplicaPlacement": {# Q/ ~; D4 l: F9 J. z" Z$ d
"SameRackCount": 1,, [0 [" d+ D& O/ k
"DiffRackCount": 0,
% _. _0 T) {; E7 u X! M% R2 B "DiffDataCenterCount": 0
5 e$ G( C, m5 f2 Z1 |* @: h },
* X4 s: m5 ]3 d; e% N) U2 Z6 s# a, v "Ttl": {
; s. k. p& ^8 G7 i "Count": 0,! X8 c7 X$ }/ A- j0 ?8 [2 s* e% T
"Unit": 0
" x/ {) W) D% w/ j- Q# f },
, b4 [# j7 j4 L7 ?) { "Collection": "",; H$ B. u' Y8 Y6 ?
"Version": 3,# V# @8 _" N2 L5 e! x. F, P) Q
"FileCount": 0,& _& w3 S4 U: E# N
"DeleteCount": 0,
/ V9 [- }( n' O5 Y X "DeletedByteCount": 0,
; Y1 j* Y; D( t( ~! I2 f "ReadOnly": false,4 m% s0 }5 ~/ s" y
"CompactRevision": 0,
* b5 \0 B& j5 r' O% } "ModifiedAtSecond": 0,' Q! y* K3 B5 i% s4 S
"RemoteStorageName": "",
2 p, {6 N( W/ x: V "RemoteStorageKey": ""
( h* n, X/ O/ _$ i" ~5 r& x' W },- p& O' W, s! g) |- g. y
{
A$ C, {2 j+ a, W) O9 g6 q "Id": 2,/ f: _9 a+ ^) V: X u# W6 E+ J; E
"Size": 0,5 w e+ v. i0 k
"ReplicaPlacement": {
, O* Z5 Z) h/ a2 Q9 ? "SameRackCount": 1,
V) }9 r$ }& u( P. Q "DiffRackCount": 0,* |1 _7 ?% K& v
"DiffDataCenterCount": 0
5 K- E+ }/ R, U2 n3 U0 v8 g3 ] },2 K2 Q5 j9 O6 [/ A8 D6 q2 o
"Ttl": {" H( {9 L/ A4 s# T" c: r
"Count": 0,
/ l( Q* w$ g1 t) \/ ` "Unit": 0* T! j& |+ A8 E- ^' ^8 S- o
},
! n5 c) y, |9 X/ U8 d; q "Collection": "",
. g# b B ^; D$ t9 u( n4 h "Version": 3,0 B" S' ]& Z' d+ f; b$ n
"FileCount": 0,
+ z1 }, R) o, Q) c6 c5 j "DeleteCount": 0,
9 f. t: b }; `( z" b: U "DeletedByteCount": 0,2 ^# |2 l# A2 H2 W+ k9 @2 u8 R
"ReadOnly": false,, v! A+ v" S1 \( N
"CompactRevision": 0,
/ @1 P. A1 W" H/ u0 ^ "ModifiedAtSecond": 0,
) w$ u, f; X) |0 G4 G8 v( J& e "RemoteStorageName": "",
; [1 p2 D6 n+ u9 Y "RemoteStorageKey": ""2 b" ~0 V! V# k
},) R- S* u& T5 y: q2 K+ w+ o
{' {2 G5 M$ g5 R5 m6 d1 F8 o, B
"Id": 3,
3 `6 |& x9 p: E, D" p0 H "Size": 0,/ a$ B; q1 r: X7 q2 [; U
"ReplicaPlacement": {
9 o0 |3 S' H1 m+ L8 f, L "SameRackCount": 1,7 r! {+ ^! e2 S% q2 B1 ]) \/ f
"DiffRackCount": 0, b1 \6 r$ T4 F( F) C( G
"DiffDataCenterCount": 04 }( f0 ?: D5 F3 A* F
},
3 S9 A) A8 s$ t" p "Ttl": {
' ?6 q% i4 s; d% U0 J7 ~- S "Count": 0,: T X, t* t1 U- g
"Unit": 04 x1 }+ n% R9 l9 O4 ?
},
6 @. `# P$ E. A" }; G' b "Collection": "",% R7 L* ~% H1 V) W1 Q7 S
"Version": 3,
) I$ h! u+ N/ c; {/ Q: p "FileCount": 0,4 a* z5 j4 p+ c4 V4 K* W
"DeleteCount": 0,
Y( k6 G( n2 F0 q5 G. @! C "DeletedByteCount": 0,
3 ~) Y8 ]8 Z3 O$ J "ReadOnly": false,
6 Q1 K) J4 y+ O% j6 q( n9 j; V "CompactRevision": 0,
) |/ t+ ?( D" L" P "ModifiedAtSecond": 0,
9 G0 I: G) M3 y1 ^ "RemoteStorageName": "",% R6 B6 y2 l! n- P% i
"RemoteStorageKey": ""
9 M3 m* ^5 J1 @" z- o },
% X: K) h- L% y8 G, z {
2 E3 q0 f! Q8 n# W "Id": 4,
7 q) v7 R0 n0 x$ k9 H "Size": 205147,
3 ?% k1 r/ [7 S "ReplicaPlacement": {/ P$ T4 K% w# D" f, P" t$ P
"SameRackCount": 1,+ _$ i1 N" T) c7 _8 E1 A( c
"DiffRackCount": 0,
. I; R* T) \, Z5 G9 ` "DiffDataCenterCount": 0
) \/ K0 H7 |1 X }," `4 m* Q8 I9 `
"Ttl": {2 V" g4 p3 T# P e# r( N
"Count": 0,
6 K9 i b* s4 o& Q$ ~5 T) A" y" e9 r "Unit": 0
: w m d# Q9 }& y3 H9 C },! n/ k; e" W' Z& m
"Collection": "",' \7 _$ k% z$ c/ i
"Version": 3,
$ H, ? F. g/ h. N8 E "FileCount": 1,. E7 [( t+ ^! |- W' q% p$ F
"DeleteCount": 1,
% T/ j3 o- C- M& `1 h "DeletedByteCount": 205147,
( v2 [ r( _% y: Z/ t& b' {( j "ReadOnly": false,
; f: ?+ n+ ^2 g- }8 f \: W7 N "CompactRevision": 0,
! Q% _/ u: K" i% x* m3 I "ModifiedAtSecond": 0, X8 `( a& j2 G# {
"RemoteStorageName": "",
4 `- @6 W. \' K! ^5 e4 V9 j& p. L "RemoteStorageKey": ""' F( D2 j0 C! H6 ` P
},, ^# [# _, a0 |
{, p5 w* C7 Y5 i/ ? M3 W
"Id": 5,* e G0 t0 u4 Z% D+ x, c* L
"Size": 0,5 O- k5 S5 y `6 ~* _/ p; ]9 s
"ReplicaPlacement": {
" l E$ |- B; w* y, Q7 k "SameRackCount": 1,
z/ Q2 d; s- a, F: j! V "DiffRackCount": 0,, l& a. q4 C7 Z* J. ^; m
"DiffDataCenterCount": 0
6 K& y" V8 g; u9 g5 ^/ v },
% a4 B) H) K; i& e, E9 u. S' v "Ttl": {, |" W6 Y/ p" ~8 t, i! x; Y2 E
"Count": 0,
2 j- y5 f- S9 D* m- m "Unit": 0( \( I' E( r# K8 m( \7 o, a- j
},. |2 z: y6 `$ p* D9 J7 o
"Collection": "",4 h' o/ G# l# X
"Version": 3, K' }, ^% p" j7 A6 \
"FileCount": 0,
* ?; v# ^3 s% q6 q- A1 e% R4 \ "DeleteCount": 0,
4 }& \$ {: `3 Z" i: @ "DeletedByteCount": 0,8 U+ j9 T) ~& r' t
"ReadOnly": false,
% x2 B2 M- v" t, ^3 N( S "CompactRevision": 0,$ l" n% u. b4 U6 _& s6 R; ^
"ModifiedAtSecond": 0,
3 ]# m% H8 g1 k2 m- r; } "RemoteStorageName": "",5 r9 M5 u/ U* ~% g; h# P
"RemoteStorageKey": ""$ b8 H9 p4 w6 y- d
},
; d n1 [& K/ a$ @ {
' S! Q5 [; S5 Z' g, [ "Id": 6,3 t$ P7 e' h) c' T% H* a
"Size": 0,1 C0 d$ b' O; c9 j- X8 d+ W. k
"ReplicaPlacement": { X: P# N* {; P' b
"SameRackCount": 1,0 {! u8 c- o. ?
"DiffRackCount": 0,
- G* k2 ]8 _6 b* U6 ^ "DiffDataCenterCount": 0, }8 ~$ U4 t/ L C# W( t9 h
},
, X. T2 r2 s* O2 [/ N0 l2 r "Ttl": {
4 Z9 G" |6 H$ ` "Count": 0,
e+ j7 N2 Y# k" O: G' E "Unit": 0; x9 S* x% E q* ^, I" k! m
},3 c7 S6 X7 \; Z+ e5 V5 V% G
"Collection": ""," p7 m U4 R, I
"Version": 3,
: Q P" `) S5 k9 ?7 O8 a4 Z. d "FileCount": 0,$ Q# X/ i3 ]# R8 E) ^
"DeleteCount": 0,1 J4 ~+ O& A2 F
"DeletedByteCount": 0,9 B+ l3 @0 M, l# t9 N
"ReadOnly": false,3 `( _0 m% L3 }2 o4 }, ~; r
"CompactRevision": 0,
0 @2 l, p+ b* e' w# ^0 X "ModifiedAtSecond": 0,
8 o2 |/ n; \ h' c, ?1 |( c [) y "RemoteStorageName": "",* A& z( e5 F) |7 g4 ^' k, z) ]
"RemoteStorageKey": ""( J# i' ^- T4 f5 ?; ]3 t, `
}
# @1 z2 E( n6 r7 S" f1 R ]. G# X" h: q1 q! r
}1 E( N% w( g" u( T5 M
既然空间没有释放出来,那么我们就按官网的说明,手动释放一下。( c" i `, R; ]. Q
6 z3 {# h: @$ u. J- ]
[root@k8s weedfs]# curl http://localhost:9333/vol/vacuum3 d% I7 |. D* z: s2 i( o% R" T
{"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]#
- L# [3 p8 K7 V4 Q$ m/ w& {! ]" J前后对比3 t( a' [6 |, G' D
6 D; ?3 J+ k) O% q# ?/ T: a; V; Q[root@k8s weedfs_data]# du -sh *
& M) ?% E( T/ D8 [5 G104K filer
; N# X' a/ E1 X4 V4.0K filermount
" Y) M+ m# H6 S: Q44K master
; s" X, J% M/ C$ w316K vola: @. F: N3 q" s, Q- G+ a0 E
4.0K volb* A$ m, d x+ ^' U7 p, n
8.0K volc
E5 D$ a+ ?7 @$ m. J" |312K vold
4 t8 f- N& z$ t/ @% Q3 z0 T4.0K vole7 D, a0 y* Y2 n1 y5 t3 ]
4.0K volf3 H; {0 j' i8 u
[root@k8s weedfs_data]# du -sh *
6 T4 o; C6 v! d- h$ |# K104K filer& P) I# Y3 ~9 K' |. S% s* T. Z% [
4.0K filermount* v- c4 w6 B5 s) P' k) Z- W( S7 `" j+ M
48K master
8 I4 n4 k6 {) A f) i: h180K vola
3 b. O1 a5 \7 G& J" `- Q* x9 f4.0K volb0 E" h! n& y6 P6 u' ^- ~
8.0K volc
A% M; l7 k+ v0 S176K vold# i O% S: q8 w$ e) {) y1 N9 N1 w
4.0K vole
6 A( x6 ^9 d: [: c# o, c% L4.0K volf
& x/ [+ c9 _$ O9 Q. X+ A[root@k8s weedfs_data]#& y y5 m# P1 s+ j7 a$ u
发现磁盘空间果然被释放了。这个时候再查看一个卷信息4 I) d- ` J* s
5 p4 F) [ F" B C3 J C
[root@k8s weedfs]# curl "http://localhost:8081/status?pretty=y"
0 R+ w& T' G; B( \4 P{, ~6 t5 S; L2 d. ?. a7 K3 I
"DiskStatuses": [7 w8 R/ E# o8 N% P' z
{+ t i% P- k4 O J
"dir": "/data/weedfs_data/vola",
$ Z9 F9 N, q' c' z: S "all": 214432849920,& y/ F: K9 V$ r+ ^( t3 {5 P5 M
"used": 5096337408,
4 s% }( h2 j0 \# {' P: l5 N "free": 209336512512,; I, J5 a: r! }5 C% L. w3 e! l/ z" \
"percent_free": 97.623344,% p& [7 O; Z9 F+ S8 p6 R5 o
"percent_used": 2.376659! \' q1 U3 J$ N! e! M: F1 }# N3 u
}/ Y4 [8 f! D( I7 ?4 W
],4 m$ n* D+ d: l. ~8 p2 K
"Version": "30GB 2.23 318a3d2",9 s7 Z% f& [3 A
"Volumes": [
. ]( L# m5 V. p6 B. Z0 } {
" |' F) U. `( M3 M) l" T "Id": 1,+ r U0 J1 i o6 q
"Size": 0," u0 G: L2 M! q: y" z$ E
"ReplicaPlacement": {$ z! e b& N2 v* M1 U# e: x1 X
"SameRackCount": 1,
' q. X; D- u! X* B: \) Y+ I3 q/ V "DiffRackCount": 0,! X- t) ~3 `2 l4 d: o3 ^, T
"DiffDataCenterCount": 0 {! K* c }8 j8 z( p) G
},
$ }0 X( F+ |% y' y% } "Ttl": {
# b/ Q) G2 c; L! h "Count": 0,
% B! |8 j0 e e2 q0 ^" }7 E% Q "Unit": 0+ ]3 O: L7 B# ] ]0 o) L
},. N1 ~9 g7 J$ t. V* ?
"Collection": "",+ S2 ], M. \; |$ t( ^2 W) o6 P3 u
"Version": 3,
& }# @6 p) w5 k8 F "FileCount": 0,: S8 d0 ?- C. Y4 S4 X+ B& r
"DeleteCount": 0,
6 X7 }5 j$ u! B2 z, }. G "DeletedByteCount": 0,
6 u' n" h' O# E$ j "ReadOnly": false,/ \& b2 \0 a/ s" v
"CompactRevision": 0,' o, c5 _ c- V- V; p, k
"ModifiedAtSecond": 0,
% v! l: N# t& U, Q B, _ "RemoteStorageName": "",# m$ s2 q* b( V x" U& u3 K0 @
"RemoteStorageKey": ""# |$ s% l- v+ ~/ r0 H2 g
},- B- _ w" z+ N( f0 x: F
{
: X4 \. ?6 k6 h! h' a "Id": 2,& l3 ?0 R9 j8 p K# _
"Size": 0,
' s9 d# g; z, k5 x C/ r "ReplicaPlacement": {
+ M& b8 K: l' I5 s1 c7 @ "SameRackCount": 1,
: o1 Z& b t, z6 F "DiffRackCount": 0,3 D5 z9 R7 @, D9 I2 ]
"DiffDataCenterCount": 0- c1 l/ T z; v- H
},+ |& ?/ T: d p) u8 Q/ | m2 g0 ?
"Ttl": {: {7 i( I1 e1 t- v& Z% Q
"Count": 0,+ ~$ U7 ?: T8 @3 H4 c
"Unit": 0
4 y! {! j, V. |* ] },4 }0 `- ]% T' q
"Collection": "",
, v+ _2 @1 o' l1 X4 ], S4 z8 ?+ H3 U5 T "Version": 3,. U) q8 j* k, R" Z* E* y
"FileCount": 0,3 ?5 I/ S; A& F! W; }
"DeleteCount": 0,
* r/ ~+ s$ x. W& t& ^ "DeletedByteCount": 0,
2 F* R/ { i7 G" L' [5 | "ReadOnly": false,
9 f1 L K- H, T4 f "CompactRevision": 0,. Q7 R% }* C4 y' W" d
"ModifiedAtSecond": 0,# W- l( ~ S5 N z4 @9 B2 A& G
"RemoteStorageName": "",
& Z9 q" A. l G. U* o; l* {- Y "RemoteStorageKey": ""0 L5 f5 M. A) D# y. b
},( }7 Z& B( d! o
{
0 K1 V' C2 Q3 K% s& B% B: j "Id": 3,
/ c P- A& j# g "Size": 0,
* s+ d2 L+ f5 A0 E/ L$ Q "ReplicaPlacement": {5 P8 C- g1 Y0 L0 j0 g' x8 Z5 R
"SameRackCount": 1,
! W. R+ g' _# T/ } "DiffRackCount": 0,/ H% T9 H9 Z% h2 r: A5 ? X
"DiffDataCenterCount": 0
- T7 Y+ h0 z4 s) j' ]& L },8 B- _' Y7 ~- R) A
"Ttl": {
; c1 {$ k) T6 | "Count": 0,% J4 J; Y- A9 h# d; S% e$ l
"Unit": 0
& a/ p9 i2 ^1 j- ~$ ^; [' S },+ D6 [ I$ ? S: m7 \
"Collection": "",
: k, T* W/ w5 f5 I$ G U& Z, d "Version": 3,
- J: h. ?! w. L7 M' {+ s j& o/ C "FileCount": 0,
6 g6 m" a- E$ F7 V8 y "DeleteCount": 0,4 ?2 Y$ H# ^) e
"DeletedByteCount": 0,
+ [; z% V2 [- n5 q# I* @% t5 e: ^ "ReadOnly": false,
. K+ h6 i V9 U# E "CompactRevision": 0,
. @ i/ I! S+ t) x3 ]( F, { "ModifiedAtSecond": 0,6 j3 p) R( x5 s3 J6 P8 h* a
"RemoteStorageName": "",) `- W) b9 m0 v0 _
"RemoteStorageKey": ""
$ g- S( \2 ?2 _( I' l) e1 H },4 _* t; W3 p1 U: y" |
{
- q; z$ I7 A1 y9 ]) e "Id": 4,
+ s. ~( d( ]1 X0 @; E "Size": 0,8 X! N$ s9 |$ y
"ReplicaPlacement": {
& F3 P8 N1 u, o7 A7 q: t "SameRackCount": 1,
* u" C3 a) g+ y$ d4 S1 l: R/ j "DiffRackCount": 0,
6 w+ d5 ]# a. @5 q8 `/ E "DiffDataCenterCount": 0
d4 Y, E* H5 Z& a; l% B },& v/ N: d: A2 O1 p! N9 J
"Ttl": {3 C) D5 M+ J7 u6 m: j; F! a5 _% h {9 H* J
"Count": 0,
* u! N( m4 k2 ?+ F7 [ "Unit": 0$ b/ n: F1 `" e6 J
},
x' C$ U2 v, e# K @9 K& y "Collection": "",
; N' J8 P( R( {1 l "Version": 3,2 M" U' ?( g) g& M; k$ R# ?5 @9 x
"FileCount": 0,
% j# C/ ?, L$ y8 k% ] "DeleteCount": 0,
9 U* W5 n" }$ Z9 w "DeletedByteCount": 0,. A# h! g% L# _4 q. x2 I+ D
"ReadOnly": false,
# y. O+ n6 f/ q: T "CompactRevision": 1,) Z" L2 s0 o5 h* N0 F
"ModifiedAtSecond": 0,* _! Q1 e2 h5 M: K" |: F' n& V/ |; |
"RemoteStorageName": "",
! ~% Q+ K$ T3 y7 e/ j/ C; E/ w "RemoteStorageKey": "": J% L n' E( `2 R; g3 B5 S$ C
},
) R+ t: Y" Q# \& U# K% T0 k {. f% D) p0 z- r7 D* Z3 N
"Id": 5,9 S7 Q' B! z( \1 ]( V
"Size": 0,
& _2 g4 u( V0 ~! J$ t- ]' ~+ n "ReplicaPlacement": {
$ J* h0 t% U. l% \8 U3 D, s "SameRackCount": 1,8 g( B6 X4 t. M2 G& i
"DiffRackCount": 0,5 p. ^2 }9 H. S" p/ A7 g3 ~6 e* [
"DiffDataCenterCount": 0
7 |" O+ g4 P% y1 t [/ a2 ] },- y9 l d# b: X" o2 O
"Ttl": {
' u: E: ], a7 B; V4 { "Count": 0,
& [5 y# r$ }# R& O "Unit": 0
H8 Z/ H0 g7 c* U6 [ },; d# w8 K" \% i. @7 J! l* ~' a
"Collection": "",
& L7 h& P+ L4 k7 r: T- V "Version": 3,
* I" ]* i, f/ X "FileCount": 0,
" a+ j& @3 L x9 i, o d- d9 K( n "DeleteCount": 0,
! r8 Y. D- W* ?0 s "DeletedByteCount": 0,6 n0 l, y1 R- R: {9 Q
"ReadOnly": false,
3 p2 x( G8 s1 s* O& { "CompactRevision": 0,
3 H3 K0 u+ }8 `9 s/ A/ e+ f5 J5 y "ModifiedAtSecond": 0,
- C( O4 ^, ~2 @2 ? "RemoteStorageName": "",
! Q! g! |2 ?" c4 `8 ?; o2 k4 ] "RemoteStorageKey": ""
0 @" r t7 c% [. x },7 a& ?% F! ^: \
{( y m- y2 V. H+ K7 [% \6 O
"Id": 6,8 R( e: l! A3 b) V( z- E
"Size": 0,
: }' n4 Z" r# Q: q5 Z "ReplicaPlacement": {
' L# ] X5 U7 E* h5 O6 W "SameRackCount": 1,
* G1 D8 _. Q% F "DiffRackCount": 0, I/ D' _. I' l9 _/ g; V
"DiffDataCenterCount": 0! Z h! ], o% O2 @- C
},
+ c Y- U" x9 j+ s: ?: F "Ttl": {
( [: K* V$ P/ _1 Y "Count": 0,: T1 I& j" p4 @2 T- U* B# O
"Unit": 0
- |$ Q) [: R$ l6 X+ @/ I- f9 } },7 h; A2 d2 S- \9 D. m; d$ Q4 [" ]
"Collection": "",& D) C% O r" w' \' O
"Version": 3,* F% k" w+ k% x5 c3 f" E& }% i4 x
"FileCount": 0,. P; e/ w; O s5 i5 `
"DeleteCount": 0,/ Q" C" G( v- _0 E4 M
"DeletedByteCount": 0,
, x9 }7 q, i) Y- p8 ^ "ReadOnly": false,
9 M+ F1 O) r Y( w6 ?5 a "CompactRevision": 0,
' w- v# U$ Z R1 S "ModifiedAtSecond": 0,
6 s8 F5 D; \) P8 X "RemoteStorageName": ""," H5 v& f5 F& ?, ]2 f4 E
"RemoteStorageKey": ""
4 Y C' {5 e) j4 S% q4 ?5 A% J }
) \5 h* L* N" n5 R2 k) f* g8 H ]
6 l. }& w; |& N}[root@k8s weedfs]#
5 F4 C: T: {& E) t: R发现id为4的卷下的DeleteCount也变成了0了,验证了官网所说。
- c- x9 Y. h8 Y- m1 y0 z/ I
) j- C' P/ H% u0 J. d常用api记录+ m, Q+ Q- F. I. I+ {: R' |* ]6 E
weedfs的使用
! t; y: Z+ r; d" e- Imaster
* Y/ w8 F" l$ E$ j9 E* e" p申请volume信息:curl http://localhost:9333/dir/assign?replication=001 ###文件上传首先需要请求master, 去分配一个逻辑卷和fid* n! X* q# `9 ^3 q
查看集群信息:http://$IP:9333/cluster/status?pretty=y# @( G% S6 B5 Z L
查看某个卷的上传信息:http://localhost:9333/dir/lookup?volumeId=3
4 V% y* ]9 J* _, I" \* {& ~上传文件:curl -F file=@/home/chris/myphoto.jpg http://127.0.0.1:8080/3,01637037d6
- x* \- M; ~3 g, u3 g$ ]# x请求一个上传了的文件: http://localhost:8080/3,01637037d6.jpg' ]6 _/ A7 x- O0 K5 I* n
删除文件:curl -X DELETE http://127.0.0.1:8080/3,01637037d6
0 m4 p4 Z" |* R, H0 J T/ g& V查看集群toplogy结构: curl “http://localhost:9333/dir/status?pretty=y”9 ?+ z! z7 H; s, f& T
上传一个目录:curl -F file=@/home/chris/myphoto.jpg http://localhost:9333/submit
9 X) C% b! I6 h2 @# H3 I/ M# i1 C5 y强制垃圾回收:curl “http://localhost:9333/vol/vacuum” curl “http://localhost:9333/vol/vacuum?garbageThreshold=0.4”9 n Z) v& i5 o0 s
给某个collection指定volume的数量:curl “http://localhost:9333/vol/grow?collection=staff&count=1”9 ^/ [2 F# Q# [5 R1 P8 h- |% f
$ \3 c6 L# ]8 h1 ]" p# {
volume
9 d0 j9 y* \* X: L, l查看volume中某个大文件被分块的清单:curl http://127.0.0.1:8080/3,01637037d6?cm=false
; v- { n0 s, g# Q% d! m8 f查看卷信息:curl “http://localhost:8080/status?pretty=y” ##可以看到删除了多少文件,以及删除的大小。这个对调试还有多少空间没有释放很有帮助4 h3 b, X, N! i
2 F8 h1 ?" v; B" F! Z下面是使用filer的一些api: `4 E9 ~! v w9 ~
( e. _. H' g4 b5 I8 R, _+ v/ E# POST a file and read it back1 M/ d3 w) A. p5 H
curl -F "filename=@README.md" "http://localhost:8888/path/to/sources/"
9 [9 D$ r! c8 z! Q9 n+ H7 lcurl "http://localhost:8888/path/to/sources/README.md"$ ]' g+ Z t' P3 L" R7 q0 S0 H
: q2 ~; [# W! N9 v# POST a file with a new name and read it back' Y0 U9 e) {$ j+ t2 B4 u! s3 w
curl -F "filename=@Makefile" "http://localhost:8888/path/to/sources/new_name"2 m0 t/ H( o2 X4 H m4 M$ |& E$ ]
curl "http://localhost:8888/path/to/sources/new_name"& n3 \$ I- }5 o9 l9 P5 v, a9 v
0 ~# }3 |" m# W/ @# list sub folders and files, use browser to visit this url: "http://localhost:8888/path/to/"& f; N7 Z7 x. G' {" C
# To list the results in JSON:
* d+ b$ _6 S/ o) q+ Gcurl -H "Accept: application/json" "http://localhost:8888/path/to"
' i$ z; W( Y/ Z# Q: {# To list the results in pretty JSON
) ~& [) k7 h$ \, dcurl -H "Accept: application/json" "http://localhost:8888/path/to?pretty=y"
. a* m: l- r4 s' h6 w7 T9 m( l/ o5 |+ x
# The directory list limit is default to 100$ n" z/ c' V7 y. b$ ^; E- f5 X9 C }
# if lots of files under this folder, here is a way to efficiently paginate through all of them
3 E. X: n- i u6 u$ o, b, ^http://localhost:8888/path/to/sources/?lastFileName=abc.txt&limit=50
8 j$ ^$ l- j1 ?# T+ ]* c4 Y: t. z; u5 y4 k4 Z8 [* H# U6 y
; B4 h( }; B. T1 v3 F
|
|