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