juicefs源码format命令阅读

这篇具有很好参考价值的文章主要介绍了juicefs源码format命令阅读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前博文中介绍过在windows下安装GO和vscode windows下安装go环境 和vscode中go扩展+调试

1、获取源码

git clone https://github.com/juicedata/juicefs.git

首先观察代码架构

juicefs源码format命令阅读,GO,juicefs,format

上图是我已经编译过得代码,可能和刚git下来的有些出入。

2、编译

我是在windows上进行调试,首先需要对juicefs进行编译。编译过程看文档即可。

文档地址:安装 | JuiceFS Document Center

为了方便,将官方文档的windows下编译内容截图过来。

注:WinFsp需要下载安装,如果不安装,编译时会出现找不到头文件的错误。

出现GCC找不到命令的问题时,可以使用推荐的MinGW-w64和Cygwin,我用的MinGW-w64 ,下载安装即可。

juicefs源码format命令阅读,GO,juicefs,format

juicefs源码format命令阅读,GO,juicefs,format

3、 调试

format 命令

juicefs format 

--storage minio

--bucket "https://127.0.0.1:9000/mystor"

--access-key minioadmin

--secret-key minioadmin

tikv://127.0.0.1:2379/mystor

mystor

launch.json参数如图
juicefs源码format命令阅读,GO,juicefs,format

程序入口:juicefs-->main.go

在juicefs-->main.go页面按F5,进入调试页面。

juicefs源码format命令阅读,GO,juicefs,format

juicefs-->main.go //开始

cmd-->main.go  -->  err := app.Run(reorderOptions(app, args))

其中 reorderOptions()函数是对输入的参数(flag和cmd)进行判断(是否是正确的flag和cmd)并进行排序。返回之后直接进入app.Run()函数中。

 -->app.go c.Run(cCtx) --> command.go c.Action(cCtx)

 -->format.go format m:= meta.NewClient()

meta.NewClient()新建元数据服务的client,主要检查输入元数据相关参数的信息,根据传入的参数去调用具体的元数据服务。

         -->interface.go NewClient()

         -->interface.go f(driver, uri[p+3], conf) //这里跳转到了meta.newKVMeta

         -->tkv.go newKVMeta()   client,err:=newTKVClient(dricer,addr)

         -->tkv_tikv.go newTikvClient()  client, err := txnkv.NewClient(strings.Split(tUrl.Host, ","))

         -->client.go NewClinet()  cfg := config.GetGlobalConfig()

         -->client.go pdClient, err := tikv.NewPDClient(pdAddrs)

                 -->kv.go NewPDClient()  pd.NewClient()

clinet.go是在github.com\tikv\client-go\v2@v2.0.4\txnkv\client.go中

        -->client.go     三个函数,主要过程是初始化元数据

uuid := fmt.Sprintf("tikv-%v", pdClient.GetClusterID(context.TODO()))

spkv, err := tikv.NewEtcdSafePointKV(pdAddrs, tlsConfig)

s, err := tikv.NewKVStore(uuid, pdClient, spkv, tikv.NewRPCClient(tikv.WithSecurity(cfg.Security)))

   //creates a txn client with pdAddrs.

         -->tkv.go newKVMeta() m:=&kvMeta

         -->base.go newBaseMeta()

-->format.go  format, err := m.Load(false)

         -->Base.go  --> Load -->m.en.load()

         -->Tkv.go --> doLoad() ([]byte, error)

         -->Tkv.go -->  get(key []byte) ([]byte, error) kvtxn

-->format.go  blob, err := createStorage(*format) 

按提供的对象存储url,创建一个预支交互的client

-->format.go createStorage() //

-->format.go m.Init(format, c.Bool("force")) //创建根目录

-->tkv.go doInit(format *Format, force bool)文章来源地址https://www.toymoban.com/news/detail-684683.html

