Kubo 如何安装 FUSE 并挂载 /ipfs、/ipns 和 /mfs 文件系统?

发布时间:2026/9/14 8:14:53
Kubo 如何安装 FUSE 并挂载 /ipfs、/ipns 和 /mfs 文件系统? Kubo 如何安装 FUSE 并挂载 /ipfs、/ipns 和 /mfs 文件系统【免费下载链接】kuboIPFS implementation in Go: a daemon that stores and serves content-addressed data, with a CLI, HTTP Gateway, and RPC API项目地址: https://gitcode.com/GitHub_Trending/ku/kuboKuboIPFS 的 Go 实现可以通过 FUSE 把/ipfs、/ipns、/mfs三个命名空间挂载到操作系统上让任意应用用标准文件操作直接读写 IPFS 内容。FUSE 支持目前是实验性功能在 Linux、macOS 和 FreeBSD 上可用底层实现基于 hanwen/go-fuse在 Windows 上挂载命令不会真正挂载在 OpenBSD/NetBSD 上会明确报错不支持。完成本文后你可以在本机终端里像访问本地文件一样访问 IPFS 数据例如cat /ipfs/CID/文件并且能通过ipfs mount的输出确认三个挂载点都已建立。准备条件安装 FUSE 依赖必须先安装并配置 FUSE才能挂载 IPFS。按你的系统选择对应方式Linux用发行版包管理器安装fuse3# Debian / Ubuntu sudo apt-get install fuse3 # Fedora sudo dnf install fuse3 # Arch sudo pacman -S fuse3在部分较老的 Linux 发行版上为了让allow_other选项生效需要把自己加入fuse组如果系统里不存在fuse组可跳过此步sudo usermod -a -G fuse usernameusername替换为你当前登录用户名。修改后要重启会话才会生效。macOS通过 Homebrew 安装 macFUSEbrew install --cask macfuse安装后打开System Settings Privacy Security允许 macFUSE 内核扩展加载可能需要重启。Kubo 在 macOS 上会自动设置volname、noapplexattr和noappledouble挂载选项volname让 Finder 中显示文件系统名ipfs、ipns、mfs而不是通用的 macfuse Volume 0noapplexattr阻止 Finder 在每次文件访问时探测 Apple 私有扩展属性减少网络挂载上的 FUSE 流量noappledouble防止 macOS 创建._资源叉旁挂文件这类文件会向 DAG 中写入 macOS 专属元数据。注意macOS 存在已知的 FUSE 限制频繁的 STATFS 调用、有限的通知支持可能影响性能。FreeBSD加载 FUSE 内核模块sudo kldload fusefs如需开机自动加载echo fusefs_loadYES | sudo tee -a /boot/loader.conf创建挂载点目录默认挂载点为/ipfs、/ipns、/mfs可以在配置的Mounts段中修改见 docs/config.md 的Mounts.IPFS、Mounts.IPNS、Mounts.MFS条目。目录必须手动创建在根目录下操作需要 sudo 权限# 创建目录 sudo mkdir /ipfs /ipns /mfs # 把属主改为你自己的用户这样 ipfs 无需 root 权限就能使用 sudo chown username /ipfs /ipns /mfsusername同样替换为你的实际用户名。启动守护进程并挂载确认没有其他 IPFS 守护进程正在运行后用--mount参数启动守护进程ipfs daemon --mount如果守护进程已经在运行改为执行ipfs mount成功时命令会打印三个挂载点docs/fuse.md 文档示例IPFS mounted at: /ipfs IPNS mounted at: /ipns MFS mounted at: /mfs验证挂载结果读取 /ipfs 下的内容把一段数据加入 IPFS再通过挂载点访问。docs/fuse.md 和 mount_unix.go 给出的文档示例如下其中 CID 是文档示例值你的实际 CID 会不同# 添加数据 mkdir foo echo baz foo/bar ipfs add -r foo added QmWLdkp93sNxGRjnFHPaYg8tCQ35NBY3XPn6KiETd3Z4WR foo/bar added QmSh5e7S6fdcu75LAbXNZAFY2nGyZUJXyLCJDvn2zRkWyC foo然后直接访问挂载点读到与 CLI 一致的内容说明挂载工作正常 cd /ipfs/QmSh5e7S6fdcu75LAbXNZAFY2nGyZUJXyLCJDvn2zRkWyC ls bar cat bar baz cat /ipfs/QmWLdkp93sNxGRjnFHPaYg8tCQ35NBY3XPn6KiETd3Z4WR baz注意挂载点根目录本身不可列出它是虚拟的需要直接访问已知路径。通过 ipfs.cid 扩展属性取回 CID所有挂载都会暴露ipfs.cid扩展属性返回底层 DAG 节点的 CID$ getfattr -n ipfs.cid /mfs/hello.txt # file: mfs/hello.txt ipfs.cidbafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4以上 CID 为文档示例值。可选让新节点使用 CIDv1docs/fuse.md 提示新节点执行ipfs config profile apply unixfs-v1-2025不做这一步时文件默认使用 CIDv0base58Qm...哈希。可选分支允许其他用户访问挂载点默认只有挂载用户能访问挂载点。如需其他用户也可访问需要两步编辑/etc/fuse.conf加入user_allow_other行允许非 root 用户指定allow_other挂载选项文档示例# /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE) # Set the maximum number of FUSE mounts allowed to non-root users. # The default is 1000. #mount_max 1000 # Allow non-root users to specify the allow_other or allow_root mount options. user_allow_other把 Kubo 配置项Mounts.FuseAllowOther设为true再以--mount启动守护进程ipfs config --json Mounts.FuseAllowOther true ipfs daemon --mountMounts.FuseAllowOther的默认值为false见 docs/config.md。/mfs 与 /ipns 可写挂载的注意事项/mfs暴露的是 MFSMutable File System根目录即ipfs files命令背后的同一个可变文件系统。vim、rsync、tar等标准工具可以在可写挂载点/mfs和/ipns上工作fsync、ftruncate、chmod、touch和覆盖已有文件的重命名都受支持。限制当/ipns或/mfs处于挂载状态时只应通过挂载文件系统本身修改其内容。同时用ipfs files命令写同一棵 MFS 树不受支持两边各自维护树的视图一边写入可能在另一边写回时丢失删除后重建的文件对挂载端的监听程序看起来仍是同一个文件。用ipfs files操作前请先卸载挂载。mode 与 mtimeIPFS 默认不持久化 POSIX mode 和 mtime。缺失时 FUSE 挂载使用默认值——只读挂载/ipfs文件0444、目录0555可写挂载/ipns、/mfs文件0644、目录0755。若要在通过 FUSE 写入时持久化 mode 和 mtime启用配置项默认均为falseipfs config --json Mounts.StoreMtime true ipfs config --json Mounts.StoreMode true注意这两个开关会改变最终 CID即使文件内容相同mode 和 mtime 也会存进 UnixFS DAG 节点元数据。排查问题Permission denied或fusermount: user has no write access to mountpoint先确认当前用户能读取/etc/fuse.confsudo ls -l /etc/fuse.conf -rw-r----- 1 root fuse 216 Jan 2 2013 /etc/fuse.conf上面的输出为文档示例。大多数发行版在安装 fuse 时会创建fuse组可用以下命令检查sudo grep -q fuse /etc/group echo fuse_group_present || echo fuse_group_missing组存在把普通用户加入fuse组sudo usermod -G fuse -a username组不存在创建fuse组并把普通用户加入再设置相应权限例如sudo chgrp fuse /etc/fuse.conf sudo chmod gr /etc/fuse.conffuse组的使用是可选的具体取决于操作系统只要运行ipfs mount的用户有合适权限也可以改用其他组。挂载命令崩溃、挂载点卡死sudo umount /ipfs sudo umount /ipns sudo umount /mfs挂载时报error mounting: could not resolve name确保节点的 IPNS 地址已发布了一个目录文档示例$ mkdir hello/; echo hello world hello/hello.txt $ ipfs add -rQ ./hello/ bafybeidhkumeonuwkebh2i4fc7o7lguehauradvlk57gzake6ggjsy372a $ ipfs name publish bafybeidhkumeonuwkebh2i4fc7o7lguehauradvlk57gzake6ggjsy372a开启调试日志在启动守护进程前设置IPFS_FUSE_DEBUG环境变量可以把所有 FUSE 操作记录到 stderrIPFS_FUSE_DEBUG1 ipfs daemon --mount边界与限制FUSE 支持是实验性的问题可向 kubo/issues 报告。挂载功能仅在 Linux、macOS、FreeBSD 上编译生效Windows 上的挂载是空操作no-opOpenBSD/NetBSD 会直接报 FUSE not supported 错误。不要向 MFS 中存放懒加载lazy-loaded数据集部分本地、懒加载的 DAG 暴露在挂载点下时操作系统索引器可能爬取它触发对非本地 DAG 分量的非预期网络预取。挂载点路径由 docs/config.md 中的Mounts.IPFS默认/ipfs、Mounts.IPNS默认/ipns、Mounts.MFS默认/mfs决定ipfs mount也可以用-f、-n、-m选项在命令行覆盖。【免费下载链接】kuboIPFS implementation in Go: a daemon that stores and serves content-addressed data, with a CLI, HTTP Gateway, and RPC API项目地址: https://gitcode.com/GitHub_Trending/ku/kubo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询