找回密码
 注册
查看: 483|回复: 1

SeaweedFS分布式文件系统配置

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-11-29 17:00:14 | 显示全部楼层 |阅读模式
下面介绍在CentOS系统下的SeaweedFS配置方法,演示主机操作系统为CentOS 7.6。本次演示使用5台服务器,1台主服务器(master),4台卷服务器(volume),在相同的机架上复制一份副本。使用Redis管理文件映射关系,Redis安装在主服务器(master)上。
: y/ J( C8 ~4 _! W5 N. W; h
实现规划
主机名称
机架
IP地址
安装软件
开放端口
绑定域名
M1

& N8 A4 O) D2 c4 G/ C9 S; w
***.100.100.49(公网)
/ E: l) }. l7 Y' q3 x+ w172.26.188.150(内网)
Redis(端口:6379 密码:asdbgt123456)' k6 y: t# Q( |: H7 t$ x  t/ l
SeaweedFS的master服务
6379 (内网开放)
, ?1 }9 K# V, {' _9 o9333 (内网开放)
& M( X0 ^+ m2 Z( t$ Q8 a19333 (内网开放)
% K2 X5 m4 M' _& j, m8 `1 R: K/ o
V1
rack1
***.92.29.143(公网)9 C* _- V' [+ R8 T1 G: |/ u% N
172.26.188.151(内网)
SeaweedFS的volume服务) L6 A2 [+ z% E1 l9 I! E0 A2 |
SeaweedFS的filer服务5 o8 n1 L, A# j7 I7 d
Nginx
80 (公网开放)
) N0 D% k# l- K* k) v$ l7777 (只读端口,由Nginx将公网请求转发到此端口)4 h+ d" O+ E9 q2 O; T' F- m
8080 (内网开放)
& y( U* \3 R' x) G18080 (内网开放)
% J, C5 M: Q4 _8888 (内网开放)' _/ V4 }& I0 k
18888 (内网开放)
img1.diyhi.com
V2
rack1
***.100.150.81(公网)3 Y, K1 f) W; R
172.26.188.152(内网)
SeaweedFS的volume服务
/ V) @4 @1 X) ^. B) dSeaweedFS的filer服务
- F0 C7 ^1 i2 W' x# i$ s' ]: @Nginx
80 (公网开放)# T1 ?, z# h7 V: y1 H/ K1 D
7777 (只读端口,由Nginx将公网请求转发到此端口)3 [$ x, Q6 K4 |" A
8080 (内网开放)
) D6 M& X# S3 Y  h1 L18080 (内网开放)
3 a7 ~* [, \& A3 I2 T5 X3 f& D4 s8888 (内网开放)5 W0 r4 f2 x  [" O9 S  Q6 d
18888 (内网开放)
img2.diyhi.com
V3
rack2
***.92.122.114(公网)( H. G2 }! r4 u$ r. m( @, M
172.26.188.153(内网)
SeaweedFS的volume服务3 j- v2 z) F6 D+ k. C. B
SeaweedFS的filer服务
6 Q" ~3 N: Y5 eNginx
80 (公网开放)
  Z* \+ O3 M9 b' C" K7777 (只读端口,由Nginx将公网请求转发到此端口)
7 C' X. W- j1 B; Q0 m$ i: X8080 (内网开放). d2 O+ G$ s' ^2 P* T- M6 G$ X
18080 (内网开放)0 u" T  v0 G7 ~/ }
8888 (内网开放)0 ?8 h$ u' c" a$ s8 b7 q) V
18888 (内网开放)
img3.diyhi.com
V4
rack2
***.100.154.197(公网)* t: F6 K+ R8 `6 y0 [
172.26.188.154(内网)
SeaweedFS的volume服务
3 `  T  T! f% U( S3 R; @SeaweedFS的filer服务
; }' Y, j4 W% P+ \2 _9 j% I! x5 U1 eNginx
80 (公网开放)5 X8 E3 d7 k' F) {. \
7777 (只读端口,由Nginx将公网请求转发到此端口)2 r' F2 h( ?1 f  d) T
8080 (内网开放)2 A5 a) z" r0 G
18080 (内网开放)
! \4 s4 h3 Y7 d1 }8888 (内网开放)/ E, \4 S; W7 _7 l/ w. V
18888 (内网开放)
img4.diyhi.com
S1

