fastcfs - 分布式文件系统 docker File


https://hub.docker.com/r/jerry6290/fastcfs

https://github.com/jerry6290/dockerImage-fastCFS-Server

https://gitee.com/fastdfs100/FastCFS

https://github.com/happyfish100/FastCFS


# FastCFS 部署 - 基于块存储的高性能通用分布式文件系统

https://abc.htmltoo.com/thread-46237.htm


# 单机版

docker run -d  --net=host  --name fastcfs  --privileged  --restart=always -v /data/file/fastcfs:/opt/fastcfs/fuse/  -v /data/docker/tools/fastcfs/one:/etc/fastcfs  -v /data/file:/data/file  jerry6290/fastcfs:v3.1.0


docker exec -it fastcfs sh

yum -y update


# 写文件

echo 'Hello FastCFS' > /opt/fastcfs/fuse/FastCFS.txt

# 查看文件内容

cat /opt/fastcfs/fuse/FastCFS.txt

Hello FastCFS


# fastcfs.sh-- 用于管理 FastCFS 集群的快捷运维工具

find / -name  fastcfs.sh

/fastcfs.sh

-它能快速构建 FastCFS 集群,包括安装软件、分发配置文件,以及管理集群服务和查看集群日志。

-它也能对 FastCFS 单节点或整个集群的相关软件进行升级或降级。

-它能重新安装软件或者重新分发配置文件。

它不是一个通用的部署工具, 仅适用于 FastCFS 集群。除了将配置文件分发到集群的各个服务器节点以外,它不对集群配置做任何处理。你必须为它提供可用的集群配置文件

cd  /  &&  cp  fastcfs.sh /usr/bin/fastcfs.sh  &&  chmod +x /usr/bin/fastcfs.sh

-测试工具是否生效

which  fastcfs.sh


# fcfs_conf.sh 是一个快速创建 FastCFS集群配置文件的运维工具。

它通过 bash shell 访问本地配置文件 fcfs_conf.settings。它只需在你的工作站机器上运行,不需要服务器、数据库或者其他额外资源。

如果你需要在指定的服务器IP列表上快速生成集群配置文件,那么它很适合你。

cd  /  

wget  http://fastcfs.net/fastcfs/ops/fcfs_conf.sh

cp  fcfs_conf.sh /usr/bin/fcfs_conf.sh  &&  chmod +x /usr/bin/fcfs_conf.sh

which fcfs_conf.sh


---所有配置文件

/etc/fastcfs

/opt/fastcfs/fuse/

-端口

fs_serverd:  21014  21015  21016

fcfs_authd:  31011  31012

fdir_serverd: 11011   11012


cd  /etc/fastcfs

auth  fcfs  fdir  fstore

#FastCFS集群的所有配置文件必须提前放置在工作目录中的 conf 目录,conf 包含以下四个子目录:

fdir -- fdir 服务器的配置文件

-FastCFS目录服务用于文件元数据管理,目前只支持一组服务器,使用常规服务器(如64GB内存 + SSD)可以支持百亿级文件。

fstore -- fstore 服务器的配置文件

-fstore 采用分组方式保存文件内容。

auth -- fauth 服务器的配置文件

-认证服务的用户和权限等数据保存在fdir中,服务采用热备模式,建议部署2 ~ 3个服务器(节点),主节点失效后会自动切换到备用节点。 因认证服务器自身不保存数据,因此可以根据实际需要随时增加或减少认证服务器。

fcfs -- fuseclient 客户端的配置文件



---集群扩容

1.按4MB分块的文件内容(文件块),根据其hash code(文件ID + 文件块偏移量),路由到对应的数据分组。计算公式如下:

DGI = HashCode % DGC

DGI:数据分组索引号

HashCode:文件分块哈希值

DGC:数据分组总数

数据分组是逻辑或虚拟概念,映射到的物理或实体概念是服务器分组(SG),二者是多对一关系,即:一个服务器分组(SG)可以容纳多个数据分组(DG)。

fstore集群的服务器分组总数,英文缩写为SGC。


2.fstore集群扩容,可以一次增加一个SG。当集群规模较小(比如SGC小于等于4)时,建议一次扩容一倍(SGC翻番)。

DGC一旦确定就不可更改,除非建立新集群。因此在初始化集群时,需要确定好数据分组总数(DGC),可以根据业务发展规划,充分预估出DGC。

比如根据存储量预估5年后需要的服务器分组数(SGC)为20,为了充分发挥多核性能,每台服务器上跑32个数据分组(DG),DGC为20 * 32 = 640,按2次幂向上对齐,最终配置为1024。

友情提示:建议生产环境DGC至少配置为256。


3.fstore在线扩容分为两个步骤修改cluster.conf:

-增加扩容的SG 和迁移过去的DG映射;

-新增的SG自动同步完成后,将原有SG迁移出去的DG映射删除。

->停止fuseclient->重启fstore集群->启动fuseclient


4.fstore的cluster.conf中,配置示例片段(简洁起见,只配置了一个3副本的SG):

# SGC
server_group_count = 1
# DGC
data_group_count = 256
# 配置SG1
[server-group-1]
server_ids = [1-3]
data_group_ids = [1, 256]


5.上述配置示例的1个SG扩容为2个SG(均采用3副本),我们如何调整cluster.conf:

# SGC,由1扩容为2
server_group_count = 2
# DGC
data_group_count = 256
# 修改DG映射,将 [129, 256]迁移至SG2
[server-group-1]
server_ids = [1-3]
data_group_ids = [1, 128]
# 配置SG2
# 必须加上server [1-3]用于同步已有数据
[server-group-2]
server_ids = [1-6]
data_group_ids = [129, 256]

将cluster.conf分发到fstore集群所有服务器以及所有fuseclient后,重启fstore集群和fuseclient。

等待新增的SG同步完成,然后进入步骤2。

数据同步过程中fstore集群正常提供服务;


6.调整cluster.conf:

# SGC
server_group_count = 2
# DGC
data_group_count = 256
[server-group-1]
server_ids = [1-3]
data_group_ids = [1, 128]
# 去掉server [1-3]
[server-group-2]
server_ids = [4-6]
data_group_ids = [129, 256]

将cluster.conf分发到fstore集群所有服务器以及所有fuseclient后,重启fstore集群和fuseclient


7.清除已迁走的数据

数据迁移完成后,为了清除迁移出去的数据占用空间,V3.2支持清除迁移出去的replica和slice binlog,启动 fs_serverd时带上参数 --migrate-clean 即可,示例如下:

/usr/bin/fs_serverd  /etc/fastcfs/fstore/server.conf restart --migrate-clean

-为了防止误操作,正常情况下启动fs_serverd不要使用--migrate-clean


# 集群状态

-查看ACTIVE列表,确保所有服务器状态为ACTIVE,确认一下最后一行输出的总数

fs_cluster_stat -A

-查看非ACTIVE列表,确保输出为空

fs_cluster_stat -N

-抽查某个数据分组(如ID为256)的ACTIVE状态,确保全部为ACTIVE

fs_cluster_stat -g 256

-查看帮助

fs_cluster_stat -h


#FastCFS 是一款强一致性、高性能、高可用、支持百亿级海量文件的通用分布式文件系统,可以作为MySQL、PostgresSQL、Oracle等数据库,k8s,KVM和NAS等系统的后端存储。


#FastCFS 主要特点:

保证数据强一致前提下实现了高性能:性能完胜Ceph;

完全兼容POSIX文件接口,支持百亿级海量文件;

高可用:不存在单点,自动failover;

简洁高效的架构和实现,支持k8s,内置运维工具,易用性较好。


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回