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

易陆发现论坛

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

SeaweedFS分布式文件系统配置

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

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

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

x
下面介绍在CentOS系统下的SeaweedFS配置方法,演示主机操作系统为CentOS 7.6。本次演示使用5台服务器,1台主服务器(master),4台卷服务器(volume),在相同的机架上复制一份副本。使用Redis管理文件映射关系,Redis安装在主服务器(master)上。
1 B4 p, O$ n& ]1 Y' |
实现规划
主机名称
机架
IP地址
安装软件
开放端口
绑定域名
M1

5 e4 j* H& E& z  r4 t
***.100.100.49(公网)
8 }5 T5 _: N+ }( l1 k172.26.188.150(内网)
Redis(端口:6379 密码:asdbgt123456)
! A& s# J( w" W6 N* [SeaweedFS的master服务
6379 (内网开放)" G$ b' t4 r! o. u$ Z# a; k
9333 (内网开放)
( H; {% c4 W0 L& j2 x1 \# e19333 (内网开放)

/ C, _! _9 v; \' S, P
V1
rack1
***.92.29.143(公网)
/ u! P6 t8 q" M% G% y172.26.188.151(内网)
SeaweedFS的volume服务
& `2 o# w: m9 O5 RSeaweedFS的filer服务
' r4 P+ v$ o) A7 O* ]1 h0 ENginx
80 (公网开放)
: ^: U/ \: N4 T: R7777 (只读端口,由Nginx将公网请求转发到此端口)' L7 o, K9 C, N4 C7 {5 Y, C
8080 (内网开放). f* a- w$ }8 w
18080 (内网开放)- V7 f1 B5 e3 R8 C+ s+ {$ P- C
8888 (内网开放)/ s# E3 m2 a4 q* w1 b$ R
18888 (内网开放)
img1.diyhi.com
V2
rack1
***.100.150.81(公网)
" S4 _1 E) G+ @/ g$ m2 X4 j! S8 V172.26.188.152(内网)
SeaweedFS的volume服务
2 H! O, Z0 j9 K& i  f) ?& h- q" fSeaweedFS的filer服务5 M" `1 R" d: J# R% W
Nginx
80 (公网开放)' ?3 L  d3 W9 H4 J# n3 @
7777 (只读端口,由Nginx将公网请求转发到此端口)
9 m7 b! Q7 J2 F. t" g8 C8080 (内网开放)& W0 n- S( N$ A* ?2 n
18080 (内网开放); {7 _4 B( r; q
8888 (内网开放)
) {/ W& u6 T1 p- \18888 (内网开放)
img2.diyhi.com
V3
rack2
***.92.122.114(公网)* B- i6 r/ ^8 p# A  k% W
172.26.188.153(内网)
SeaweedFS的volume服务8 A/ A" A3 w: r0 W4 w
SeaweedFS的filer服务
" }! Y; h, q. j! [: _Nginx
80 (公网开放)
! B9 M9 g" v! [' W6 B7777 (只读端口,由Nginx将公网请求转发到此端口)
* \3 Z. ^6 I# C3 y% ]- q8080 (内网开放): a2 t4 N* \! x# R8 p
18080 (内网开放)
( ]3 o6 q6 z' n; ]3 @4 x  O  U8888 (内网开放)
+ h3 O- n6 s( j4 [% ?$ z18888 (内网开放)
img3.diyhi.com
V4
rack2
***.100.154.197(公网)2 L) J% Q* Q6 J( t7 u+ B- J% M
172.26.188.154(内网)
SeaweedFS的volume服务
: T9 P: a9 {' n1 c6 C( WSeaweedFS的filer服务6 a1 X' @- t7 a! B% L
Nginx
80 (公网开放); u, o2 u0 M! N! I0 x
7777 (只读端口,由Nginx将公网请求转发到此端口)2 K6 o( ~4 g( a% l( d- w
8080 (内网开放)
4 \* Z" ^0 @5 \, z* A2 }18080 (内网开放)
+ U- P* L) Q' Y6 N4 A' b' f8888 (内网开放)
5 e6 y  M$ y9 o# b18888 (内网开放)
img4.diyhi.com
S1
& \5 I; R8 E  R; Y' r( y
***.100.153.26(公网)- K# V4 f" F0 w9 `0 l- I( f3 U  G, A
172.26.188.155(内网)
JDK 1.8
2 W$ T  {6 a, \* Z# q4 U' X3 ]Tomcat 8.55 e/ x8 c7 _: R: E; N
MySQL 5.7
9 a! S' g# K% k8 M' ?; p% ZNginx
80 (公网开放)
shop.diyhi.com

* R4 r' A% H$ M下载安装
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/ I& r- T1 S. E+ {( \. g" P, W
输入命令 mkdir /usr/local/seaweedfs/data
1 t' ^* `5 W& S4 l1 X) e: k" C" w 200.jpg ! Z' F& _' o% ]4 x' @: o4 I
master参数
cpuprofile
string
cpu配置文件输出文件
-defaultReplication
string
默认复制类型(如果未指定) (默认 "000")
! b3 T, W( b3 `# I' _000: 只存储一份,默认设置8 `; a/ Z( N5 J/ Z
001: 在相同的Rack复制一份
' z) v3 Y* n6 v7 m010: 在同一DC的不同rack上复制一次
% ]* X" K  `" B  V+ I100: 在不同的DC复制一次- u/ u; d" O+ f- z7 K3 h" {
200: 在另外两个不同的DC上复制两次
7 \6 Y3 m# a0 F110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-disableHttp
# W* a3 ~% ^( j, W% k2 K3 k* Z; U
禁用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地址具有写入权限。 空的没有限制。

' n# L% k- }$ ~( o0 \* z, A& A
volume参数
-cpuprofile
string
输出cpu配置文件
-dataCenter
string
当前卷服务器的数据中心名称
-dir
string
用于存储数据文件的目录. dir[,dir]...
-idleTimeout
int
空闲连接时间 (默认 30)
-images.fix.orientation
- ]9 j/ c* d" z
上传时调整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
% x+ L* [' p7 m& H/ P! _: x  B
重定向移动或非本地卷。 (默认 true)
-whiteList
string
白名单 逗号分隔的Ip地址具有写入权限。 空的没有限制。(卷服务器上的白名单将在即将发布的版本中弃用。)
) _  f- v8 C% ?! m/ l' V2 y
filer参数
-collection
string
所有数据都将存储在此集合中
-dataCenter
string
首选在此数据中心写入volumes
-defaultReplicaPlacement
string
默认复制类型(如果未指定) (默认 "000")
/ P% m; u5 _+ g  {0 [8 _& U; F# r000: 只存储一份,默认设置
6 Y% ~/ [. `7 S3 i001: 在相同的Rack复制一份
" N' P6 W1 S. |/ J+ @( X010: 在同一DC的不同rack上复制一次
- y2 s5 Q/ e/ f- e$ m& ]100: 在不同的DC复制一次( i; H- ?* ]) b( @
200: 在另外两个不同的DC上复制两次' `3 B& y' t7 z9 Z9 T) E' b7 M
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-dirListLimit
int
限制子目录列表大小 (默认 100000)
-disableDirListing
! X( @: d  s5 l4 `2 q( [4 J
关闭目录列表
-disableHttp
0 E5 k$ ^( X0 Z+ `# s; F$ }
禁用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

; `- F% q' M+ I$ o" P  u
是否在文件GET请求期间代理或重定向到卷(volume)服务器

1 V( T* {" ~7 v4 Y, hgrpc端口
grpc端口为-port +10000 如果您使用“-port = 18081”启动卷(volume)服务器,则grpc端口为10000 + 18081 = 28081
/ {8 Y/ S7 X$ \' C默认的grpc端口:6 d1 u8 I; J3 E% K
主服务器(master) -- 默认http为 9333,grpc为 19333
9 c5 y6 E' M1 w! r) E' G; ~2 m8 ^卷服务器(volume) -- 默认http为 8080,grpc为 18080* z9 ~# H9 V- S# L
管理服务器(filer) -- 默认http为 8888,grpc为 18888
, W! ?8 j. L: j! \

7 k' y# Q; e2 i& i; T9 o  t1 k
4 B5 @0 T- R& e0 |IP地址" port protocol="tcp" port="端口号" accept'
% l( k9 L0 z1 g0 H( \7 f2 U& _#例如移除9333端口策略: N7 [/ i  O/ K4 ?& Q
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'6 m1 C3 X. e- Q- f! c
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效
8 B$ k( \0 `2 j( X! E0 X0 [

9 ?+ q/ f3 S- w# d9 S- F' U2 h, c, s- R  {& @& \$ X  B9 d9 N
' m* F$ m; t! o8 c3 p
IP地址" port protocol="tcp" port="端口号" accept'" y4 O  I) z8 w' w8 o
#例如移除8080端口策略
8 @4 F: I5 z  x- [7 x* ~. t& ?+ Xfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'# e* D7 L( @: U' ~$ Z* Y  }
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效" X- v9 F3 e; s% }7 c- l) ~

8 U* d" v' J! x2 O, q: b" n4 |% P# ?6 ]% Z3 J, K; c8 E8 ^
1 u/ b1 W" H" k6 _3 }
IP地址" port protocol="tcp" port="端口号" accept'
* a; l4 H3 y4 V" C5 e- p* ]#例如移除8080端口策略
" {! [* {: m' Qfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'0 ~) m+ f) h1 v5 L% R
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效
: @$ S. f7 {: O( E+ o9 T

% \" F3 B" t' K3 i( z0 j$ s
6 Q/ J& H& m& T" k4 z1 p
0 l" u# h4 T& ]% R8 c2 f3 ?: R卷服务(volume)配置 主机:V3...  ...
9 p+ H& w) \, [  T0 t2 v/ S...  ...( p: n2 ^( C% _( M
省略的教程和上面的主机V1,V2配置相同8 d% f' u  D- k$ {$ p& u
...  ...
- r; J6 l% k9 O) b" o# D/ e5 G. P...  ...
3 y+ Y' {7 y. }( A% s4 O7 F7 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.153 -port=8080 -dir=/usr/local/seaweedfs/data -dataCenter=dc1 -rack=rack2WorkingDirectory=/usr/local/seaweedfs/SyslogIdentifier=seaweedfs-volume[InstallWantedBy=multi-user.target复制
6 M2 r; V: `8 a) P8 R) D6 J4 ?0 W! j1 c3 W$ t; N

! ?$ A1 O: z# I5 l/ d
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
% r1 K2 w2 b! x) i, a/ Q$ \1 B...  ...% K  S, N7 v% o6 J
...  ...
' e* o6 C: a2 A% w3 I...  ...2 R$ ]* c' v" K) @& Q" u8 Y
配置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;     }}复制" c* l2 O" G' p1 t2 g1 J

$ U+ H% p$ J' I
7 L3 }' a( A: l$ Y7 G( g7 e4 `1 Q- t3 W  D0 J' g$ ^% `
$ a5 a# e) ]! l  m. }; x' o
...  ...
1 j( X: O! r5 L" h, `...  ...
5 k3 {0 }# E, o; ]+ j+ |7 X...  ...- }1 O2 k1 T! n* D, _' b- ~
: G# J3 U. \* |) N* Y
9 R1 a8 c4 z2 t- r. h9 `
/ i6 K% o1 L+ X- \4 V) a
卷服务(volume)配置 主机:V4...  ...
! y8 l& D  s- m7 |; w...  ...; s5 i" A0 W4 x1 `! W2 u
省略的教程和上面的主机V1,V2配置相同
4 z0 m" ~& c. I2 |...  ...8 q. `5 n4 n- f
...  ...; Y9 z9 B( l2 _* J: i; S- }. T( }+ F# |
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复制
7 }7 J6 c1 u; w1 K9 D7 u  L/ _( F9 J! u3 u# F4 ~* P' m6 @% G& `0 W) n) c

) U; T; k& s: o& Q
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26) L3 Q2 s- f3 f% M4 G1 m. ~5 Z4 z) f8 J: e
...  ...
$ ?+ V+ R) A9 M2 b2 a...  ...
) i5 H9 z8 x/ ~& @+ a) e2 a- b" H...  ...
  A1 p( f( N2 ]+ B  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;     }}复制
/ v; |* l( z' h; a4 U& q* U4 b
) y( O, g$ C5 }& @8 a. a# p% l8 b- E+ m/ U. J* C

7 h7 J2 K/ s0 i; y6 p6 c% V1 X- {/ r: o* L+ D8 b6 C0 J9 x
...  ...
" Y6 M0 P6 Z# v...  ...: L- k; W5 n8 ^% Z
...  ...
+ Z; k4 d- L) d# k
% J$ ~& o/ K* Q- A6 P

& E) k7 D. i. z9 D) n. `& N- m
7 ~) W  D) k& d7 g% @1 p3 b商城系统安装SeaweedFS配置参数 1000.jpg
5 m2 S5 @! S0 G. U4 L! `
商城管理后台分布式文件系统状态图
1100.jpg
9 P# d% W% O& F* ~$ P! F, b) w6 z6 u- b8 I# T& \( x7 b
备份逻辑卷(volume)
使用自带的backup命令可以创建备份,在一个磁盘空间充足的服务器上运行“weed backup”命令进行备份。假如我们要备份第5卷。
A、进入目录/usr/local/seaweedfs/
输入命令 cd /usr/local/seaweedfs/
B、建立存储数据用的文件夹
输入命令 mkdir /usr/local/seaweedfs/backup/ E: y- |2 A% ?9 \$ ^, a' f- L5 U" c
C、执行备份命令
输入命令 ./weed backup -server=172.26.188.150:9333 -dir=/usr/local/seaweedfs/backup/ -volumeId=51 I6 {* L9 }: `( O5 Q$ X$ T
远端不存在的volume ID也是可以运行的,但不会在本地创建任何文件,如果远端增加了此volume,则下次备份会进行同步
此命令不是服务,要想连续运行需要设置为定时任务,每次运行都会和本地卷比对一次,进行增量备份,备份多个volume可以用脚本遍历一定范围的volume(如1-100)
1200.jpg 3 {# s4 M  q% U# {# {9 u

% c$ S1 r5 b9 e) g6 G
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执行文件的位置)
2 |: h/ M) U- x9 ?  R+ R% m" |% [/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=1
3 e4 Y% K; K" P7 h6 C$ N' S! \/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=2" {1 Y- D$ E2 z% H$ g. G
... ...
) z3 U7 C$ M. V- y/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=199
5 {/ r& N- x: H( e! b/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=200
但是我不可能写200行命令,所以可以参考下面我编写的shell命令,来执行备份(注意替换自己的server即master地址和weed执行文件的位置)3 ~! ~: ~5 v' @
#!/bin/bash
! ^4 p6 n, h; b5 {) C) D' ofor i in $(seq 1 200)+ Z# E; C3 P0 a& n2 y
do! l# m, Q* S# s, [
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=$i) z, N1 D+ ?1 j9 K$ E
done
我们可以看下备份完成之后的备份文件大小【193G】
如果filer使用了store,那么还需要备份下数据库,数据库的备份根据各种数据库类型备份不同,这里就不赘述了。
Async Backup 方式
详情可以通过官方wiki的解决来看下,下面我就我的理解与操作进行演示说明
这里使用的是weed filer.backup的方式进行备份的,这个命令在2.30版本之后才开始有的。
可以通过help查看一下帮助文档
首先我们要通过scaffold获取标准的replication.toml
weed scaffold -config=replication( p3 T7 a/ Q& L9 H+ E$ Y2 S
现在次备份支持两种模式,一种是与filer同目录的,增量备份,一种是修改的单独文件夹。看下官方的说明。
我这里使用的增量模式,也就是第一种,所以配置is_incremental为true,部分有效代码如下
[source.filer]0 d" I4 Z3 d& J  I6 W. m
enabled = true
" ^$ R* D5 p) j' O2 f/ z2 h4 x* TgrpcAddress = "localhost:18888"! `8 N, [! E+ c4 K  ]+ b' d4 T, P) y' |
# all files under this directory tree are replicated.6 D' l) Z8 l2 u" l  ~
# this is not a directory on your hard drive, but on your filer.+ Y; d8 ]4 X+ O- Q9 d6 e
# i.e., all files with this "prefix" are sent to notification message queue.
+ e7 ], r$ Z- |3 p0 Wdirectory = "/buckets"3 ?- p' a$ d5 y3 w  {
[sink.local]
' E1 E7 o( e& n( ^4 Uenabled = true
- v* ]# u8 Z# k! z) udirectory = "/backup/cdn_backup"4 d* Q# R! {) Y! a1 _
# all replicated files are under modified time as yyyy-mm-dd directories; o  c" N% h0 {9 W6 ]
# so each date directory contains all new and updated files.
9 d& ^( D9 D8 Ais_incremental = true
$ X% P7 T. Z8 u/ A8 \0 r7 i0 e; |
配置文件中的source.filer中虽然已经配置了directory,但也可以在执行命令的时候进行配置,如下所示
PS:这里我执行是在与replication.toml同文件夹下进行执行的,你可以可以根据seaweedfs的官方说明,放到指定的位置./replication.toml、$HOME/.seaweedfs/replication.toml、/etc/seaweedfs/replication.toml。3 ]% c% O. N4 o8 V2 X
./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-9 13:42 , Processed in 0.056065 second(s), 24 queries .

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

© 2012-2022 Comsenz Inc.

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