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