# wheatDFS **Repository Path**: chewel/goDFS ## Basic Information - **Project Name**: wheatDFS - **Description**: 使用go开发的支持http协议的分布式文件管理系统 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: v1.5.5 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 15 - **Created**: 2021-04-12 - **Last Updated**: 2022-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wheatDFS [goDFS] ### 介绍 wheatDFS是一个基于微服务思想的简单的分布式文件系统,具有无中心、高性能,高可靠,免维护等优点,支持自动同步,自动修复,封装了http协议上传保存,对于上传操作使用签名方式增加安全性。 ### 软件架构 ![image-20210301220049282](https://gitee.com/timedb/img/raw/master/imgs/image-20210301220049282.png) ### 安装教程 ##### go语言安装 运行需要go语言环境, Go 语言环境安装[go中文网](https://studygolang.com) 搜索安装教程,需要安装**1.13**以上版本, 记得配置gomod 以及代理 。 ##### wheatDFS安装 ```shell cd ~ mkdir wheatDFS git clone https://gitee.com/timedb/goDFS.git # 下载仓库 cd goDFS go build -o dfs sudo cp dfs /bin # 拷贝编译文件到bin下 ``` ### 快速使用 一下我们使用e1, e2, e3来表示服务器。 # 代表注释 ```shell # --- e1服务器 --- cd ~ # 创建一个文件夹来放启动工程 mkdir pro cd pro # 创建配置文件,到当前目录 sudo dfs -nc=./conf.json # 原来开启静态web服务的文件夹,需要手动创建 mkdir web # 开启tracker sudo dfs -type=tracker -conf=./conf.json # 开启storage,必须先启动tracker sudo dfs -type=storage -conf=./conf.json ``` 以上我们启动了一个tracker,一个storage的wheatDFS服务,wheatDFS支持小文件同步,我们使用一下命令启动,多节点服务。 ```shell # --- e2服务器 --- cd ~ # 创建一个文件夹来放启动工程 mkdir pro cd pro # 复制e1中的conf.json,同一组服务必须使用相同的配置文件 # 启动第2个storage节点 sudo dfs -type=storage -conf=./conf.json ``` ```shell # --- e3服务器 --- cd ~ # 创建一个文件夹来放启动工程 mkdir pro cd pro # 复制e1中的conf.json,同一组服务必须使用相同的配置文件 # 启动第3个storage节点 sudo dfs -type=storage -conf=./conf.json ``` 以上我们开启了一个多节点的服务器,实际上最少只需要1个tracker,1个storage就可以运行服务,但是不推服,运行2个storage会有较为稳定的性能。 运行成功后,我们可以访问tracker的地址可以看到以下界面 [dfs](http://127.0.0.1),要显示改页面,请再启动tracker前,连接网络,并且开启配置文件的web参数。 image-20210219195317909 ### 使用客户端 客户端的使用见[wheatClient](https://gitee.com/timedb/wheatClient?_from=gitee_search) ### 使用说明 1. 创建运行配置文件。 我们使用以下命令创建一个配置文件,这里的 **./dfs.conf.json** 是生成的配置文件的地址。 ```shell dfs.exe -nc=./dfs.conf.json ``` 配置文件例子如下, **不要复制**,一下注释只为了方便理解,实际上配置文件是json格式。 ```json { "storage": { "group_path": "./", //storage中group的储存地址,用于保存文件, "log_path": "./" //日志文件的地址,会在该地址下生成一个log文件夹保存日志 }, "tracker": { "port": 80, //tracker负载均衡,web引用的端口,默认80 "token_pwd": "Q0578EphdbaaFpMt", //随机密码不用更改,自动生成 "host": "192.168.0.104", //tracker的ip "web": "./web" , //配置这个选项,会启动一个静态服务器,需要index.htm作为入口 "persistence": "./sync.db" //这里保存所有文件的key }, "client": { "cache_path": "./cache" //大文件缓存区 } } ``` 2. 运行tracker 使用一下命令运行tracker **-type** 指定运行服务类型,**-conf** 指定运行服务的配置文件。tracker应该运行在原来的配置文件上。 ```shell dfs.exe -type=tracker -conf=./dfs.conf.json ``` 3. 运行storage 使用以下命令运行storage,注意,我们可以运行多个storage但是只可以配置一个tracker,并且,一组tracker和storage的集群必须使用同一个配置文件。 ```shell dfs.exe -type=storage -conf=./dfs.conf.json ```