上云无忧 > 文档中心 > 百度智能云对象存储BOS工具 - BOSFS操作与实践
对象存储BOS
百度智能云对象存储BOS工具 - BOSFS操作与实践

文档简介:
BOS FS挂载bucket到本地目录执行命令: bosfs mybucket my_local_directory -o endpoint=http://bj.bcebos.com -o ak=xxxxxxxxxxxxxxxx -o sk=xxxxxxxxxxxxxxxxx -o logfile=xx/xx.log
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

挂载

BOS FS挂载bucket到本地目录执行命令:

bosfs mybucket my_local_directory -o endpoint=http://bj.bcebos.com -o ak=xxxxxxxxxxxxxxxx -o sk=xxxxxxxxxxxxxxxxx
 -o logfile=xx/xx.log

执行之后后台会启动一个名为bosfs的daemon进程,如果挂载成功,可以用df命令看挂载点。此外可以查看/etc/fstab,来了解具体使用到的挂载选项。

同时bosfs支持挂载子目录,使用方式将bucket名变成bucket/subdir即可实现挂载子目录,即可实现将子目录作为挂载点的根目录。

说明: 默认只有root用户有权限执行fusermount,如果需要特定用户执行fusermount,则要通过命令usermod -a -G fuse YourAccount把这个用户加入到fuse用户组中。

卸载

  1. 使用umount命令可以直接卸载。
  2. 对于非root用户且没有卸载权限的,如果加入到了fuse用户组中,可以使用fusermount -u my_local_directory进行卸载。
  3. 还可以通过杀掉后台的bosfs进程来卸载,不过一般不建议这么使用,会造成未FLUSH文件的损坏。

操作示例

以同步两个Bucket的数据为例,讲解BOS FS的使用。

假设有bucket-a和bucket-b两个bucket,且这两个bucket可能位于不同的Region(比如北京,广州)。业务上需要将bucket-a的数据备份到bucket-b,且只同步有变更的文件,以减小开销。可以按照如下步骤实现:

  1. 找到一台可用的Centos镜像的虚机(没有则可以购买一台)并开通EIP服务;
  2. 安装bosfs;
  3. 使用bosfs挂载命令将bucket-a和bucket-b挂载到本地的bucket-a,bucket-b两个目录上;
  4. 使用命令rsync -av --partial-dir=/tmp bucket-a bucket-b开始同步这两个bucket的数据。
  5. 可以考虑将rsync命令加入crontab,用来定期执行。

注意事项:

  • 同步一个文件的时候,会在/tmp目录或者指定的cache目录占用这个文件大小的空间,同步完这个文件的时候将释放。因此需要保证本地有足够的磁盘空间。
  • 使用rsync命令时尽量加上--partial-dir=/tmp选项, 把临时文件放到tmp目录下。
  • 如果使用一个rsync进程同步速度可能会比较慢,如果使用另外一台机器同步速度也会受单机网卡的影响。所以如果同步的bucket本身目录结构可以进行切分,则可以考虑多个rsync进程并行,或者多部署几套虚机并行同步不同的子目录。
  • 如果同时在多个mount点上对同一个文件进行操作,BOS无法保证一个可预期的结果,可能会造成文件截断、写入丢失,或刚写入的无法在另一个挂载点上读出等问题,所以需要避免。
  • 本示例因为两个Bucket位于不同Region,所以需要开通EIP。只要两个Bucket及BCC有任意一个跨区域则需要开通EIP服务,只有三者均处于同一Region才不需开通EIP。

实践

  1. 关于bosfs性能与注意事项:

    • bosfs基于fuse开发和进行挂载, 由于其框架接口的语义限制, 对挂载点内的本地文件的操作可能需要与BOS对象存储服务进行多次网络交互, 因此bosfs挂载点的实例与BOS endpoint之间的网络环境会影响bosfs的性能.
    • bosfs提供了大量参数, 可根据自身使用的场景进行参数调优, 可参考文档
    • bosfs操作并非原子的, 尤其是如使用多个bosfs进程挂载同一个BOS bubket, 多个挂载点中对该bucket的并发操作可能出现未定义的行为.
    • 若bosfs无法满足业务需求时, 建议使用boscmd, 非线上敏感业务可以使用bosfs,若要求可靠性、稳定性, 建议使用bcecmd.
  2. docker/kubernetes环境下使用bosfs:

    • 在k8s环境中, 可使用静态PV/PVC的方式通过bosfs挂载来访问BOS.
    • 建议将业务pod和bosfs pod分开管理, 可使用保活探针机制, 当bosfs异常后重新拉起.
    • 当单个业务pod中使用大量bosfs挂载点或者k8s中拉起多个业务pod时, 如果多个bosfs容器部署在同一node, 可能会占用大量内存和网络带宽, 建议根据实际情况进行调整.
    • 百度智能云容器引擎CCE 已集成了容器中通过bosfs挂载的方式访问BOS的组件, 可参考文档.
相似文档
  • 使用 bosfs 过程中,突然显示 "unable to access MOUNTPOINT /path/to/mountpoint: Transport endpoint is not connected",并且无法再访问.
  • BOS FS工具包 [2021-09-03] 版本号1.0.0.11 修复bug若干 支持配置memory cache模式读写策略, 提升读写性能 BOS FS工具包 [2019-12-03] 版本号1.0.0.10 修复开机自动挂载失败 支持挂载子目录跳过bucket权限校验 BOS FS工具包 [2019-11-11] 版本号1.0.0.9 支持文件名大于256字节 更新SDK工具包 发布新的libfuse安装包
  • 当用户在使用百度智能云BOS上传或下载遇到问题时,可以使用BOSProbe 工具进行自我检测。 BOSPorbe 工具能够自动检测用户的上传和下载,并收集用户当前网络和命令执行的相关信息,最后形成一份可读的问题报告和错误处理建议。
  • BOSProbe 是 bcecmd 的子命令,如果您已经安装了 bcecmd 就无需再安装 BOSProbe, 如果您还没有安装 bcecmd 您可以按如下方法安装 bcecmd: 进入bcecmd下载页面, 地址链接: bcecmd。
  • bcecmd 使用多层命令结构, 所有命令都以 bcecmd 开头,您可以用如下命令来使用 BOSProbe 提供的上传和下载检测功能: $ bcecmd bosprobe [options]
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部