找回密码
 注册
查看: 478|回复: 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)上。
1 |& Q# p" t8 ~. r+ {/ M' _
实现规划
主机名称
机架
IP地址
安装软件
开放端口
绑定域名
M1
* e  i" T4 v6 S; R
***.100.100.49(公网)
* e1 a4 `* y$ J+ }. q3 ^) s! v172.26.188.150(内网)
Redis(端口:6379 密码:asdbgt123456)# c. J, x! ]& _4 Q% y. c8 R
SeaweedFS的master服务
6379 (内网开放)0 C4 E# P& W0 S! f1 V
9333 (内网开放)
3 }$ c: m4 m+ m# E19333 (内网开放)
3 _8 N: w7 A  \8 d0 R  j; L# p
V1
rack1
***.92.29.143(公网)
: h/ U4 J6 x- X: K6 C  R172.26.188.151(内网)
SeaweedFS的volume服务% Z; ]" z; I1 z5 L" n/ G. q
SeaweedFS的filer服务
, m. n7 J, `9 s2 dNginx
80 (公网开放)2 P6 Y% H/ Q9 N* m% u
7777 (只读端口,由Nginx将公网请求转发到此端口)
6 I8 }% g2 s9 j& D9 [( u8080 (内网开放)7 M' }! x4 k4 E7 b* I$ f
18080 (内网开放)
2 |/ [7 H1 v& h6 ?$ y) V) _4 c8888 (内网开放); z1 p) q; V) T; u
18888 (内网开放)
img1.diyhi.com
V2
rack1
***.100.150.81(公网)" a4 L7 b1 T% J5 f; j
172.26.188.152(内网)
SeaweedFS的volume服务; {) Q# u5 `! l4 O1 }* {, t
SeaweedFS的filer服务7 G  ~) L) K2 ~+ I9 {
Nginx
80 (公网开放)
7 K# Y5 t3 i1 g7 d) t/ g7777 (只读端口,由Nginx将公网请求转发到此端口)
% A& ?+ H$ F$ g+ ]8080 (内网开放)
! x4 H/ B: g1 P6 ^. W3 j4 m8 E18080 (内网开放)7 U5 a4 j- G9 @$ Y( {
8888 (内网开放)4 B+ F2 H5 m* _1 v
18888 (内网开放)
img2.diyhi.com
V3
rack2
***.92.122.114(公网)
  }5 V( ]- D' G7 r; _+ {3 _172.26.188.153(内网)
SeaweedFS的volume服务
3 o% J% Y( }  Y7 S0 D. JSeaweedFS的filer服务1 L9 W$ j* m6 M% F: r$ Z. o) t
Nginx
80 (公网开放)$ s2 p( [6 }2 t9 H* B: x4 a2 A! x
7777 (只读端口,由Nginx将公网请求转发到此端口)% Z9 ?1 n$ f! ?4 ~
8080 (内网开放)
0 j2 x: i$ g+ g; {; W- K9 e6 L4 Z18080 (内网开放)
2 ?4 q/ m. Q0 j: i8888 (内网开放)- T0 z' N9 E" Q' g$ m3 x/ A
18888 (内网开放)
img3.diyhi.com
V4
rack2
***.100.154.197(公网)9 \0 R- V/ I6 N7 T
172.26.188.154(内网)
SeaweedFS的volume服务( C, ]9 _$ v0 \  W" d1 e& \! d1 x
SeaweedFS的filer服务
% A5 X- ~; T. oNginx
80 (公网开放)3 W9 r2 w3 c; D/ r) g
7777 (只读端口,由Nginx将公网请求转发到此端口)
2 K1 P  C9 ^! q; [8080 (内网开放)
1 N2 g" X* T) \* ^18080 (内网开放)% l# V  l$ q$ k6 P  k
8888 (内网开放)- w2 Q% g. T7 d$ r5 ?
18888 (内网开放)
img4.diyhi.com
S1
$ M5 Z4 f0 P  [5 Z
***.100.153.26(公网): p7 x" M) o. z2 Q, J2 V4 {/ r; G
172.26.188.155(内网)
JDK 1.8
0 k. E) o6 g5 h; ITomcat 8.5
: a' K0 R6 j# k2 ~# IMySQL 5.7& [8 c2 `/ v2 K/ P/ H8 T2 u5 [
Nginx
80 (公网开放)
shop.diyhi.com

8 M2 X( U( m0 I* q# \下载安装
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
1 ^6 B& Q9 V- k' J* K, p! F输入命令 mkdir /usr/local/seaweedfs/data
- s1 }* T) e! ^3 N* z7 `" `
  u. M/ W' w# f) Z/ n, X* e( r
master参数
cpuprofile
string
cpu配置文件输出文件
-defaultReplication
string
默认复制类型(如果未指定) (默认 "000")7 t4 `* h. U  x% G& s$ u( S' ~
000: 只存储一份,默认设置
% Y, W: G% }2 @+ c9 I001: 在相同的Rack复制一份
: X" n" ^3 D/ l7 o) {+ j- y010: 在同一DC的不同rack上复制一次
+ w9 Z$ |. o( b# S0 m8 [0 ]100: 在不同的DC复制一次* D0 U8 }' D: F1 Z* V  Z& A" F
200: 在另外两个不同的DC上复制两次  q/ o! Z* ]1 F
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-disableHttp

+ A* e" B4 `) y2 G1 T  P
禁用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地址具有写入权限。 空的没有限制。
2 b! a; s+ y3 c$ H* \2 T+ S- g1 Y% R
volume参数
-cpuprofile
string
输出cpu配置文件
-dataCenter
string
当前卷服务器的数据中心名称
-dir
string
用于存储数据文件的目录. dir[,dir]...
-idleTimeout
int
空闲连接时间 (默认 30)
-images.fix.orientation

! _8 h! j" j- n. v! b8 u2 H) \
上传时调整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
8 E8 c% F! [: I3 }1 X! P8 W0 f
重定向移动或非本地卷。 (默认 true)
-whiteList
string
白名单 逗号分隔的Ip地址具有写入权限。 空的没有限制。(卷服务器上的白名单将在即将发布的版本中弃用。)
/ d9 x' Y" M# i7 h" b! s
filer参数
-collection
string
所有数据都将存储在此集合中
-dataCenter
string
首选在此数据中心写入volumes
-defaultReplicaPlacement
string
默认复制类型(如果未指定) (默认 "000")* Q5 z/ C- d+ H6 {, N
000: 只存储一份,默认设置4 s& }, I5 l6 ~7 l4 {: M; w$ g
001: 在相同的Rack复制一份
+ [8 w' a6 r# A: N010: 在同一DC的不同rack上复制一次
- Y4 t7 B% f+ E100: 在不同的DC复制一次  I* x+ U9 a% [( C2 `" U0 a$ o$ @1 l+ R
200: 在另外两个不同的DC上复制两次
- C3 w1 k+ M) t1 `% @110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-dirListLimit
int
限制子目录列表大小 (默认 100000)
-disableDirListing

% i- t2 q+ N9 _4 R
关闭目录列表
-disableHttp
( t, b  w4 p8 [: a0 s( D: i
禁用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
- o* p5 I6 w7 v5 c' X
是否在文件GET请求期间代理或重定向到卷(volume)服务器
  T4 N6 r2 e! O$ k- R" K% @( }8 O
grpc端口
grpc端口为-port +10000 如果您使用“-port = 18081”启动卷(volume)服务器,则grpc端口为10000 + 18081 = 28081
, A+ W) |! e/ {$ G4 F8 F) y0 c7 s默认的grpc端口:
  `1 \8 G! v. H6 W& O) b1 @主服务器(master) -- 默认http为 9333,grpc为 19333
  h2 ^" x9 G/ r# C) W卷服务器(volume) -- 默认http为 8080,grpc为 18080- x: _$ X. N# ]( H( X
管理服务器(filer) -- 默认http为 8888,grpc为 188889 [" }2 [. [% S4 _
7 o- c! [. v  }3 A2 ]
/ U$ m. A* b1 I4 ]6 v
IP地址" port protocol="tcp" port="端口号" accept'
7 V! q8 B1 v' Z6 _9 M#例如移除9333端口策略& y- F/ R4 D7 h6 ]2 K8 X* j0 d
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'# Z1 k, `7 x, x3 k: o* y" W
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效0 @* O) L' X5 y

6 c4 o8 v" u) c+ S5 m% w1 E; A) X) s( R# J
; L# Z; T* @8 C. U" V5 j1 m
IP地址" port protocol="tcp" port="端口号" accept'
$ C: Z5 o' g" k' F5 ]5 T#例如移除8080端口策略# i% E6 ~' ~4 q& u$ `9 Z
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'0 g( C5 W7 ?! n7 l5 w$ V& j) r
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效
3 c( \3 Z8 Q+ @1 ^( k" P3 G

. z8 [! ^; ?  b7 m* q
' f' z: P4 }* B& p
/ {$ D9 L7 t# Y2 H& [* y# p2 i" B  [$ c/ hIP地址" port protocol="tcp" port="端口号" accept'. k. b+ n2 o+ M4 U) L; D; p7 R3 Q
#例如移除8080端口策略& k& f) l1 ~/ z% N! a, q# V/ j3 X
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'7 T( B# ?* _5 v+ h! N& b
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效7 D1 R  N; \0 s7 \2 h

! f. q9 N- l( J" g' j1 W2 M- s6 {# m

! {" i+ Y' x4 u* J; v4 m  x! T卷服务(volume)配置 主机:V3...  ...
' _8 b* s" j7 r" a: |...  ...
* Q. B) q4 \, \% P省略的教程和上面的主机V1,V2配置相同
. S6 a- b; a% W4 d, `0 k# w7 E; e...  ...
6 x. B% H  V& Q...  ...7 n; \5 D$ x0 y: [
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复制7 \0 l7 {  x  M

' {8 a9 Q5 d  R7 r& ?6 `0 [2 j0 f1 _. `  j5 {; z+ u! ~7 ?
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26" H; q* q3 N! G4 _/ k
...  ...
' U* Q4 S' w9 N; `! g...  ...
# x# G6 E5 A8 Z0 ^0 F# h. p0 e...  ...
4 e9 m* c+ M* P' y$ _9 F配置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;     }}复制
' G* _" l; e( @) a; ~; Y& H3 }' p7 g( c. b+ J5 p, t) G
8 P' d7 M1 Y  X' W% P/ t9 J
5 l" t$ E, n! A: @. a* a5 |8 H
7 T; m+ U( d$ F
...  .../ ?" x" f! b/ C) l0 X& R
...  ...2 S) V5 p$ {9 W) l$ T* T
...  ...
: \7 e/ E1 }3 L' f1 E. k
# H- G1 c9 F( g% }1 o& J0 `3 e
( @7 l/ N( w( c2 i! o
8 B3 L8 B* V% N) l
卷服务(volume)配置 主机:V4...  ...3 D7 {. O% g$ A- {
...  ...
5 e- e/ g7 }: E7 p+ ~$ k; B: k省略的教程和上面的主机V1,V2配置相同+ ?' l8 {( C: L$ I5 o
...  ...1 w, V$ F6 e6 ]8 ~8 i0 H8 R
...  ...- v% C9 J* c2 M! O1 Z
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复制" Y7 z" |# z* s6 q8 z5 ~
: O, b; R; I- d2 h/ o

$ I8 {$ T; ]2 F$ }
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
/ Z8 ^' Z$ {( ~/ J...  ...
! J4 A( i- `) p  K- H  A& y8 X...  ...
4 o6 S5 I! F3 z; j...  ...
$ q! `/ m2 G% Q9 B配置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;     }}复制' x  W" }4 F* ]0 Y- ]- H

: w" Q, P" j" h0 S+ v! ~% G( i4 L; f- p8 k

) h5 I1 G# u8 p9 L' L, c
( b2 E" G, ~" Y3 e% t9 i1 G- |  z...  ...* R- Z4 ?' [  _" f
...  ...
" y8 z7 v: n. V7 p...  ...* B. r3 h! R0 S* r& I8 n3 w. @
4 M: S% t. ~" o4 E1 q! l' m
8 d' C, ^! w- n% y% U/ l
" C  g$ N' N( S. ^2 g5 G4 K% v
商城系统安装SeaweedFS配置参数
# A6 @9 Y8 c, ], D+ _- _
商城管理后台分布式文件系统状态图
2 U/ c! K" M  V" j
/ Z. G2 Q2 X3 ]) P
备份逻辑卷(volume)
使用自带的backup命令可以创建备份,在一个磁盘空间充足的服务器上运行“weed backup”命令进行备份。假如我们要备份第5卷。
A、进入目录/usr/local/seaweedfs/
输入命令 cd /usr/local/seaweedfs/
B、建立存储数据用的文件夹
输入命令 mkdir /usr/local/seaweedfs/backup4 g1 @$ z- \" R. [1 T0 D3 n. g
C、执行备份命令
输入命令 ./weed backup -server=172.26.188.150:9333 -dir=/usr/local/seaweedfs/backup/ -volumeId=5
( ~; x0 j* r9 k, D4 y, I  Z
远端不存在的volume ID也是可以运行的,但不会在本地创建任何文件,如果远端增加了此volume,则下次备份会进行同步
此命令不是服务,要想连续运行需要设置为定时任务,每次运行都会和本地卷比对一次,进行增量备份,备份多个volume可以用脚本遍历一定范围的volume(如1-100)

* p8 s+ ^: g5 k* _- ^
" j- H" A. N' H5 d& {3 [& o+ ~

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-12-8 08:50:27 | 显示全部楼层
那么我们就可以执行如下命令进行备份(注意替换自己的server即master地址和weed执行文件的位置)' h, R+ E* j2 Z) g/ r, j2 M" c
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=1
" k+ g- y* V8 T  t/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=25 }; V% y, X, c4 O! X
... ...
; E- ]! J5 F, W1 f8 V3 V/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=199  v4 g. h: a. }* M) g
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=200
但是我不可能写200行命令,所以可以参考下面我编写的shell命令,来执行备份(注意替换自己的server即master地址和weed执行文件的位置)
! x8 D+ P  q+ C1 ~: _/ v#!/bin/bash
2 a  L. `# J! I0 Q  \+ J  m; Bfor i in $(seq 1 200)
. ^4 A* {. D* I5 T1 T4 Q- ddo9 Y3 g3 s# w5 c% X" _
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=$i3 W+ ^( P+ N; o2 W% [
done
我们可以看下备份完成之后的备份文件大小【193G】
如果filer使用了store,那么还需要备份下数据库,数据库的备份根据各种数据库类型备份不同,这里就不赘述了。
Async Backup 方式
详情可以通过官方wiki的解决来看下,下面我就我的理解与操作进行演示说明
这里使用的是weed filer.backup的方式进行备份的,这个命令在2.30版本之后才开始有的。
可以通过help查看一下帮助文档
首先我们要通过scaffold获取标准的replication.toml
weed scaffold -config=replication6 k" X6 R6 L( P
现在次备份支持两种模式,一种是与filer同目录的,增量备份,一种是修改的单独文件夹。看下官方的说明。
我这里使用的增量模式,也就是第一种,所以配置is_incremental为true,部分有效代码如下
[source.filer]
3 z' A& a* o) @, K# u- X& ~enabled = true
/ u2 N# q1 [% C; [  K3 ggrpcAddress = "localhost:18888"* s- a4 B# H8 M
# all files under this directory tree are replicated.
; [% @* E9 c% C( l2 }" X9 p* ^. }# this is not a directory on your hard drive, but on your filer.$ y6 y5 o$ B% I9 p& ~+ M# a: c
# i.e., all files with this "prefix" are sent to notification message queue.0 t. H/ s) {( `7 h
directory = "/buckets"
+ d! y' A4 J' |4 n[sink.local]- K: e& L- d) ]
enabled = true
# k# l8 E, [9 ^3 T3 a2 |; a" R) @# p2 Sdirectory = "/backup/cdn_backup": n2 {, Z5 S! ]* o
# all replicated files are under modified time as yyyy-mm-dd directories$ Q% \- d8 z9 o) g- U# e9 c
# so each date directory contains all new and updated files.
  L$ B' ]0 H0 [9 M. wis_incremental = true
8 i7 l8 m0 m3 i3 A* c
配置文件中的source.filer中虽然已经配置了directory,但也可以在执行命令的时候进行配置,如下所示
PS:这里我执行是在与replication.toml同文件夹下进行执行的,你可以可以根据seaweedfs的官方说明,放到指定的位置./replication.toml、$HOME/.seaweedfs/replication.toml、/etc/seaweedfs/replication.toml。
2 t' t# O3 N2 O# }" G./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 02:10 , Processed in 0.083135 second(s), 29 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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