将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 92|回复: 1
收起左侧

SeaweedFS分布式文件系统配置

[复制链接]
发表于 2022-11-29 17:00:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x
下面介绍在CentOS系统下的SeaweedFS配置方法,演示主机操作系统为CentOS 7.6。本次演示使用5台服务器,1台主服务器(master),4台卷服务器(volume),在相同的机架上复制一份副本。使用Redis管理文件映射关系,Redis安装在主服务器(master)上。

- }) Z" _2 u" D4 [  U实现规划
主机名称
机架
IP地址
安装软件
开放端口
绑定域名
M1
. m2 t% Y* i! A8 {6 T
***.100.100.49(公网)
8 f4 X3 t0 B7 O6 o172.26.188.150(内网)
Redis(端口:6379 密码:asdbgt123456)$ @5 d" k4 |' i2 b1 I: d
SeaweedFS的master服务
6379 (内网开放)
6 Z4 J+ w$ H4 u' ~& }- ~* |2 i! ]/ P9333 (内网开放)
; F# T7 f" R0 A) R: A. l19333 (内网开放)

+ L9 U) H6 p) [" W
V1
rack1
***.92.29.143(公网)1 O" B2 g+ ?7 M  O0 e
172.26.188.151(内网)
SeaweedFS的volume服务
* ^+ v- N: x* V( ^$ s8 \. L5 k# tSeaweedFS的filer服务/ s% }. ]" ]$ y  `
Nginx
80 (公网开放)5 L  ]- j0 X- n: v
7777 (只读端口,由Nginx将公网请求转发到此端口), S* r7 l( s# E7 k/ t: v
8080 (内网开放)
! p% h) k+ W* f0 A3 J: F18080 (内网开放)- A1 `. V/ r3 _9 }; G) g3 Q3 [$ t
8888 (内网开放)
! ?% [7 ?6 `9 P1 L18888 (内网开放)
img1.diyhi.com
V2
rack1
***.100.150.81(公网)8 `( y. a9 Z6 }" f
172.26.188.152(内网)
SeaweedFS的volume服务' y3 _+ W) K, h% f/ t( l9 s
SeaweedFS的filer服务4 @8 T! k+ |7 _5 P7 [0 ?
Nginx
80 (公网开放)' Z# o& Q3 Z9 q1 x( C$ v# X
7777 (只读端口,由Nginx将公网请求转发到此端口)
3 Y3 V2 f4 A+ r) U0 A8080 (内网开放)
4 \& p; _! Q6 {' m8 U18080 (内网开放)
9 J0 v) S  G6 \7 I% c3 @8888 (内网开放)/ j7 u# s/ b0 ~
18888 (内网开放)
img2.diyhi.com
V3
rack2
***.92.122.114(公网)
" }# l& P# Y0 s8 @! i172.26.188.153(内网)
SeaweedFS的volume服务
: R4 _0 O4 Z' r# ?. ~5 QSeaweedFS的filer服务
- m: P) I8 f9 S1 _3 G/ u: v  kNginx
80 (公网开放)5 a  |# A0 e" w' {* m1 f9 n8 K
7777 (只读端口,由Nginx将公网请求转发到此端口)
; d9 t' G) ]5 p( G9 S& e+ |8080 (内网开放)! J& L  Z2 r4 X* J. c
18080 (内网开放)
- t$ r0 x. y# k; a5 m- c( ^1 r; e8 q8888 (内网开放)& H" P9 U, `1 q8 L( k: C
18888 (内网开放)
img3.diyhi.com
V4
rack2
***.100.154.197(公网)
9 D' Y) I2 T+ H. s3 M5 H, B$ c172.26.188.154(内网)
SeaweedFS的volume服务; h& g# X$ r$ }' V& h6 q) u
SeaweedFS的filer服务
' i6 h" z5 W' c+ d' @- u/ r, SNginx
80 (公网开放)& Y- D7 X2 V: a1 ~5 [/ }& M" t2 s
7777 (只读端口,由Nginx将公网请求转发到此端口)
$ o' _$ h4 `! n& ]+ v! X8080 (内网开放)
3 t% r5 q- R7 O& J$ M! W# W  k18080 (内网开放)! a0 r0 T  m5 D
8888 (内网开放)
: m) p( W5 `+ L  j18888 (内网开放)
img4.diyhi.com
S1

  x6 C1 M# }; F8 l
***.100.153.26(公网)
- `, n8 {% X( e4 [& |5 F2 O, U1 `$ y172.26.188.155(内网)
JDK 1.8
. p/ O$ ]$ T  V% M; DTomcat 8.5/ m7 z4 ?2 `8 Y) f4 y7 G
MySQL 5.7
+ \2 g4 M# d, }/ |! P+ GNginx
80 (公网开放)
shop.diyhi.com

( Y; e: N& Q" B, T5 w! U& [下载安装
1、打开SeaweedFS下载页面https://github.com/chrislusf/seaweedfs/releases 当前最新版本为1.41
100.jpg
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: _$ H) R9 n: q; V3 A) {
输入命令 mkdir /usr/local/seaweedfs/data+ H1 h7 g2 a/ r+ J, y
200.jpg
* q+ l2 Z) n, `" v/ Z9 e6 d
master参数
cpuprofile
string
cpu配置文件输出文件
-defaultReplication
string
默认复制类型(如果未指定) (默认 "000")
4 ~9 c: v' ^2 ~# G! u/ Y% h+ p2 x1 D000: 只存储一份,默认设置
2 P, u2 }8 D9 C8 @  I) E+ ?9 s1 u001: 在相同的Rack复制一份
' O3 M+ a; Q7 y- J6 O% n010: 在同一DC的不同rack上复制一次
* l5 l/ E1 O' E. k, q100: 在不同的DC复制一次
6 o6 D8 f$ r" G' P200: 在另外两个不同的DC上复制两次
% j; u0 @# Q# F, ~0 m5 B9 R" N110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-disableHttp

* g* @. |! y0 S  R& f& w
禁用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地址具有写入权限。 空的没有限制。
; U6 E" w) `+ C" Q
volume参数
-cpuprofile
string
输出cpu配置文件
-dataCenter
string
当前卷服务器的数据中心名称
-dir
string
用于存储数据文件的目录. dir[,dir]...
-idleTimeout
int
空闲连接时间 (默认 30)
-images.fix.orientation
" N, K% ?$ }$ T1 ]
上传时调整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

4 Z6 L' B+ W, m# k0 I  B
重定向移动或非本地卷。 (默认 true)
-whiteList
string
白名单 逗号分隔的Ip地址具有写入权限。 空的没有限制。(卷服务器上的白名单将在即将发布的版本中弃用。)

5 G3 V3 V6 ^* |2 J' Q" I
filer参数
-collection
string
所有数据都将存储在此集合中
-dataCenter
string
首选在此数据中心写入volumes
-defaultReplicaPlacement
string
默认复制类型(如果未指定) (默认 "000"), s" @9 O6 w/ M- N) w
000: 只存储一份,默认设置
/ n( _' K5 p0 `: }6 M001: 在相同的Rack复制一份
% q$ t; X  S: ?: F1 g010: 在同一DC的不同rack上复制一次0 U& _* p5 ^/ Z4 H0 a, R
100: 在不同的DC复制一次) C( u1 |. f6 W  N4 F
200: 在另外两个不同的DC上复制两次1 }, H3 S3 W" L0 ~* |3 J2 `- ?; ~
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-dirListLimit
int
限制子目录列表大小 (默认 100000)
-disableDirListing

% O" S1 K, ~5 R7 X# ^6 I6 I
关闭目录列表
-disableHttp

' D# A1 H. t" C$ {* W- M
禁用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

: C& O! I; i( f: m
是否在文件GET请求期间代理或重定向到卷(volume)服务器

, b9 x5 F- B5 \% jgrpc端口
grpc端口为-port +10000 如果您使用“-port = 18081”启动卷(volume)服务器,则grpc端口为10000 + 18081 = 280818 s& h' ^1 |5 c3 V+ K5 Y3 f
默认的grpc端口:
7 X, ?% s) m( a. g主服务器(master) -- 默认http为 9333,grpc为 193335 ~2 u7 d/ E2 j% K" _3 X7 O
卷服务器(volume) -- 默认http为 8080,grpc为 18080
( q2 A0 y% f+ Y2 i8 F6 \3 W+ i管理服务器(filer) -- 默认http为 8888,grpc为 18888
" q  [. g+ ?/ u

' v: x5 H5 U9 P/ `
: [+ `  W! I+ e" Q6 W/ p" `IP地址" port protocol="tcp" port="端口号" accept'
# b+ j5 A; E2 ]: m% E" b# ?#例如移除9333端口策略
1 N8 \! B# ^# [; H0 g6 v7 Cfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'
) X& C' j4 y# A( Y. [! Y9 B输入命令 firewall-cmd --reload 执行完命令要刷新才能生效+ T( p, O) l  ?8 O: p! b8 z; h

/ ~  P2 a" ~5 \) T$ Y; U7 h) [) v* n; t4 V$ d1 Q$ b5 Z2 E
8 v8 u  x7 @* {; w! i# P6 B% [
IP地址" port protocol="tcp" port="端口号" accept'
, q3 I3 Q5 ]" Z4 i#例如移除8080端口策略4 j- q" q# ^4 x, ]$ _
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
0 G' ?$ m9 a. Y6 f( C& a! m输入命令 firewall-cmd --reload 执行完命令要刷新才能生效0 I: c* q( I/ F$ p% q
0 A6 N$ @2 z0 {8 ?. v/ Q' p

0 ~" ^% q$ F. B$ s2 y) }% C
- T% U* F2 _4 T! H% C6 jIP地址" port protocol="tcp" port="端口号" accept'
6 K% u. Q5 r, @6 E* ]* i" a; L4 `#例如移除8080端口策略8 h4 x  Z5 c. ~. v/ r# {
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
2 j7 h7 s% G- a+ Z3 a输入命令 firewall-cmd --reload 执行完命令要刷新才能生效
4 \/ V+ W% I: e/ j

( W! N" Z5 c& ^" L( Q2 ~  d
1 |2 g6 p* F8 p: ?( M% E6 |7 o7 x5 c9 z; c1 h8 [
卷服务(volume)配置 主机:V3...  ...+ q% h& d1 O  M# G' D+ j3 J
...  ...( r; u$ X: o: R
省略的教程和上面的主机V1,V2配置相同
- k5 g2 R3 t+ |0 D7 k* c...  ...
, a" T/ H; O( C5 U* C  _2 ~8 V0 M( P...  ...
3 y$ P& N5 @' Z' h: c2 t8 k
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复制- y6 a8 s0 t  @. s; r

# Q0 D- R9 w& n( D* _5 _/ m; {/ Y7 \! @/ m: l8 M
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
' S, s  }- d. e1 X) Y...  ...4 T3 n# @5 o+ ]& w" m( y  w8 P
...  ...
- _- C+ v5 j2 X! r3 m# x. Z' [...  ...
3 D9 P) U# R2 F( U! h配置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;     }}复制
- T( C+ s! T+ o; R5 p8 p/ U2 D$ I% @- [+ V; W/ j

" n4 @5 B; T& m9 j7 f
( y8 a1 v$ e0 l( a! ]5 }# F2 C* _$ R2 M
...  ...
" c/ z4 f* x! e6 _. Y+ N0 }...  ...
+ G' z# Z% o5 R$ U...  ...
7 ~3 o+ Q/ e7 ~( t

8 K5 A% `# d4 Y1 r4 m9 D( _* a1 }0 X

0 v) t# M+ x9 X7 N; b7 i  O% n卷服务(volume)配置 主机:V4...  ...( M8 R& e6 s8 [; y
...  ...
$ t. t& S: ~8 }! c  ?) @1 o& R) Q9 ^省略的教程和上面的主机V1,V2配置相同' l0 k; x$ c' ~( g4 R
...  ...
* n7 H6 e* n1 K...  ...
( k$ ?9 \! i, x4 G6 k  F$ j1 m
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复制
; U+ d4 @4 r8 g% p
, a3 K# F! O5 X
1 W5 r- W5 `/ q% D- l
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
: f) q0 |( [4 z( z...  ...
8 l/ c' Q* N" O% u' h5 |0 I- `+ G1 q...  .../ @( o0 e9 t' [. f
...  ...; `# I, `  Y- Q# c  o2 i
配置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;     }}复制0 b2 r# R# S( W) P

8 ?! P- D9 Y( s4 ]+ k, S. R* T" c$ V/ X7 B* _0 N

/ Y  x, Y* S( @' E' _" T' o" w9 J1 t; a4 i; ?
...  ...
. [0 u- @1 k2 x3 X1 l$ |6 n4 G, ^- N...  ...
3 w7 A5 B! L' ?3 C' n- H0 @7 g. ]...  ...5 |' x+ f, V0 z0 q" q  Y* p

* \" s  i1 J' F  y* B. g$ L  A6 T$ m3 A. Q0 [6 g6 v
0 Q3 C7 y; D) L8 `
商城系统安装SeaweedFS配置参数 1000.jpg ( Y3 D- _7 U8 w" _# x+ Q! t
商城管理后台分布式文件系统状态图
1100.jpg
2 p" F# r5 n9 [: h2 M
2 j* Y! a. ]; `' s0 `& q4 E, N, b备份逻辑卷(volume)
使用自带的backup命令可以创建备份,在一个磁盘空间充足的服务器上运行“weed backup”命令进行备份。假如我们要备份第5卷。
A、进入目录/usr/local/seaweedfs/
输入命令 cd /usr/local/seaweedfs/
B、建立存储数据用的文件夹
输入命令 mkdir /usr/local/seaweedfs/backup
0 g# d8 C4 E1 r: ]( p
C、执行备份命令
输入命令 ./weed backup -server=172.26.188.150:9333 -dir=/usr/local/seaweedfs/backup/ -volumeId=5. f/ ?& j$ X6 [) }$ b
远端不存在的volume ID也是可以运行的,但不会在本地创建任何文件,如果远端增加了此volume,则下次备份会进行同步
此命令不是服务,要想连续运行需要设置为定时任务,每次运行都会和本地卷比对一次,进行增量备份,备份多个volume可以用脚本遍历一定范围的volume(如1-100)
1200.jpg
# s: Z; B9 g3 i: `% g, B0 o, A( i* {$ W* x4 Q: G( Q
700.jpg
600.jpg
500.jpg
400.jpg
300.jpg
270.jpg
260.jpg
250.jpg
 楼主| 发表于 2022-12-8 08:50:27 | 显示全部楼层
那么我们就可以执行如下命令进行备份(注意替换自己的server即master地址和weed执行文件的位置)! f) Q# `" {! e
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=18 R, Q/ y+ C2 n  X
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=2( ^) z" G/ F4 A. K" Y1 u
... ...% Q4 n7 ?3 J% C* ?3 b- A) q
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=199# E# Q! P4 m6 q# G
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=200
但是我不可能写200行命令,所以可以参考下面我编写的shell命令,来执行备份(注意替换自己的server即master地址和weed执行文件的位置): E: l8 f  i  g: T; K! ]9 |6 S
#!/bin/bash
6 {% t: p4 {/ Tfor i in $(seq 1 200)3 D# e0 i) U: N; B
do1 ~- D3 q- E8 x' I+ _, Z
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=$i
4 T$ Y; _; {, O  _/ L* m4 Mdone
我们可以看下备份完成之后的备份文件大小【193G】
如果filer使用了store,那么还需要备份下数据库,数据库的备份根据各种数据库类型备份不同,这里就不赘述了。
Async Backup 方式
详情可以通过官方wiki的解决来看下,下面我就我的理解与操作进行演示说明
这里使用的是weed filer.backup的方式进行备份的,这个命令在2.30版本之后才开始有的。
可以通过help查看一下帮助文档
首先我们要通过scaffold获取标准的replication.toml
weed scaffold -config=replication" f1 \5 ~" o3 A" Y/ M0 r
现在次备份支持两种模式,一种是与filer同目录的,增量备份,一种是修改的单独文件夹。看下官方的说明。
我这里使用的增量模式,也就是第一种,所以配置is_incremental为true,部分有效代码如下
[source.filer]: I; I+ ]1 Q3 |% D
enabled = true/ _! Z% _. q7 `) c% A3 o
grpcAddress = "localhost:18888"
+ i6 l6 i$ L  [) N  c# all files under this directory tree are replicated.; C9 h, I9 U, a: L8 a8 c- O! V
# this is not a directory on your hard drive, but on your filer.
5 s* }* K; b, E) p# i.e., all files with this "prefix" are sent to notification message queue.
1 |6 n) |, W/ n4 Z: C$ Y5 S( y; Xdirectory = "/buckets"
  M; R* t+ \- v% R[sink.local]
% |' K  U* h0 l1 Q: u. h5 |enabled = true% ?; ~4 U) K" T2 Q
directory = "/backup/cdn_backup"* P& U. ~% n2 Q0 m& z
# all replicated files are under modified time as yyyy-mm-dd directories, E' k& a; R9 _) L
# so each date directory contains all new and updated files.
% X$ V6 X" L3 N& h; W6 Tis_incremental = true
4 M) v' H9 S9 g! f1 O
配置文件中的source.filer中虽然已经配置了directory,但也可以在执行命令的时候进行配置,如下所示
PS:这里我执行是在与replication.toml同文件夹下进行执行的,你可以可以根据seaweedfs的官方说明,放到指定的位置./replication.toml、$HOME/.seaweedfs/replication.toml、/etc/seaweedfs/replication.toml。/ S  A1 d8 o7 B$ P
./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的环境,也可以查询到相关的文件,但是因为文件的数量比较多,所以备份的速度非常慢,后续越多越慢。
但是第二种可以用增量的方式进行备份,即第一次的时候比较慢,但后续可以通过只备份压缩增量的减少压缩的时间。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2023-2-1 01:53 , Processed in 0.083898 second(s), 24 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

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