4 G: _, ]2 C5 U5 l6 g/ Q
***.100.153.26(公网)" L9 d' n6 I# L9 [
172.26.188.155(内网)
JDK 1.8
# A9 r9 k$ ~% D& {" }: G0 uTomcat 8.55 T4 @$ K) W& `' K
MySQL 5.7- m2 D! u& ]3 z2 g$ \0 l) _1 m# R
Nginx
80 (公网开放)
shop.diyhi.com
' H% v  m. L6 o2 o: O! B8 S( }1 X
下载安装
1、打开SeaweedFS下载页面https://github.com/chrislusf/seaweedfs/releases 当前最新版本为1.41
2、下载对应当前系统版本的安装包,64位Linux适合linux_amd64.tar.gz
输入命令 wget https://github.com/chrislusf/sea ... /linux_amd64.tar.gz
3、创建目录
输入命令 mkdir /usr/local/seaweedfs/
4、解压到/usr/local/seaweedfs/
输入命令 tar zxvf linux_amd64.tar.gz -C /usr/local/seaweedfs/
5、进入目录/usr/local/seaweedfs/
输入命令 cd /usr/local/seaweedfs/
6、建立存储数据用的文件夹,若文件夹不存在启动volume时会出错
输入命令 mkdir /usr/local/seaweedfs/mdata  v3 T* x3 D- D  j- H7 Q$ o
输入命令 mkdir /usr/local/seaweedfs/data
4 G0 g* B+ Q+ x) h& W- Q& j0 @" P# j: @+ K7 y5 W
master参数
cpuprofile
string
cpu配置文件输出文件
-defaultReplication
string
默认复制类型(如果未指定) (默认 "000")& ]# q7 P5 R" Y; p0 E3 B
000: 只存储一份,默认设置
. n7 N3 }- N: }7 D5 h001: 在相同的Rack复制一份" e  d" `& `2 p: [
010: 在同一DC的不同rack上复制一次
7 e8 c7 u5 M2 \9 `100: 在不同的DC复制一次
! K9 `. A! D3 r' e200: 在另外两个不同的DC上复制两次" F9 L$ f" h- |$ r2 x8 S" X) I" p) n
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-disableHttp
9 ~1 ]8 ]* f2 m4 r( y( Q4 I
禁用http请求,只允许gRPC操作。
-garbageThreshold
float
清空和回收空间的阈值 (默认 0.3)
-ip
string
指定ip地址 (默认 "localhost")
-ip.bind
string
要绑定的IP地址 (默认 "0.0.0.0")
-maxCpu
int
最大CPU数。 0表示可用所有CPU
-mdir
string
用于存储元数据的数据目录
-memprofile
string
内存配置文件输出文件
-peers
string
以逗号分隔的所有主(master)节点 ip:port 列表, 示例: 127.0.0.1:9093,127.0.0.1:9094
-port
int
http监听端口 (默认 9333)
-pulseSeconds
int
心跳之间的秒数 (默认 5)
-volumePreallocate
uint
预分配卷的磁盘空间
-volumeSizeLimitMB
uint
Master停止指向超大卷的写入 (默认 30000)
-whiteList
string
逗号分隔的Ip地址具有写入权限。 空的没有限制。

' m0 P* `. o8 h- ]" W
volume参数
-cpuprofile
string
输出cpu配置文件
-dataCenter
string
当前卷服务器的数据中心名称
-dir
string
用于存储数据文件的目录. dir[,dir]...
-idleTimeout
int
空闲连接时间 (默认 30)
-images.fix.orientation

# L& _8 J4 `5 G! X
上传时调整jpg方向。
-index
string
内存模式[memory|leveldb|boltdb|btree]. (默认 "memory")
-ip
string
ip或服务器名称
-ip.bind
string
要绑定的IP地址 (默认 "0.0.0.0")
-max
string
最大卷(volume)个数 (默认 "7")
-maxCpu
int
最大cpu使用数,0为使用全部
-memprofile
string
输出内存配置文件
-mserver
string
逗号分隔的主(master)服务器 (默认 "localhost:9333")
-port
int
http监听端口 (默认 8080)
-port.public
string
可公开访问的端口
-publicUrl
string
可公开访问的地址
-pulseSeconds
string
master与volume的心跳间隔,心跳之间的秒数必须小于或等于主设备的设置(默认 5)
-rack
string
当前卷服务器的机架名称
-read.redirect
( i6 f, M# v: M2 e
重定向移动或非本地卷。 (默认 true)
-whiteList
string
白名单 逗号分隔的Ip地址具有写入权限。 空的没有限制。(卷服务器上的白名单将在即将发布的版本中弃用。)
9 l5 s# ^- z7 v' e3 z" F
filer参数
-collection
string
所有数据都将存储在此集合中
-dataCenter
string
首选在此数据中心写入volumes
-defaultReplicaPlacement
string
默认复制类型(如果未指定) (默认 "000")0 `: |! L0 [! X) i' c0 v  j( T
000: 只存储一份,默认设置: j* N0 C; l4 C5 N; {! Y) X/ z7 @
001: 在相同的Rack复制一份
# h$ o4 m! i8 y8 T& c+ t010: 在同一DC的不同rack上复制一次
" _9 c" Q8 p6 h) ]/ ~! a100: 在不同的DC复制一次
* }( x( A$ x. d& Y7 O200: 在另外两个不同的DC上复制两次5 Q! z! }+ X6 f
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-dirListLimit
int
限制子目录列表大小 (默认 100000)
-disableDirListing
( [5 ^" x. C, L
关闭目录列表
-disableHttp
# o: U- r( B( I# h
禁用http请求,只允许gRpc操作
-ip
string
filer服务器http监听ip地址
-master
string
逗号分隔的主服务器 (默认 "localhost:9333")
-maxMB
int
分割大于限制的文件 (默认 32)
-port
int
文件服务器http监听端口 (默认 8888)
-port.grpc
int
Filer服务器的 grpc监听端口,默认为 http的端口+10000
-port.readonly
int
开放的公共只读端口
-redirectOnRead
" |* V' e' K$ O3 M. `3 k
是否在文件GET请求期间代理或重定向到卷(volume)服务器
0 _1 a/ x! r6 t
grpc端口
grpc端口为-port +10000 如果您使用“-port = 18081”启动卷(volume)服务器,则grpc端口为10000 + 18081 = 28081
- c% s) i+ Q; }默认的grpc端口:3 t: Q+ s, p, X  y
主服务器(master) -- 默认http为 9333,grpc为 19333
. O: u8 b" H- l- }, r卷服务器(volume) -- 默认http为 8080,grpc为 180800 y1 `% D$ u! W$ A& U. U6 P) S
管理服务器(filer) -- 默认http为 8888,grpc为 18888
9 f  T( c0 y( y/ b$ Z4 P% M

7 ?: a. H6 G$ j
" V1 Q9 M+ d- P" sIP地址" port protocol="tcp" port="端口号" accept'" H9 |* m" J0 Q0 N# I
#例如移除9333端口策略
% X8 J3 a$ b/ m4 t: |firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'
1 R, X: z' D2 G# `  f输入命令 firewall-cmd --reload 执行完命令要刷新才能生效) k3 O- G0 A* _, S. H- d" y
1 o2 O! i) C% ?7 o$ y

, n7 j$ o' N/ b# j- K# f. D0 _. b
  _1 Z/ x- Q8 Q5 Y7 PIP地址" port protocol="tcp" port="端口号" accept'" l) A, M- V+ k& H, f
#例如移除8080端口策略# E* T6 a, B6 {! [% C) y; J% p: r
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'' P5 }% W; Z' K: q! X+ N' n- h
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效& [$ C: p8 O% ]2 S8 m5 y1 M0 `5 x

! ~: F$ T6 |, e0 q6 U8 Y
# q& a! E0 R; h: D# |- C/ O8 d3 q2 L* [; Y* `0 ^
IP地址" port protocol="tcp" port="端口号" accept'$ Q: h: g# ]* N$ J7 n- N1 Q' _3 S
#例如移除8080端口策略2 C! x6 Z! m; o2 m! X
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
$ Y, |  v; o) y. p4 v输入命令 firewall-cmd --reload 执行完命令要刷新才能生效
/ c. N% q+ r# j& a+ R

