【问题标题】:Linux block device simulation & FuseLinux 块设备模拟 & Fuse
【发布时间】:2009-10-27 14:41:33
【问题描述】:

我的项目涉及通过远程主机模拟块设备。

为了测试我正在使用 FUSE,我的文件系统是对“hello”示例应用程序的简单更改,我没有返回常量字符串,而是直接从文件中读取数据。

当我尝试正常挂载文件时(mount -o loop=/dev/loop1),它运行良好。 当我加载 fuse 并通过它公开这个文件时,所有正常的文件操作都会工作。但安装失败并显示“权限被拒绝”。

有人知道“权限被拒绝”的来源吗?

任何其他方法都可以让我在用户空间中创建一个可挂载的虚拟设备(仅支持块访问)?

提前致谢

【问题讨论】:

  • 您使用什么发行版进行开发?就像需要将您的用户添加到“保险丝”组一样简单。
  • Ubuntu 9. 使用 root 安装。

标签: linux embedded fuse


【解决方案1】:

问题可能是 FUSE 文件系统不支持在其上进行循环挂载所需的功能。

您是否考虑过使用网络块设备,例如 NBD 或 iSCSI 目标?

【讨论】:

  • 不幸的是,这似乎不适合 NBD-server 将满足块请求本身。虽然我需要我的应用程序来提供这些块。
  • 您的应用程序可以通过实现 NBD 服务器或 iSCSI 目标来提供块;然后,您可以使用内核现有的 NBD 或 iSCSI 驱动程序使其在网络上可用,然后挂载它。
  • 我错误地认为编写自己的 NBD 服务器会非常痛苦。刚刚在 python 中找到了一个草稿 nbd-server:“lists.canonical.org/pipermail/kragen-hacks/2004-May/000397.html”非常适合我的“Prototype in python”实验谢谢!
【解决方案2】:

您是否以 Root 权限执行。您可以使用“strace”跟踪程序,然后检查失败的确切位置。

【讨论】:

    【解决方案3】:

    当它开始打印错误时,mount 命令是一个真正的地狱。尝试“-v”,但更多时候,额外的输出无济于事:(

    【讨论】:

    • 可悲的是 -v 在可怕的“权限被拒绝”之前绝对没有问题
    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2021-05-02
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多