到了这里,关于juicefs源码format命令阅读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git常用命令format-patch

    我们在日常的开发中,需要将自己的改动给到其他同事时,经常需要将改动打补丁 (patch) 后进行处理。 git format-patch 是一种帮助开发人员从其 git 提交创建补丁的命令。这个命令很有用,可以用于各种原因,如代 码审查、在分支之间共享代码更改以及向邮件列表提交补丁。对

    2024年02月16日
    浏览(39)
  • standard_init_linux.go:228: exec user process caused: exec format error

    背景 环境:docker,mac m1 因工作需要使用docker打包镜像到阿里云容器中运行 问题 我打包的镜像,在运行时报如下错误 我通过百度可以确定原因如下: CPU架构问题 shell脚本问题 脚本格式问题 解决方案 通过上述问题的排查,基本可以确定时CPU架构问题,因为同事也是使用相同

    2024年02月04日
    浏览(38)
  • docker报错standard init linux.go:228 exec user process caused: exec format error

    1、报错 使用Dockerfile自己做的服务镜像,docker run时启动失败,报错如下: 2、原因一 当前服务器的CPU架构和构建镜像时的CPU架构不兼容 。比如做镜像是在arm机器下构建的,而docker run是在amd架构下执行的。排查: 查看当前服务器的CPU架构信息: 此时,可通过 docker buildx 插件

    2024年02月03日
    浏览(31)
  • Linux中执行java命令报错:cannot execute binary file: Exec format error

    对于这个问题,如果你确认文件没有损坏、文件权限正确、服务器位数和JDK位数一致,那么本文99.999999%可以解决你的问题。 Java程序在自己的开发环境、测试环境,一切正常,启动命令如下: 某天,终于要在客户的生产环境进行部署了。一切都很愉快,现在万事俱备,只差启

    2024年02月04日
    浏览(45)
  • FFmpeg报错:Specified pixel format yuvj420p is invalid or not supported(用ffmpeg程序查看编码器支持像素格式命令)

    这是因为我们把海康rtsp视频流packet解封装后,它frame的像素格式是 yuvj420p(AV_PIX_FMT_YUVJ420P) 的,然后我们又指定编码器上下文的像素格式 pix_fmt = AV_PIX_FMT_YUVJ420P ,指定编码器为 AV_CODEC_ID_MPEG4 ,但是 AV_CODEC_ID_MPEG4 不支持 AV_PIX_FMT_YUVJ420P 像素格式,所以报了上述错误 用 ffmpe

    2023年04月13日
    浏览(86)
  • juicefs使用glusterfs卷

    前提:搭建后redis,并配置无密码和远程访问。并且juicefs要使用1.1.0以上版本。 参考juicefs官网: 使用glusterfs作为后端存储 https://juicefs.com/docs/zh/community/how_to_setup_object_storage#gluster 编译安装juicefs https://juicefs.com/docs/zh/community/installation 编译安装juicefs步骤整理如下,要求系统为

    2024年02月17日
    浏览(45)
  • JuiceFS:用户态fuse接口

    FUSE(Filesystem in Userspace,用户空间文件系统)作为类UNIX系统平台上可加载的内核模块,允许非特权用户创建功能完备的文件系统,而不需要重新编译内核。FUSE模块仅仅提供kernel模块的接入口,而本身的主要实现代码位于用户空间中。对于读写虚拟文件系统来说,FUSE是个很好

    2024年02月02日
    浏览(28)
  • JuiceFS 元数据引擎选型指南

    文件系统是我们常见的存储形式,内部主要由数据和元数据两部分组成。其中数据是文件的具体内容,通常会直接展现给用户;而元数据是描述数据的数据,用来记录文件属性、目录结构、数据存储位置等。一般来说,元数据有非常鲜明的特点,即占用空间较小,但访问非常

    2024年02月02日
    浏览(33)
  • 到了这个年纪,就应该阅读Spring源码了,源码阅读指南-编译加运行

    Spring的源码地址 https://github.com/spring-projects/spring-framework 我们先把他clone下来 没梯子的话多clone几遍就好了 我们这里使用5.x的版本 设置里面gradle设置按照如下图设置即可 😊gradle介绍(插叙手法) 由于Spring源码都是使用Gradle来管理项目 按理来说我们gradle和maven类似,需要在本

    2023年04月09日
    浏览(87)
  • 如何借助分布式存储 JuiceFS 加速 AI 模型训练

    传统的机器学习模型,数据集比较小,模型的算法也比较简单,使用单机存储,或者本地硬盘就足够了,像 JuiceFS 这样的分布式存储并不是必需品。 随着近几年深度学习的蓬勃发展,越来越多的团队开始遇到了单机存储的瓶颈,分布式存储在 AI 领域的重要性不断凸显。AI 团

    2023年04月26日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包