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