Project: CubeFS (Runtime / Cloud Native Storage)
File: INSTALL.md

Prerequisite: Go version `>=1.16` `export GO111MODULE=off` ``` $ git clone http://github.com/cubefs/cubefs.git $ cd cubefs $ make ``` For example,the current cubefs directory is /root/arm64/cubefs,build.sh will auto download follow source codes to vendor/dep directory : bzip2-1.0.6 lz4-1.9.2 zlib-1.2.11 zstd-1.4.5 gcc version as v4 or v5: ``` cd /root/arm64/cubefs export CPUTYPE=arm64_gcc4 && bash ./build.sh ``` gcc version as v9 : ``` export CPUTYPE=arm64_gcc9 && bash ./build.sh ``` gcc version as v4, support Ububtu 14.04 and up version,CentOS7.6 and up version. Check libstdc++.so.6 version must more than `GLIBCXX_3.4.19',if fail please update libstdc++. ``` cd /root/arm64/cubefs docker build --rm --tag arm64gcc4golang113ubuntu1404_cubefs ./build/compile/arm64/gcc4 make dist-clean docker run -v /root/arm64/cubefs:/root/cubefs arm64gcc4golang113ubuntu1404_cubefs /root/buildcfs.sh ``` Remove image: ``` docker image remove -f arm64gcc4golang113ubuntu1404_cubefs ``` The list of RPM packages dependencies can be installed with: ``` $ yum install https://ocs-cn-north1.heytapcs.com/cubefs/rpm/3.2.0/cfs-install-3.2.0-el7.x86_64.rpm $ cd /cfs/install $ tree -L 2 . install_cfs.yml install.sh iplist src template client.json.j2 create_vol.sh.j2 datanode.json.j2 grafana master.json.j2 metanode.json.j2 ``` Set parameters of the CubeFS cluster in `iplist`. `[master]`, `[datanode]`, `[metanode]`, `[monitor]`, `[client]` modules define IP addresses of each role. `#datanode config` module defines parameters of DataNodes. `datanode_disks` defines `path` and `reserved space` separated by ":". The `path` is where the data store in, so make sure it exists and has at least 30GB of space; `reserved space` is the minimum free space(Bytes) reserved for the path. `[cfs:vars]` module defines parameters for SSH connection. So make sure the port, username and password for SSH connection is unified before start. `#metanode config` module defines parameters of MetaNodes. `metanode_totalMem` defines the maximum memory(Bytes) can be use by MetaNode process. ```yaml [master] 10.196.0.1 10.196.0.2 10.196.0.3 [datanode] ... [cfs:vars] ansiblesshport=22 ansiblesshuser=root ansiblesshpass="password" ... ... datanode_disks = '"/data0:10737418240","/data1:10737418240"' ... ... metanode_totalMem = "28589934592" ... ``` For more configurations please refer to . Start the resources of CubeFS cluster with script `install.sh`. (make sure the Master is started first) ``` $ bash install.sh -h Usage: install.sh -r | --role [datanode | metanode | master | objectnode | client | all | createvol ] [2.1.0 or latest] $ bash install.sh -r master $ bash install.sh -r metanode $ bash install.sh -r datanode $ bash install.sh -r client ``` Check mount point at `/cfs/mountpoint` on `client` node defined in `iplist`. A helper tool called `run_docker.sh` (under the `docker` directory) has been provided to run CubeFS with . ``` $ docker/run_docker.sh -r -d /data/disk ``` Note that /data/disk can be any directory but please make sure it has at least 10G available space. To check the mount status, use the `mount` command in the client docker shell: ``` $ mount | grep cubefs ``` To view grafana monitor metrics, open http://127.0.0.1:3000 in browser and login with `admin/123456`. To run server and client separately, use the following commands: ``` $ docker/run_docker.sh -b $ docker/run_docker.sh -s -d /data/disk $ docker/run_docker.sh -c $ docker/run_docker.sh -m ``` For more usage: ``` $ docker/run_docker.sh -h ```