【问题标题】:How can I get more detailed filesystem information on FUSE filesystems?如何获得有关 FUSE 文件系统的更详细的文件系统信息?
【发布时间】:2015-05-11 07:21:09
【问题描述】:

在 Linux 系统上,可以识别“常规”文件系统 使用statfs(2) 并检查f_type。几个常数 statfs(2) 手册页中提到了文件系统类型,例如

EXT4_SUPER_MAGIC      0xEF53
BTRFS_SUPER_MAGIC     0x9123683E
FUSE_SUPER_MAGIC      0x65735546
PROC_SUPER_MAGIC      0x9fa0
SYSFS_MAGIC           0x62656572

(原来那些实际上是在linux/magic.h中定义的。)

我希望能够区分众所周知的远程文件系统 (例如 sshfs)来自知名的本地文件系统(例如 ntfs-3g)。有什么方法可以了解有关基于 FUSE 的更多信息 文件系统,例如此时的名称?

【问题讨论】:

    标签: linux fuse


    【解决方案1】:

    根据some old IBM fuse documentationsshfsntfs-3g 在每个文件系统的statfs 实现中设置f_type 的实现似乎被忽略了。

    我相信使用这种方法会导致基于the initialization of the value here 的值为0x65735546。

    在用户空间中获取文件系统信息的机制是/proc/mounts/proc/<pid>/mountinfo,如文档here 所述。这有第 9 个字段作为文件系统类型,它具有 FUSE 子类型(如果它们被指定为挂载选项并被内核支持)作为 type.subtype。例如 fuse.sshfs 或 fuse.ntfs-3g。

    要访问内核空间中的相同信息,您可以使用带有路径的lookup_mnt 来获取指向 vfsmount 结构的指针,从中您可以访问超级块,然后是子类型。其中struct vfsmount *mnt,子类型为mnt->mnt_sb->s_subtype

    【讨论】:

      猜你喜欢
      • 2014-07-24
      • 2011-12-03
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2017-10-04
      • 2013-08-09
      相关资源
      最近更新 更多