使用文件存储

环境依赖

  • 插入内核 FUSE 模
  • 安装 libfuse
modprobe fuse
yum install -y fuse

挂载文件系统

成功创建副本卷后,通过执行如下的命令来挂载卷:

cfs-client -c client.json

执行成功后,可通过 df -h 命令查看挂载点。如果执行失败,可根据日志目录下的 output.log 内容进行判断。

配置文件的示例如下:

{
    "mountPoint":"/mnt/cfs",
    "subdir":"/",
    "volName":"vol_test",
    "owner":"test",
    "accessKey":"**********",
    "secretKey":"*********",
    "masterAddr":"192.168.0.1:17010",
    "rdonly":"false",
    "logDir":"/home/service/var/logs/cfs/log",
    "logLevel":"warn",
    "profPort":"17410"
}

配置文件中各参数的含义如下表所示:

参数类型含义必需
mountPointstring挂载点
subdirstring挂载子目录
volNamestring slice卷名称
ownerstring卷所有者
accessKeystring卷所属用户的鉴权密钥
secretKeystring卷所属用户的鉴权密钥
masterAddrstringmaster节点地址
rdonlybool以只读方式挂载,默认false
logDirstring日志存放路径
logLevelstring日志级别:debug, info, warn,error
profPortstringgolang pprof调试端口

其他配置参数可根据实际场景需要进行设置:

参数类型含义必需
exporterPortstringprometheus获取监控数据端口
consulAddrstring监控注册服务器地址
lookupValidstring内核FUSE lookup有效期,单位:秒
attrValidstring内核FUSE attribute有效期,单位:秒
icacheTimeoutstring客户端inode cache有效期,单位:秒
enSyncWritestring使能DirectIO同步写,即DirectIO强制数据节点落盘
autoInvalDatastringFUSE挂载使用AutoInvalData选项
writecachebool利用内核FUSE的写缓存功能,需要内核FUSE模块支持写缓存,默认为false
keepcachebool保留内核页面缓存。此功能需要启用writecache选项,默认为false
tokenstring如果创建卷时开启了enableToken,此参数填写对应权限的token
readRateint限制每秒读取次数,默认无限制
writeRateint限制每秒写入次数,默认无限制
followerReadbool从follower中读取数据,默认为false
disableDcachebool禁用Dentry缓存,默认为false
fsyncOnClosebool文件关闭后执行fsync操作,默认为true
maxcpusint最大可使用的cpu核数,可限制client进程cpu使用率
enableXattrbool是否使用xattr,默认是false
enableBcachebool是否开启本地一级缓存,默认false
maxStreamerLimitstring开启本地一级缓存时,文件元数据缓存数目
bcacheDirstring开启本地一级缓存时,需要开启读缓存的目标目录路

卸载文件系统

执行如下命令卸载副本卷:

umount -l /path/to/mountPoint

/path/to/mountPoint 为客户端配置文件中的挂载路径

在线升级或热重启客户端

在线升级前,假设正在运行的旧客户端进程 profPort 端口为 27510。

cfs-client -c fuse.json -r -p 27510

-r 新客户端尝试恢复旧客户端的上下文而不是真实挂载 fuse,在线服务不中断接替旧客户端的数据读写请求。 -p 27510 告诉新客户端进程连接旧客户端的27510端口进行通讯,控制旧客户端停止读新请求并将上下文信息写本地,旧客户端交接后自动退出。新客户端接替后会自动恢复旧客户端的上下文信息,继续响应读写请求。

开启一级缓存

部署在用户客户端的本地读 cache 服务,对于数据集有修改写,需要强一致的场景不建议使用。 部署缓存后,客户端需要增加以下挂载参数,重新挂载后缓存才能生效。

./cfs-bcache -c bcache.json

配置文件中各参数的含义如下表所示:

{
   "cacheDir":"/home/service/var:1099511627776",
   "logDir":"/home/service/var/logs/cachelog",
   "logLevel":"warn"
}
参数类型含义必需
cacheDirstring缓存数据的本地存储路径:分配空间(单位Byte)
logDirstring日志路径
logLevelstring日志级别
在github上编辑