CubeFS单机模式快速部署指南
概述
CubeFS是一款开源的分布式文件系统,支持文件存储和对象存储两种访问方式。本文将详细介绍如何在单机环境下快速部署和体验CubeFS的基本功能,适合开发者和初学者快速上手。
环境准备
硬件要求
- 操作系统:推荐使用Ubuntu 20.04或更高版本
- 内存:至少4GB
- 磁盘空间:至少20GB可用空间
- 网络:需要配置有效的网络接口
软件依赖
在开始部署前,需要安装以下依赖项:
sudo apt update
sudo apt install -y build-essential cmake libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev git
Go环境配置
CubeFS需要Go 1.17.x版本进行编译:
wget https://dl.google.com/go/go1.17.13.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.17.13.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
源码获取与编译
- 获取CubeFS源码:
git clone https://github.com/cubefs/cubefs.git
cd cubefs
-
修改源码(单机模式适配):
在
master/cluster.go
文件中找到doCreateVol
函数,添加以下代码:
vv.ReplicaNum = 1
- 编译项目:
make server client cli
编译完成后,在build/bin
目录下会生成三个关键文件:
cfs-server
:包含Master、MetaNode、DataNode和ObjectNode组件cfs-client
:客户端程序,用于挂载CubeFS卷cfs-cli
:CubeFS管理工具
服务配置与启动
创建目录结构
cd build/bin
mkdir master metanode datanode objectnode client
配置Master节点
创建master.conf
配置文件:
{
"clusterName": "cfs_single_test",
"id": "1",
"role": "master",
"ip": "192.168.12.60",
"listen": "17010",
"prof": "17020",
"peers": "1:192.168.12.60:17010",
"retainLogs": "200",
"logLevel": "warn",
"logDir": "./master/logs",
"warnLogDir": "./master/logs",
"walDir": "./master/wal",
"storeDir": "./master/store",
"disableAutoCreate":"true",
"legacyDataMediaType": 1,
"metaNodeReservedMem": "102400000",
"singleNodeMode":"true"
}
启动Master服务:
sudo ./cfs-server -f -c ./master.conf &
配置MetaNode节点
创建meta.conf
配置文件:
{
"role": "metanode",
"listen": "17210",
"prof": "17220",
"raftHeartbeatPort": "17230",
"raftReplicaPort": "17240",
"exporterPort": 17250,
"logLevel": "warn",
"logDir": "./metanode/logs",
"warnLogDir": "./metanode/logs",
"memRatio": "70",
"totalMem": "1024000000",
"metadataDir": "./metanode/meta",
"raftDir": "./metanode/raft",
"masterAddr": ["192.168.12.60:17010"]
}
启动MetaNode服务:
sudo ./cfs-server -f -c ./meta.conf &
配置DataNode节点
创建data.conf
配置文件:
{
"role": "datanode",
"listen": "17310",
"prof": "17320",
"raftHeartbeat": "17330",
"raftReplica": "17340",
"exporterPort": 17350,
"diskRdonlySpace": 1024000000,
"raftDir": "./datanode",
"enableSmuxConnPool": false,
"cell": "cell-01",
"logDir": "./datanode/logs",
"warnLogDir": "./datanode/logs",
"logLevel": "warn",
"mediaType": 1,
"smuxMaxConn": 10,
"smuxStreamPerConn": 2,
"disks":["/data1:1024000000"],
"masterAddr": ["192.168.12.60:17010"]
}
启动DataNode服务:
sudo mkdir -p /data1
sudo ./cfs-server -f -c ./data.conf &
配置ObjectNode节点
创建object.conf
配置文件:
{
"role": "objectnode",
"listen": "17410",
"prof": "7420",
"logDir": "./objectnode/logs",
"logLevel": "warn",
"masterAddr": ["192.168.12.60:17010"],
"exporterPort": "17420"
}
启动ObjectNode服务:
sudo ./cfs-server -f -c ./object.conf &
集群管理
配置CLI工具
创建~/.cfs-cli.json
配置文件:
{
"masterAddr": ["192.168.12.60:17010"],
"timeout": 60
}
设置集群参数
./cfs-cli cluster set --clusterDataMediaType 1
查看集群状态
./cfs-cli cluster info
创建卷
./cfs-cli volume create test test --capacity 1 --replica-num 1
客户端挂载
创建client.conf
配置文件:
{
"masterAddr": "192.168.12.60:17010",
"mountPoint": "/mnt/cubefs",
"volName": "test",
"owner": "test",
"logDir": "client/logs",
"logLevel": "warn"
}
挂载文件系统:
sudo mkdir -p /mnt/cubefs
sudo ./cfs-client -c ./client.conf
功能验证
文件存储测试
echo "Hello CubeFS" > /mnt/cubefs/testfile
cat /mnt/cubefs/testfile
对象存储测试
获取用户凭证:
./cfs-cli user info test
使用AWS CLI或s3cmd等工具访问对象存储服务(Endpoint: 192.168.12.60:17410)。
注意事项
- 单机部署模式仅适用于学习和测试,不适用于生产环境
- 所有服务都运行在同一台机器上,性能会受到限制
- 数据只保存一份副本,不具备高可用性
- 如需停止服务,可以终止相关进程或重启机器
通过以上步骤,您已经成功在单机环境下部署了CubeFS,并可以体验其文件存储和对象存储功能。如需更深入了解CubeFS的高级特性和集群部署方式,可以参考官方文档或相关技术资料。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考