# I* x) p, V* ^7 h5 g8 Q8 \( ], h* [- Y$ s$ k$ T

5 `2 I* M1 a& {' F0 i2 ]( |2 g卷服务(volume)配置 主机:V3...  ...
3 V- v: C1 A* }, D...  ...
/ _  Z+ f1 P6 t1 Q! p; d( J8 c1 O省略的教程和上面的主机V1,V2配置相同
0 X+ D8 T& Q+ ?7 n9 o! R0 b...  ...9 u2 D, v# W: c
...  ...2 ]+ Y8 e! X. L1 u/ O1 J0 C- Y5 h
3.配置开机启动卷服务(volume)脚本
A.增加seaweedfs-volume.service 在/usr/lib/systemd/system目录下增加seaweedfs-volume.service,目录必须是绝对目录
输入命令 cd /usr/lib/systemd/system
输入命令 vim seaweedfs-volume.service
B. 将下面的配置内容复制到seaweedfs-volume.service文件中。请按实际情况更改下面的IP地址。
[UnitDescription=SeaweedFS VolumeAfter=network.target[ServiceType=simpleUser=seaweedfsGroup=seaweedfsExecStart=/usr/local/seaweedfs/weed -v=0 volume -max=5 -mserver=172.26.188.150:9333 -ip=172.26.188.153 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack2WorkingDirectory=/usr/local/seaweedfs/SyslogIdentifier=seaweedfs-volume[InstallWantedBy=multi-user.target复制1 q* _5 k4 `9 e! I. b, H

