标签: fuse

安装带保险丝的循环设备

假设我有一个附加到循环设备 /dev/loop1 的文件,如何使用 fusion(用户空间中的文件系统)安装该文件?

linux filesystems ubuntu fuse

5
推荐指数
1
解决办法
7023
查看次数

安装 davfs2 卷时无法打开 docker 容器中的熔断器设备

当我尝试在 docker 容器上挂载 davfs2 卷时遇到以下错误:

geoserver@8e8091d97157:~$ mount owncloud/
/sbin/mount.davfs: loading kernel module fuse
/sbin/mount.davfs: loading kernel module fuse failed
/sbin/mount.davfs: waiting for /dev/fuse to be created
/sbin/mount.davfs: can't open fuse device
/sbin/mount.davfs: trying coda kernel file system
/sbin/mount.davfs: no free coda device to mount
Run Code Online (Sandbox Code Playgroud)

Dockerfile 包含以下内容:

FROM debian:jessie

ENV DEBIAN_FRONTEND noninteractive
ENV TERM linux

# environment variables
ENV GEOSERVER_PASS  geoserver

RUN apt-get update
RUN apt-get install -y davfs2 fuse

RUN groupadd --gid 999 geoserver
RUN useradd -ms /bin/bash --home /home/geoserver …
Run Code Online (Sandbox Code Playgroud)

debian mount fuse docker dockerfile

5
推荐指数
1
解决办法
9899
查看次数

在 Mac OS X 上为本地文件夹挂载 SSHFS 以在 Ubuntu AWS 实例上编辑文件

我希望能够使用一个不错的 IDE 在本地编辑文件,并将本地计算机 ( ~/Code/myproject) 上的文件立即推送到云中的 Ubuntu 计算机 ( /home/ubuntu/myproject)。

我为我的 Mac OS X 笔记本电脑(本地)安装了FUSE 和 SSHFS 。

我在 EC2 上有一个 Ubuntu 16.04 AWS 实例:

ubuntu@ip-xxxxxx:~$ uname -a
Linux ip-xxxxxx 4.4.0-1017-aws #26-Ubuntu SMP Fri Apr 28 19:48:19 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ip-xxxxxxx:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:    16.04
Codename:   xenial
Run Code Online (Sandbox Code Playgroud)

我使用一个.pem文件通过 SSH 进入带有该-i标志的盒子(尚未设置authorized_keys)。

这是我在本地计算机上执行的操作:

$ mount  # check for mounted
/dev/disk1 …
Run Code Online (Sandbox Code Playgroud)

macos ssh ubuntu fuse sshfs

5
推荐指数
1
解决办法
6649
查看次数

FUSE - 避免在 GetAttr 中计算大小

我正在为远程服务实现 FUSE 文件系统。当用户打开文件时,我会进行网络调用以获取文件的内容。似乎必须报告文件的大小GetAttr才能打开工作。
为了知道文件的大小,我必须发出网络调用,并且由于GetAttr在执行时为每个条目调用ls,因此我担心这种设计(如果用户ls在包含许多项目的目录中进行操作,则必须获取所有文件,即使用户不想打开任何文件)。

我该如何解决这个问题?我的想法是:

  • 使用不依赖于报告大小的较低级别的读取方法?我认为使用Read而不是Open可能会有所帮助,但是如果没有尺寸我就无法让它工作。
  • 如果我能区分GetAttr源自呼叫Open其他电话(含ls),我可能只在需要时发出的网络调用。

我使用 Go 和go-fuse,但我认为这无关紧要,因为这是一个通用的 FUSE 问题。

此外,FUSE 文档非常少(实际上缺少)文档。如果熟悉此事的人可以解释ls,cdcat- 以何种顺序调用哪些 FUSE 函数的调用流程,那就太好了。
例如,为什么同时存在OpenRead

更新:
我一直在浏览 SSHFS,它被认为是 FUSE 文件系统的规范示例,它似乎也在 getattr 上通过网络获取文件:https : //github.com/libfuse/sshfs/blob/master/sshfs .c#L3167
你怎么看?

fuse go

5
推荐指数
1
解决办法
1052
查看次数

增加 libfuse readdirplus 的 4k 缓冲区大小?

有没有办法修改或增加传递给 readdir/readdirplus 函数的大小值?

我的实现使用低级 API。对于相当复杂、嵌套很深或包含大量子目录的目录,我会遇到性能影响,这似乎是由于对 readdir/readdirplus 的重复调用量造成的。看起来大于 4096 字节的缓冲区(这是现在传入的)会有很大帮助。

