易陆发现互联网技术论坛

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

SeaweedFS分布式文件系统配置

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

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

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

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

& ?9 E" x  M- O$ w" D实现规划
主机名称
机架
IP地址
安装软件
开放端口
绑定域名
M1
$ x! J3 A& m+ p
***.100.100.49(公网)
" A2 c  E. @6 |7 D3 t; s) |+ S3 V172.26.188.150(内网)
Redis(端口:6379 密码:asdbgt123456)% O; Z1 s% k1 y" @
SeaweedFS的master服务
6379 (内网开放)) }: f( ^# X6 C! E# H$ Z4 J
9333 (内网开放)) x+ j4 K1 V% `; F$ H& A
19333 (内网开放)
; V( V+ W& o; g4 S3 u8 u3 ]
V1
rack1
***.92.29.143(公网)9 R3 P; w+ X! }
172.26.188.151(内网)
SeaweedFS的volume服务
3 x  L* x. H8 K8 u+ y( T  SSeaweedFS的filer服务  D& q8 B8 k* n6 P1 U8 h- s+ x
Nginx
80 (公网开放)9 A  H& U: d8 ~3 k
7777 (只读端口,由Nginx将公网请求转发到此端口)  r' Y* ?- G5 }: f. ]- |0 x5 g) p3 i% \8 c
8080 (内网开放)0 B, u# i' V0 a, H) v6 O/ U# O
18080 (内网开放)) w. A' a, j, U4 y
8888 (内网开放)
. b0 B2 P; M+ ?$ I; t18888 (内网开放)
img1.diyhi.com
V2
rack1
***.100.150.81(公网)
6 _- L) `/ k' Q- q1 E2 \172.26.188.152(内网)
SeaweedFS的volume服务
4 m6 N; U" H, H! iSeaweedFS的filer服务3 u/ G) J  x" N0 c$ T+ [$ A
Nginx
80 (公网开放)
' j# @; I/ W- V- |7777 (只读端口,由Nginx将公网请求转发到此端口)
+ \; P' A, n: `( ?! g+ a$ C* F8080 (内网开放)# S* r) q' ]: Y# H; k
18080 (内网开放)
! m0 Z6 b& r3 w# f: N) A8888 (内网开放)4 y; Y+ U" m7 K0 `
18888 (内网开放)
img2.diyhi.com
V3
rack2
***.92.122.114(公网)' V# Q- W2 P" d2 e( L. a% f9 ]
172.26.188.153(内网)
SeaweedFS的volume服务; S& x" d, m: R# |. m
SeaweedFS的filer服务+ ]2 c4 U$ d( z  U6 i
Nginx
80 (公网开放)+ v) Q: H# h/ z0 C
7777 (只读端口,由Nginx将公网请求转发到此端口)  q. r; O8 b: b2 x3 g1 _) H& ~+ |
8080 (内网开放)
) t: K+ m: n, ^% P+ |18080 (内网开放)
- N' A+ t6 l8 e( T7 R% b, P- r8888 (内网开放)( e1 k' \# k: ~2 D: y
18888 (内网开放)
img3.diyhi.com
V4
rack2
***.100.154.197(公网)
7 Z) J( L2 Y( q4 ]- R172.26.188.154(内网)
SeaweedFS的volume服务! A# A' p  e; H1 i; F) e
SeaweedFS的filer服务5 G& {$ {$ {: o4 _3 z" j
Nginx
80 (公网开放)
$ X5 I8 T. ]$ l  O7777 (只读端口,由Nginx将公网请求转发到此端口)
; O  N( `* f6 P" [! z! G8080 (内网开放)9 n4 S6 {4 n. Z9 G/ P. x
18080 (内网开放)
2 t) ?* [; U7 ?* m/ R8888 (内网开放)
& V4 g* O* n& l18888 (内网开放)
img4.diyhi.com
S1

, E/ ]- P4 q: Y
***.100.153.26(公网)
# ^& A% m0 ^! o  S) ?' ]+ L172.26.188.155(内网)
JDK 1.8$ p8 F) F' x. s. B) \# G1 H4 @  M$ z* O
Tomcat 8.5- e( ]6 A4 O: t0 |# V: b
MySQL 5.7
) n. e7 ]5 p$ _, @5 t; [; eNginx
80 (公网开放)
shop.diyhi.com
! g! R3 \  u9 U2 h9 _0 q
下载安装
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: U6 p# _9 s6 G6 h  B6 n0 P
输入命令 mkdir /usr/local/seaweedfs/data
$ v: g. z7 _) l: M" Q 200.jpg . g, x# l4 y! B9 N8 X# H8 `
master参数
cpuprofile
string
cpu配置文件输出文件
-defaultReplication
string
默认复制类型(如果未指定) (默认 "000")* u( v/ G: |4 z8 m
000: 只存储一份,默认设置
/ J+ Q* n) i. D' B001: 在相同的Rack复制一份8 z0 y' n6 W2 i, \; ?9 I& J
010: 在同一DC的不同rack上复制一次
* L" W2 h  w4 H# I4 B+ {! c8 R7 k100: 在不同的DC复制一次
$ ~& A( O6 L7 h/ q200: 在另外两个不同的DC上复制两次7 L9 e/ f" w" ]2 N  y
110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-disableHttp
" R6 N- p$ {) D+ b6 g" N* b) S
禁用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地址具有写入权限。 空的没有限制。

- E1 K$ i; ?1 _. w
volume参数
-cpuprofile
string
输出cpu配置文件
-dataCenter
string
当前卷服务器的数据中心名称
-dir
string
用于存储数据文件的目录. dir[,dir]...
-idleTimeout
int
空闲连接时间 (默认 30)
-images.fix.orientation
! N  c: X1 d( G2 ~$ Q
上传时调整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
1 S# `5 Q4 i0 X- h$ l+ G) W* t0 G7 r
重定向移动或非本地卷。 (默认 true)
-whiteList
string
白名单 逗号分隔的Ip地址具有写入权限。 空的没有限制。(卷服务器上的白名单将在即将发布的版本中弃用。)
3 m4 m  g2 L) p" o$ n8 ~
filer参数
-collection
string
所有数据都将存储在此集合中
-dataCenter
string
首选在此数据中心写入volumes
-defaultReplicaPlacement
string
默认复制类型(如果未指定) (默认 "000")
% a  b6 g" d; O9 a0 d& W- m000: 只存储一份,默认设置" u4 k6 ^5 ^5 Z+ U" d9 Q: N6 e
001: 在相同的Rack复制一份
( J: q7 }  j. f5 n  B010: 在同一DC的不同rack上复制一次
2 _: f2 U. x/ Q( D' L6 j100: 在不同的DC复制一次3 J0 u1 z2 J* F3 r. Y% t
200: 在另外两个不同的DC上复制两次
( j4 C8 E+ I1 `) i2 p# @8 S110: 在不同的rack上复制一次,并在不同的DC上复制一次。
-dirListLimit
int
限制子目录列表大小 (默认 100000)
-disableDirListing

2 U! h. p2 i! t7 P+ F
关闭目录列表
-disableHttp

' _- ~- t! W* K; R0 l, b
禁用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  }9 x+ p4 O0 @( q
是否在文件GET请求期间代理或重定向到卷(volume)服务器
5 D* k3 F9 Z5 L, D) m3 ]( A( D
grpc端口
grpc端口为-port +10000 如果您使用“-port = 18081”启动卷(volume)服务器,则grpc端口为10000 + 18081 = 28081$ Y* c5 i; b1 H6 a
默认的grpc端口:% S5 v% O( L: Z# P* V
主服务器(master) -- 默认http为 9333,grpc为 19333
& q0 |1 S( |" T6 e6 i" c卷服务器(volume) -- 默认http为 8080,grpc为 18080
8 C2 C6 J% u8 Q) R$ s5 u( t4 D管理服务器(filer) -- 默认http为 8888,grpc为 18888
& _3 a+ ~/ f5 J0 _1 @; G, m
* F" I) L8 c! y$ t! |1 {2 {

' P' W+ O2 V  _/ @9 o: aIP地址" port protocol="tcp" port="端口号" accept'
; @' N# @6 ^" v" B  t% e+ _#例如移除9333端口策略
5 ]) k  r. Z$ y3 u& E) A- Y2 x* H8 |firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="9333" accept'7 Z' D. r6 w  l% E5 o9 n0 t
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效- G' G- w! I7 L! T" |! r

1 a4 Z: I& C$ c' d- T4 b) t( r
. r/ K( F$ l. n6 G( m* U4 Y1 h. \% q: q+ A' s+ l
IP地址" port protocol="tcp" port="端口号" accept'0 J% I9 ~" p/ t4 A9 p9 v
#例如移除8080端口策略
8 T& [/ J6 @$ j* i6 F! ffirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'
" A& z9 l4 v8 H9 Z6 B输入命令 firewall-cmd --reload 执行完命令要刷新才能生效9 v6 l! C) D3 X/ {

9 U) q' q7 r" ?4 y: D
+ C+ O, N5 l  r' C/ |0 B1 N1 x) @  ?1 x3 L2 E7 y" u$ A6 H
IP地址" port protocol="tcp" port="端口号" accept'
$ t3 i! {9 N$ D#例如移除8080端口策略
% p4 o: D. E3 Q7 `firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.26.188.0/24" port protocol="tcp" port="8080" accept'' M8 @. E5 J9 k6 ]# E4 v; W5 j0 k
输入命令 firewall-cmd --reload 执行完命令要刷新才能生效( Q9 |& @3 T6 A- L4 P+ S4 R

3 d# v( I1 }% x6 Q- O( j! M# t' {. r1 B3 C: x
; Y( P, f/ R2 j6 Z) G( z$ N- M3 K
卷服务(volume)配置 主机:V3...  ...
4 w/ k5 L1 O& ?5 o5 k: a- R7 u...  ...3 ]5 J$ g! ^$ E8 T/ P! H
省略的教程和上面的主机V1,V2配置相同+ C( c  a+ ?0 C; ~6 u* i* @! t
...  ...- y0 e" X( M' |
...  ...# u* \. z& D% w4 Q; A1 x
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复制; u- {& ]4 I' Z1 @7 @

9 F# T% Y& P# T, O$ t$ O% i* f- _# ?/ i) Z, y; o/ ?+ ?8 s( G  I
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为264 L2 V6 A" H+ J* x0 k" x2 F, o( [) f
...  ...
5 {# `# a0 C7 F4 w% y...  ...0 D. N& L. w$ F
...  ...
" H# z$ {3 g& q: p0 P配置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;     }}复制) s& N, |3 k3 t
! n0 Y, c% s. Z# f  S0 n" T6 \& _" x
# M/ u: h+ h5 _+ e
0 Y! _7 B; L# f  ~5 N. ]9 L+ o
6 ]: I" x  V2 q0 A) r4 L, M1 |
...  ..., h+ t) X+ h0 b0 i& [# u8 L* f) f
...  ...2 K7 x7 O3 L/ x9 o. `3 m
...  ...
" F; p! X3 Q* y- j

$ A8 P3 A" j$ B  i5 h9 ]  J/ J4 \5 a7 K& }( m# {/ s

0 Y9 o/ X% b) A! I卷服务(volume)配置 主机:V4...  ...
& P* E* b$ F# x  j# n( j  V...  ...
2 s1 T8 a2 |" ~9 J7 [: M* b' F省略的教程和上面的主机V1,V2配置相同3 f7 W3 ^+ J& m1 x1 F) o
...  .... `( J3 H/ S0 N  E
...  ...9 }- f7 T# b. G9 F3 E8 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复制/ i' v2 v0 X- ]% u- m% V
1 j! ?. F# x* k6 c

' Z8 M& G" S" ^
保存配置文件后执行systemctl daemon-reload命令刷新
输入命令 systemctl daemon-reload
注意:-max 参数为最大逻辑卷数量。例如硬盘可用空间为800G,则大约800/30 ≈ 26,最大可设置为26
; }. E; S' [( Y' G...  ...
$ Z! x7 B+ [" N2 L6 |2 v0 Q* H0 G! J...  ...! y# k; Q" A6 ~7 D
...  ...! T! T' Y2 X; `: f/ B  s
配置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;     }}复制( a* p- j& H' y3 r5 q0 ]

8 X" T) _9 S! a8 u* {& @! W7 w1 K* P! ?. i/ D

6 C( B8 J8 D# q4 w  n6 y
6 G/ m, [  \% F...  ...3 }8 F/ W! ], {9 z; y$ ~- ~
...  ...
% s+ V! R: w; A9 d. s...  ...9 T: h1 V3 y# ]1 |; n9 W
4 Q, Z  k! s% E, Y$ G

/ i0 K6 s* ^( X4 y1 v; Y; i8 V1 p( G; C8 g8 n# E4 `/ ?
商城系统安装SeaweedFS配置参数 1000.jpg
4 _" l+ k* L+ E# M) Q
商城管理后台分布式文件系统状态图
1100.jpg 7 A' P2 E( m- ~2 C$ H

9 ?( K6 a0 J- R8 O( w7 Y备份逻辑卷(volume)
使用自带的backup命令可以创建备份,在一个磁盘空间充足的服务器上运行“weed backup”命令进行备份。假如我们要备份第5卷。
A、进入目录/usr/local/seaweedfs/
输入命令 cd /usr/local/seaweedfs/
B、建立存储数据用的文件夹
输入命令 mkdir /usr/local/seaweedfs/backup
6 k; v! `  @* _
C、执行备份命令
输入命令 ./weed backup -server=172.26.188.150:9333 -dir=/usr/local/seaweedfs/backup/ -volumeId=5
, e! R+ j5 h3 x# S5 x* X' r( q
远端不存在的volume ID也是可以运行的,但不会在本地创建任何文件,如果远端增加了此volume,则下次备份会进行同步
此命令不是服务,要想连续运行需要设置为定时任务,每次运行都会和本地卷比对一次,进行增量备份,备份多个volume可以用脚本遍历一定范围的volume(如1-100)
1200.jpg
' x. }) r$ `0 R2 p
: H5 V9 W* x( Y( Z) l+ Z
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执行文件的位置)0 s, W7 t- v. G8 ^
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=1
, P! |+ }' Q: `/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=2
$ c0 u8 x+ }9 K... ...
* m3 \# E! e! |. i; L9 r$ _/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=199
+ B5 I3 J4 M) U$ o' {8 {+ o/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=200
但是我不可能写200行命令,所以可以参考下面我编写的shell命令,来执行备份(注意替换自己的server即master地址和weed执行文件的位置)0 L. _; D  h1 k, K
#!/bin/bash
$ w9 E3 h, C% |. M5 Kfor i in $(seq 1 200)7 t  V, R( X9 [* o
do& o. v: s0 n0 P% }- n5 t/ x0 ]
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=$i* B3 L( s5 j% Z% ]1 O+ h& a/ A
done
我们可以看下备份完成之后的备份文件大小【193G】
如果filer使用了store,那么还需要备份下数据库,数据库的备份根据各种数据库类型备份不同,这里就不赘述了。
Async Backup 方式
详情可以通过官方wiki的解决来看下,下面我就我的理解与操作进行演示说明
这里使用的是weed filer.backup的方式进行备份的,这个命令在2.30版本之后才开始有的。
可以通过help查看一下帮助文档
首先我们要通过scaffold获取标准的replication.toml
weed scaffold -config=replication1 c, S9 m+ ?% R
现在次备份支持两种模式,一种是与filer同目录的,增量备份,一种是修改的单独文件夹。看下官方的说明。
我这里使用的增量模式,也就是第一种,所以配置is_incremental为true,部分有效代码如下
[source.filer]
. c, x# Q. R2 g+ Kenabled = true( C* [7 G3 l/ F( t  U. f% Z
grpcAddress = "localhost:18888"' D8 P' l8 C' u+ d4 Q* m
# all files under this directory tree are replicated.
+ K; N* P5 U+ \0 I; O. k# this is not a directory on your hard drive, but on your filer.
- r1 ]1 T* L+ v& O/ _/ a$ z# i.e., all files with this "prefix" are sent to notification message queue.
8 k* }8 |& x) x$ M* C* g9 p1 bdirectory = "/buckets"
, n/ I) A! `: z. b" Z- r[sink.local]
% o# N) i# c0 Menabled = true, O8 ^8 {% a" i( z& y- ]# D
directory = "/backup/cdn_backup"
. m' {# S0 x+ ~# all replicated files are under modified time as yyyy-mm-dd directories
4 s6 `- j. p' j/ B% e, X# so each date directory contains all new and updated files.' D! G' c/ J0 r/ y
is_incremental = true% O8 j. O, f- N% t
配置文件中的source.filer中虽然已经配置了directory,但也可以在执行命令的时候进行配置,如下所示
PS:这里我执行是在与replication.toml同文件夹下进行执行的,你可以可以根据seaweedfs的官方说明,放到指定的位置./replication.toml、$HOME/.seaweedfs/replication.toml、/etc/seaweedfs/replication.toml。
9 h) ]3 s: v3 p. `. I& l: C./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 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 00:00 , Processed in 0.280738 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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