- b9 G# G7 R, v* P* q8 Z& A$ B( F2 F% C3 O( ]
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
' U9 u; @8 U% I8 p4 p! K+ u...  ...0 O  Q( X; c) b  r' Y; a
...  ...3 |9 @& f$ z6 j
...  ...
1 X5 S, E8 s8 ~1 y9 h' Y/ L配置Nginx转发请求
配置Nginx将80端口的请求转发到7777端口
server {   listen 80;   server_name _;   return 404;}server {    listen       80;    server_name  img3.diyhi.com;    location /{                #屏蔽目录                if ($uri !~ . ) {                        return 403;                }                proxy_set_header Host $host;                proxy_set_header X-Real-Ip $remote_addr;                proxy_set_header X-Forwarded-For $remote_addr;                proxy_pass $scheme://172.26.188.153:7777;     }}复制
. h# b. T8 K1 |/ G* ^4 W
# Q( m: F! J+ n* G) D) k) P+ f" Z8 P) T% L) ?7 \4 _
) D/ n6 Y) E5 L( f
% c( r0 G1 V  R2 ?. I9 s5 Y* t
...  ...
0 }0 j- P: S  D9 j...  ...
0 f& y) J4 f+ t6 W: ^...  ...
8 H. Y  T7 M1 j: v