我已经修改了 max_read、max_readahead 和 max_write 值,但没有看到这有任何效果。

先感谢您。

fuse

5
推荐指数
0
解决办法
312
查看次数

FUSE lib passthrough.c 示例。它在哪里准确地反映了我的/?

我是 FUSE、c 和 FS 的新手,我正在弄乱libfuse 包中给出的直通 FS示例。任何人都可以提示一下代码中命令 FUSE 镜像我的根目录的位置吗?因为我发现两个基本函数 - *xmp_init() 和 main() - 非常简洁。

他们来了:

static void *xmp_init(struct fuse_conn_info *conn,
              struct fuse_config *cfg)
{
    (void) conn;
    cfg->use_ino = 1;
    cfg->entry_timeout = 0;
    cfg->attr_timeout = 0;
    cfg->negative_timeout = 0;

    return NULL;
}

int main(int argc, char *argv[])
{
    umask(0);
    return fuse_main(argc, argv, &xmp_oper, NULL);
}
Run Code Online (Sandbox Code Playgroud)

其他函数只是 libfuse 接口的实现...之类的东西。我需要制作自己的残缺文件系统,我需要修改 passthrough.c,以便安装的文件系统将是一张白纸,我可以利用已实现的功能并管理文件和其他内容。

c linux filesystems fuse

5
推荐指数
1
解决办法
2006
查看次数

pkg-config - 存在保险丝失败

我正在尝试安装fuse-python包,当我运行时

python setup.py build
Run Code Online (Sandbox Code Playgroud)

它失败了,当我检查setup.py的内容时,我找到了这一行

if os.system('pkg-config --exists fuse 2> /dev/null') == 0
Run Code Online (Sandbox Code Playgroud)

这条线路失败了.当我检查PKG_CONFIG_PATH时

echo $PKG_CONFIG_PATH
Run Code Online (Sandbox Code Playgroud)

它什么都不打印.任何形式的帮助表示赞赏.提前致谢

pkg-config fuse

4
推荐指数
1
解决办法
3996
查看次数

带有FUSE的Google云端硬盘

可以使用带有FUSE的Google Drive在unix系统中构建文件系统吗?

unix fuse google-drive-api

4
推荐指数
2
解决办法
5841
查看次数

FUSE中的opendir()

FUSE的实现xxx_readdir() 中,我使用下面的代码:

static int hello_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
                         off_t offset, struct fuse_file_info *fi)
{
    DIR *dp;
    struct dirent *de;

    (void) offset;
    (void) fi;

    dp = opendir(path);
    if (dp == NULL)
        return -errno;

    while ((de = readdir(dp)) != NULL) {
        struct stat st;
        memset(&st, 0, sizeof(st));
        st.st_ino = de->d_ino;
        st.st_mode = de->d_type << 12;
        if (filler(buf, de->d_name, &st, 0))
            break;
    }

    closedir(dp);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后,在foler上编译并执行:

./hello /tmp/hello/
Run Code Online (Sandbox Code Playgroud)

当我使用ls /tmp/hello/命令时,结果如下:

bin   dev  home …
Run Code Online (Sandbox Code Playgroud)

fuse

4
推荐指数
1
解决办法
2129
查看次数

通过卷共享安装在Docker容器内的FUSE FS

我创建了一个docker容器,在其中安装了保险丝S3QL FS。这正在工作。

现在,我希望能够与主机或其他容器共享此安装点,但是它不起作用。

简而言之,我以这种方式运行容器:

docker run --rm -d -v /s3ql:/s3ql \
           --cap-add SYS_ADMIN --device /dev/fuse \
           --name myContainer \
                myS3qlIimage mount.s3ql swiftks://url:container /s3ql
Run Code Online (Sandbox Code Playgroud)

docker exec myContainer ls /s3ql显示实际的S3QL内容,但/s3ql主机上为空。

到目前为止,我在仓库中的操作方式的更多详细信息:https : //gitlab.com/Salokyn/docker-s3ql

您认为有可能使它起作用吗?

fuse docker s3ql

4
推荐指数
1
解决办法
670
查看次数

标签 统计

fuse ×10

docker ×2

filesystems ×2

linux ×2

ubuntu ×2

c ×1

debian ×1

dockerfile ×1

go ×1

google-drive-api ×1

macos ×1

mount ×1

pkg-config ×1

s3ql ×1

ssh ×1

sshfs ×1

unix ×1