【问题标题】:how does all the existing directories get mounted at the mount point when using FUSE?使用 FUSE 时,如何将所有现有目录挂载到挂载点?
【发布时间】:2014-04-15 01:37:30
【问题描述】:

我正在尝试使用 FUSE 构建具有重复数据删除功能的新文件系统。

我尝试运行 FUSE 示例部分中提供的fusexmp_fh.c。但是,在挂载点挂载文件系统后,我可以看到挂载点内的所有现有目录。我不需要那些目录。 我希望挂载的文件系统为空。

我尝试搜索fusexmp_fh.c,但找不到现有目录的添加位置。

  • 谁能向我解释一下这是如何工作的?

还有

  • 可以将fusexmp_fh.c 作为构建文件系统的基础吗?
  • 它具备所有基本功能吗?

【问题讨论】:

    标签: linux filesystems mount fuse deduplication


    【解决方案1】:

    你是说你把文件系统挂载在一个非空目录上,你可以看到该目录之前的内容吗? (在这种情况下,答案是“不要挂载到非空的挂载点”。通常它会抛出一个错误来告诉你不要这样做。)

    如果您看到的是用作基本目录的目录中的目录和文件,那是环回文件系统的正常行为,这就是fusexmp_fh.c 的情况。示例文件系统采用一个挂载点,并将该挂载点上的所有命令传递到一个后备目录。如果您使用包含文件的后备目录,您现在将在两个地方看到这些文件,即原始位置和挂载的 fuse 目录。

    如果您想了解目录填充的工作原理,请先查看readdir,并查看它返回的stat 项目是如何构造的。每一个都是一个目录条目。

    是的,您可以使用fusexmp_fh.c 作为基本文件系统的基础,它包含所有必要的部分,但不支持扩展元数据。 (但添加它对于环回来说相当简单。)

    【讨论】:

    • 我将文件系统安装在一个空目录上。但是在我执行 ls 安装后,它具有所有这些目录。 xx@xxx:/tmp/fs$ ls -> bin dev initrd.img lost+found opt run srv usr vmlinuz.old boot etc initrd.img.old media proc sbin sys var cdrom home lib mnt root selinux tmp vmlinuz。在挂载我的文件系统后,我基本上希望挂载点为空。这些目录到底是在哪里添加的?
    • 所以听起来当你挂载它时,它正在执行一个指向根文件系统的/ 目录的回送文件系统。尝试使用-o subdir=DIR 运行 fusexmp_fh,其中 DIR 是您希望存储数据的某个空目录的名称。
    猜你喜欢
    • 2022-01-08
    • 2013-06-25
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2015-01-20
    • 2022-10-05
    • 1970-01-01
    相关资源
    最近更新 更多