SeaweedFS是一个分布式文件系统
应用场景:主要用于存储处理小文件、大文件分块成小文件上传
Githup地址: https://github.com/chrislusf/seaweedfs
官方文档:https://github.com/chrislusf/seaweedfs/wiki
seaweedfs源码解析:https://www.bbsmax.com/A/6pdDYXQKzw/
seaweedfs部署相关:https://www.bbsmax.com/A/n2d9Gw84JD/
http://www.wjhsh.net/quchunhui-p-14086075.html
http://www.diyhi.com/seaweedfs.html
Weed master :不存储文件的元数据,只保留卷的ID到卷服务器的映射
Weed volume:存储备份文件
Weed filer:将文件放在目录下管理
IP 地址 | 主机类型 | 数据目录 | 盘符 | 角色 | 磁盘RAID | 空间 |
---|---|---|---|---|---|---|
10.11.11.33 | CPU | /data/seaweedfs | 无需 | master,filer | 无需 | 无需 |
10.11.11.45 | CPU | /data/seaweedfs | 无需 | master,filer | 无需 | 无需 |
10.11.11.37 | CPU | /data/seaweedfs | 无需 | master,filer | 无需 | 无需 |
10.11.11.13 | GPU | /data/seaweedfs | volume | 2*8.4T 组成 Raid0 | 14.6T | |
10.11.11.14 | GPU | /data/seaweedfs | volume | 2*8.4T 组成 Raid0 | 14.6T | |
10.11.11.18 | GPU | /data/seaweedfs | volume | 2*8.4T 组成 Raid0 | 14.6T | |
10.11.11.11 | GPU | /data/seaweedfs | /dev/sdb | volume | 2*8.4T 组成 Raid0 | 14.6T |
10.11.11.21 | GPU | /data/seaweedfs | /dev/sda | volume | 2*8.4T 组成 Raid0 | 14.6T |
# 启动命令
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/master /data/seaweedfs/logs
nohup weed master -ip=10.11.11.33 -port=9333 -defaultReplication="001" -mdir=/data/seaweedfs/master -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 > /data/seaweedfs/logs/master.log 2>&1&
注解:
-defaultReplication="001" 001:在相同的Rack(机架)备份一份数据
-mdir 存储元数据的目录,默认为/tmp
-peers 所有的master节点列表
# 启动命令
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/master /data/seaweedfs/logs
nohup weed master -ip=10.11.11.37 -port=9333 -defaultReplication="001" -mdir=/data/seaweedfs/master -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 > /data/seaweedfs/logs/master.log 2>&1&
# 启动命令
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/master /data/seaweedfs/logs
nohup weed master -ip=10.11.11.45 -port=9333 -defaultReplication="001" -mdir=/data/seaweedfs/master -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 > /data/seaweedfs/logs/master.log 2>&1&
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.11 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
-dir:表示该DataNode数据存储的目录
-max:volume的最大数量,默认为7。本机volumes的最大值,在master上我们定义的每个卷为30G
-fileSizeLimitMB : 限制最大上传文件大小
-mserver :指定master服务地址
-dataCenter:当前volume服务的数据中心名称
-rack: 当前volume服务器的rack 名称
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.13 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.14 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.18 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
mkdir -p /data/seaweedfs/volume1 /data/seaweedfs/logs
# 需注意的是,-max= 的值应根据磁盘大小来定,通过该配置,可以自由定义每个volume的容量。比如当-max=7 时,volume 容量为 7*30G = 210G
nohup weed volume -ip=10.11.11.21 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1 >/data/seaweedfs/logs/volume1.log 2>&1&
作用:把文件放在目录下管理,通过文件路径对文件进行存储,获取和删除等操作。Filer是一个在seaweedfs之上的服务,它保存路径与文件id的映射关系,最终还是使用文件id来访问文件。
mkdir -p /data/seaweedfs/filer/data
# 首先需要生成 filer 配置文件
weed scaffold -config=filer -output=/data/seaweedfs/filer/
# 之后修改 filer.toml 文件,filer的数据目录
vim /data/seaweedfs/filer/filer.toml
# 将其中 [leveldb*] 配置段中标记为 enabled=true 的那一段配置中的 dir = . 配置项更改为:dir = /data/seaweedfs/filer/data
# 启动命令
nohup weed filer -port=8888 -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.33 >/data/seaweedfs/filer/filer.log 2>&1&
mkdir -p /data/seaweedfs/filer/data
# 首先需要生成 filer 配置文件
weed scaffold -config=filer -output=/data/seaweedfs/filer/
# 之后修改 filer.toml 文件
vim /data/seaweedfs/filer/filer.toml
# 将其中 [leveldb*] 配置段中标记为 enabled=true 的那一段配置中的 dir = . 配置项更改为:dir = /data/seaweedfs/filer/data
# 启动命令
nohup weed filer -port=8888 -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.37 >/data/seaweedfs/filer/filer.log 2>&1&
mkdir -p /data/seaweedfs/filer/data
# 首先需要生成 filer 配置文件
weed scaffold -config=filer -output=/data/seaweedfs/filer/
# 之后修改 filer.toml 文件
vim /data/seaweedfs/filer/filer.toml
# 将其中 [leveldb*] 配置段中标记为 enabled=true 的那一段配置中的 dir = . 配置项更改为:dir = /data/seaweedfs/filer/data
# 启动命令
nohup weed filer -port=8888 -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.45 >/data/seaweedfs/filer/filer.log 2>&1&
# 首先把 weed 程序拷贝到系统环境变量目录(weed程序所在共享存储的位置前面有写)
cp /apps/sharedstorage/jtproduction/weed /usr/local/bin/
# 然后执行挂载
nohup weed mount -filer=10.11.11.37:8888 -filer.path=/jtproduction-zq -dir=/apps/sharedstorage/jtproduction-zq > /var/log/weed-mount-zq.log 2>&1&
进入/usr/lib/systemd/system目录
SeaweedFS-master.service
[Unit]
Description=SeaweedFS Master
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed master -ip=10.11.11.33 -port=9333 -defaultReplication="001" -mdir=/data/seaweedfs/master -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333
WorkingDirectory=/data/seaweedfs/master/
SyslogIdentifier=seaweedfs-master
[Install]
WantedBy=multi-user.target
SeaweedFS-filer.service
[Unit]
Description=SeaweedFS Filer
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed filer -port=8888 -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.33
WorkingDirectory=/data/seaweedfs/filer/
SyslogIdentifier=seaweedfs-filer
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-master.service
systemctl enable SeaweedFS-filer.service
进入/usr/lib/systemd/system目录
SeaweedFS-master.service
[Unit]
Description=SeaweedFS Master
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed master -ip=10.11.11.37 -port=9333 -defaultReplication="001" -mdir=/data/seaweedfs/master -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333
WorkingDirectory=/data/seaweedfs/master/
SyslogIdentifier=seaweedfs-master
[Install]
WantedBy=multi-user.target
SeaweedFS-filer.service
[Unit]
Description=SeaweedFS Filer
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed filer -port=8888 -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.37
WorkingDirectory=/data/seaweedfs/filer/
SyslogIdentifier=seaweedfs-filer
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-master.service
systemctl enable SeaweedFS-filer.service
进入/usr/lib/systemd/system目录
SeaweedFS-master.service
[Unit]
Description=SeaweedFS Master
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed master -ip=10.11.11.45 -port=9333 -defaultReplication="001" -mdir=/data/seaweedfs/master -peers=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333
WorkingDirectory=/data/seaweedfs/master/
SyslogIdentifier=seaweedfs-master
[Install]
WantedBy=multi-user.target
SeaweedFS-filer.service
[Unit]
Description=SeaweedFS Filer
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed filer -port=8888 -master=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -ip=10.11.11.45
WorkingDirectory=/data/seaweedfs/filer/
SyslogIdentifier=seaweedfs-filer
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-master.service
systemctl enable SeaweedFS-filer.service
进入/usr/lib/systemd/system目录
SeaweedFS-volume.service
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -ip=10.11.11.12 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.11:9333,10.11.11.11:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-volume.service
进入/usr/lib/systemd/system目录
SeaweedFS-volume.service
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -ip=10.11.11.13 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-volume.service
进入/usr/lib/systemd/system目录
SeaweedFS-volume.service
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -ip=10.11.11.14 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-volume.service
进入/usr/lib/systemd/system目录
SeaweedFS-volume.service
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -ip=10.11.11.18 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-volume.service
进入/usr/lib/systemd/system目录
SeaweedFS-volume.service
[Unit]
Description=SeaweedFS Volume
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/weed volume -ip=10.11.11.21 -port=10001 -dir=/data/seaweedfs/volume1 -max=517 -fileSizeLimitMB=200 -mserver=10.11.11.33:9333,10.11.11.37:9333,10.11.11.45:9333 -dataCenter=dc1 -rack=rack1
WorkingDirectory=/data/seaweedfs/volume
SyslogIdentifier=seaweedfs-volume
[Install]
WantedBy=multi-user.target
最后,运行
systemctl enable SeaweedFS-volume.service
挂载步骤
# 首先把 weed 程序拷贝到系统环境变量目录(weed程序我已经拷到共享存储里了)
cp /apps/weed /usr/local/bin/
# 然后执行挂载
nohup weed mount -filer=10.246.29.37:8888 -filer.path=/jt -dir=/apps > /var/log/weed-mount-zq.log 2>&1&
取消挂载步骤
ps -aux | grep "weed mount" 找到 pid,
然后执行普通 kill (不要执行 -9)
ps aux | grep 'weed' | awk '{print $2}'
umount /apps 取消挂载