[GH-ISSUE #310] 容器化部署3fs,想在host端调用native api usrbio,应该如何处理? #192

Open
opened 2026-10-26 09:46:51 +00:00 by bsakaguchi · 4 comments
Owner

Originally created by @SgtPepperr on GitHub (Jul 4, 2025).
Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/310

我将3fs部署在了容器当中,fuse client是运行在一个单独的容器里。之前想在主机端使用fuse挂载的目录,是通过将容器的挂载信息反向挂载到主机上,这样可以直接在主机端调用posix api使用该挂载目录。但是我现在想使用usrbio native api,发现在主机端直接使用是会报错的。报错信息如下(运行程序的逻辑为usrbio.md里结尾的example)

Image

如果在fuse 容器内部使用api是没有问题的,想请问下有什么办法可以解决这里的register失败的问题,可以方便地使用usrbio接口在host上利用容器内fuse client提供的服务呢?

Originally created by @SgtPepperr on GitHub (Jul 4, 2025). Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/310 我将3fs部署在了容器当中,fuse client是运行在一个单独的容器里。之前想在主机端使用fuse挂载的目录,是通过将容器的挂载信息反向挂载到主机上,这样可以直接在主机端调用posix api使用该挂载目录。但是我现在想使用usrbio native api,发现在主机端直接使用是会报错的。报错信息如下(运行程序的逻辑为usrbio.md里结尾的example) <img width="752" alt="Image" src="https://github.com/user-attachments/assets/3c1026b8-e17f-4d0a-b33e-6d14d2d7c900" /> 如果在fuse 容器内部使用api是没有问题的,想请问下有什么办法可以解决这里的register失败的问题,可以方便地使用usrbio接口在host上利用容器内fuse client提供的服务呢?
Author
Owner

@qiuxinyidian commented on GitHub (Jul 13, 2025):

解决了吗?

<!-- gh-comment-id:3066966464 --> @qiuxinyidian commented on GitHub (Jul 13, 2025): 解决了吗?
Author
Owner

@FauraSol commented on GitHub (Jul 15, 2025):

我在尝试在容器内部使用usrbio,我指定了
--privileged
--network=host
-v /dev/infiniband:/dev/infiniband
将网络设备透传,但是我在尝试读取时,cqe.result=-13,似乎是无权限,请问有解决方法吗?

————————————
我修改了docker启动时加上如下参数后,可以在容器内部使用usrbio了,我接下来也会开始尝试在宿主机中使用usrbio api

--cap-add=SYS_RESOURCE \ # 允许操作系统资源
--shm-size=24g \ #设置足够大的共享内存使用总量
 --ulimit memlock=-1 \ # 允许pin住内存,因为据我所学,usrbio需要直接复用RDMA mr,没有这一项不能正确pin住并操作mr
<!-- gh-comment-id:3071696836 --> @FauraSol commented on GitHub (Jul 15, 2025): 我在尝试在容器内部使用usrbio,我指定了 --privileged \ --network=host \ -v /dev/infiniband:/dev/infiniband \ 将网络设备透传,但是我在尝试读取时,cqe.result=-13,似乎是无权限,请问有解决方法吗? ———————————— 我修改了docker启动时加上如下参数后,可以在容器内部使用usrbio了,我接下来也会开始尝试在宿主机中使用usrbio api ``` --cap-add=SYS_RESOURCE \ # 允许操作系统资源 --shm-size=24g \ #设置足够大的共享内存使用总量 --ulimit memlock=-1 \ # 允许pin住内存,因为据我所学,usrbio需要直接复用RDMA mr,没有这一项不能正确pin住并操作mr ```
Author
Owner

@SgtPepperr commented on GitHub (Jul 15, 2025):

目前我这边已经可以在主机上使用容器提供的服务了,做法的话就是在启动容器时把主机上的/dev/shm挂载到容器里,同时把容器的挂载事件反向传播到主机上。
启动时增加了这两个选项

-v /mnt/3fs:/3fs:rshared \
-v /dev/shm:/dev/shm \  
<!-- gh-comment-id:3073212397 --> @SgtPepperr commented on GitHub (Jul 15, 2025): 目前我这边已经可以在主机上使用容器提供的服务了,做法的话就是在启动容器时把主机上的/dev/shm挂载到容器里,同时把容器的挂载事件反向传播到主机上。 启动时增加了这两个选项 ```bash -v /mnt/3fs:/3fs:rshared \ -v /dev/shm:/dev/shm \
Author
Owner

@LLLL114 commented on GitHub (Jul 21, 2025):

目前我这边已经可以在主机上使用容器提供的服务了,做法的话就是在启动容器时把主机上的/dev/shm挂载到容器里,同时把容器的挂载事件反向传播到主机上。 启动时增加了这两个选项

-v /mnt/3fs:/3fs:rshared
-v /dev/shm:/dev/shm \

same problem

<!-- gh-comment-id:3095080129 --> @LLLL114 commented on GitHub (Jul 21, 2025): > 目前我这边已经可以在主机上使用容器提供的服务了,做法的话就是在启动容器时把主机上的/dev/shm挂载到容器里,同时把容器的挂载事件反向传播到主机上。 启动时增加了这两个选项 > > -v /mnt/3fs:/3fs:rshared \ > -v /dev/shm:/dev/shm \ same problem
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
deepseek-ai/3FS#192
No description provided.