8 A9 Y) o- b- ^' Q% A( |, l, o; Q9 l( _/ z1 B" E8 d, P
$ X5 n, |8 o3 p1 G0 M4 _
卷服务(volume)配置 主机:V4...  ...
* @8 M# W/ Q4 O' p' O...  ...
, Y( f3 O( Q8 M: x4 Y9 v# L省略的教程和上面的主机V1,V2配置相同, `0 a/ u: _0 V8 e# w$ O1 V6 ~
...  ...  ~2 E" _5 t0 b: P! f; \& N
...  ...
9 h* y4 P8 N9 H9 N" w% P
3.配置开机启动卷服务(volume)脚本
A.增加seaweedfs-volume.service 在/usr/lib/systemd/system目录下增加seaweedfs-volume.service,目录必须是绝对目录
输入命令 cd /usr/lib/systemd/system
输入命令 vim seaweedfs-volume.service
B. 将下面的配置内容复制到seaweedfs-volume.service文件中。请按实际情况更改下面的IP地址。
[UnitDescription=SeaweedFS VolumeAfter=network.target[ServiceType=simpleUser=seaweedfsGroup=seaweedfsExecStart=/usr/local/seaweedfs/weed -v=0 volume -max=5 -mserver=172.26.188.150:9333 -ip=172.26.188.154 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack2WorkingDirectory=/usr/local/seaweedfs/SyslogIdentifier=seaweedfs-volume[InstallWantedBy=multi-user.target复制
, h2 q8 G8 _# r+ C+ [8 T$ u0 m( N5 e. s, D) T$ A

0 E  Z. K; y, u7 Y9 `
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26' u( e# @* b5 h, u6 H" q  E$ t; @
...  ...
: p0 e3 x) D% M% X+ c7 M...  ...
. R$ ?4 O3 [6 G. V# ~( s...  ...# Z5 Q% ?; q% G7 w6 h8 p) P9 W5 K% o
配置Nginx转发请求
配置Nginx将80端口的请求转发到7777端口
server {   listen 80;   server_name _;   return 404;}server {    listen       80;    server_name  img4.diyhi.com;    location /{                #屏蔽目录                if ($uri !~ . ) {                        return 403;                }                proxy_set_header Host $host;                proxy_set_header X-Real-Ip $remote_addr;                proxy_set_header X-Forwarded-For $remote_addr;                proxy_pass $scheme://172.26.188.154:7777;     }}复制
' K+ Z4 c5 L8 U0 n- {, o9 j" C! l9 m1 @' z

  H' Y- P1 c9 S' n1 w
! c( v6 W$ A! Z4 g1 q5 [$ D+ L3 k$ b! s9 R2 q% j; T% P  A
...  ...# v1 P- k  {% l, N6 d) W# o9 P
...  ...
: P& S6 o& ~6 i. V6 c...  ...
9 S1 a8 z" s2 O! ^4 G8 X9 y, y

9 S0 b5 z$ g" Q, u
, f4 Z# S9 W% {6 v, ]; L/ S: Y6 D5 f. h: R! j
商城系统安装SeaweedFS配置参数
, b# ~1 ?" ~3 `: o0 W' x5 s
商城管理后台分布式文件系统状态图
- w4 _% ]+ |) F3 G) h9 v
2 ]4 }0 q+ P: W5 _+ M1 R
备份逻辑卷(volume)
使用自带的backup命令可以创建备份,在一个磁盘空间充足的服务器上运行“weed backup”命令进行备份。假如我们要备份第5卷。
A、进入目录/usr/local/seaweedfs/
输入命令 cd /usr/local/seaweedfs/
B、建立存储数据用的文件夹
输入命令 mkdir /usr/local/seaweedfs/backup/ t; o! |5 r" ?) g8 Z& W5 o
C、执行备份命令
输入命令 ./weed backup -server=172.26.188.150:9333 -dir=/usr/local/seaweedfs/backup/ -volumeId=5, {4 S& p$ e7 c7 p5 e/ i
远端不存在的volume ID也是可以运行的,但不会在本地创建任何文件,如果远端增加了此volume,则下次备份会进行同步
此命令不是服务,要想连续运行需要设置为定时任务,每次运行都会和本地卷比对一次,进行增量备份,备份多个volume可以用脚本遍历一定范围的volume(如1-100)

/ r/ ]/ V3 F5 z7 t1 C3 I1 E9 `$ P, y0 s0 y/ g  M$ b1 l

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-12-8 08:50:27 | 显示全部楼层
那么我们就可以执行如下命令进行备份(注意替换自己的server即master地址和weed执行文件的位置)
8 W$ V+ u9 u: D1 y( t- j4 J/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=1
5 J2 N# S) y; s  c5 ~$ m8 t# J- v6 W/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=2
- P; V& X# H8 c5 M... ...# Q0 B( s4 Q& T+ [, P$ @4 x- z4 Z
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=199/ `. p& p6 F7 z1 ~) t3 V) F  M
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=200
但是我不可能写200行命令,所以可以参考下面我编写的shell命令,来执行备份(注意替换自己的server即master地址和weed执行文件的位置)9 u  M- J4 D6 h! X) S6 }2 Q4 j
#!/bin/bash
8 A( o, \( @, n2 J- k/ \for i in $(seq 1 200)& u$ Z1 ]( D# a) H/ g5 m7 k5 q
do
8 |2 q& w! e, T! L5 h: p2 |4 Y& \ /application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=$i) o. h) w: H, r9 O* l/ T, U
done
我们可以看下备份完成之后的备份文件大小【193G】
如果filer使用了store,那么还需要备份下数据库,数据库的备份根据各种数据库类型备份不同,这里就不赘述了。
Async Backup 方式
详情可以通过官方wiki的解决来看下,下面我就我的理解与操作进行演示说明
这里使用的是weed filer.backup的方式进行备份的,这个命令在2.30版本之后才开始有的。
可以通过help查看一下帮助文档
首先我们要通过scaffold获取标准的replication.toml
weed scaffold -config=replication
( {9 e* \" I* L5 Y
现在次备份支持两种模式,一种是与filer同目录的,增量备份,一种是修改的单独文件夹。看下官方的说明。
我这里使用的增量模式,也就是第一种,所以配置is_incremental为true,部分有效代码如下
[source.filer]2 F2 m: k  \% B, J' H
enabled = true
" L8 B' f+ z% Z$ @* A3 W' ]5 AgrpcAddress = "localhost:18888"
7 `6 K8 c" U* S; R1 B/ }; n0 }7 ~# all files under this directory tree are replicated.  {  I7 V* q3 h0 q" P
# this is not a directory on your hard drive, but on your filer.
# ~: o5 n3 Z+ J& ?1 k# i.e., all files with this "prefix" are sent to notification message queue.
+ ]+ {6 I1 L- X% h9 z/ u$ edirectory = "/buckets"
% \. E4 I7 s! _" C5 f[sink.local]6 s: x# U1 V3 p: T1 E8 ?4 q2 D
enabled = true; ^: q) y3 }* \: x" S% r- L! b
directory = "/backup/cdn_backup"2 V! v: q  g7 H9 I& r' |
# all replicated files are under modified time as yyyy-mm-dd directories) \4 p4 m5 l- n% H- N/ L, H
# so each date directory contains all new and updated files.
1 i0 Z2 M6 K9 y: e2 jis_incremental = true
9 ], W- Q; P: ?' I( f$ L- }
配置文件中的source.filer中虽然已经配置了directory,但也可以在执行命令的时候进行配置,如下所示
PS:这里我执行是在与replication.toml同文件夹下进行执行的,你可以可以根据seaweedfs的官方说明,放到指定的位置./replication.toml、$HOME/.seaweedfs/replication.toml、/etc/seaweedfs/replication.toml。
9 D9 v9 R7 v8 ?, L2 b./weed filer.backup --filerPath /buckets/img1
此命令是连续的,也就是实时监控变化,如果你不自动终止,他会一直运行(可以做成service)
此备份方法是备份的源文件,所以不需要备份数据库。
我们看下备份之后的文件夹大下【44G】
两种差异分析
Data backup的方式比Async backup的方式数据差额很大,当前我的测试数据相差【149G】,对于我来说这些空间已经很奢侈了。
但是我们可以增加一个参数查看下占用的空间
可以看到有好多是31G的,但是我们实际的使用并没有达到这个值,原因是因为在启动master的时候,我们默认了volumePreallocate,这个参数会预分配空间,所以致使如此的结果。
那如果我把Data Backup的备份文件使用ZIP普通压缩下(大文件的压缩,数据量小,层级少,一般情况下压缩比较快),可以看到文件的大小是【13G】,这比源文件备份是要小很多的。(当然源文件备份对于删除的在备份的文件下是不会删除的,但是我当前的测试是没有删除的文件的)
那既然这样,我们再把Aysnc backup的结果再压缩下(小文件的压缩,数据量大,层级多,一般情况下压缩比较慢),保证其对比基础是一样的。
从下图可以看到,经过漫长的压缩之后,体积依旧还是【44G】
归纳总结
从上面分析可以看出,第一种方式的压缩之后的占用还是比较小的,而且压缩速度也非常的快,在这之前也可以使用master的volumePreallocate配置不预留空间,这样备份的文件也是小的,压缩之后的文件也是小的。
这种方式需要备份数据库,并且如果要还原的话,需要有相同的环境,包括weed的运行环境以及相关的配置文件及配置文件依赖的各种key。
第二种方法是把所有的文件都存储到本地,即使后续没有weed的环境,也可以查询到相关的文件,但是因为文件的数量比较多,所以备份的速度非常慢,后续越多越慢。
但是第二种可以用增量的方式进行备份,即第一次的时候比较慢,但后续可以通过只备份压缩增量的减少压缩的时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 04:26 , Processed in 0.030517 second(s), 29 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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