【求助】客户端建立块设备后,volume容器重启导致块设备配置丢失的问题

我在客户端建立块设备后,可以在客户端主机使用lsblk命令看到网络块设备nbd0,但是客户端主机重启后,在客户端主机上不再能看到块设备nbd0,进入volume容器查看,发现相应的块设备配置文件未进行固化,导致容器重启后,相关配置丢失,请问这种情况怎么处理?

另外,我在部署监控模块时,出现版本低,不能部署的问题,提示让我联系开发者,请问开发者这个问题如何解决?

目前我们没有开机自启动的特性,如果你遇到此情况,可以通过以下步骤来处理:

  1. 通过以下命令查看客户端状态
curveadm client status
  1. unmap 相应卷
curveadm unmap USER:VOLUME
  1. 重新映射卷
curveadm map USER:VOLUME

好的,非常感谢您的回复,那么请问,如果我想修改curvebs相关源码,将容器内块设备的配文件目录映射到宿主机目录,已达到容器重启不丢失配置数据的目的,请问源码中启动volume容器的代码的位置在哪里,我找了,但是没找到,能不能给我一提示,方便我去修改相关的源码,以改进这个问题,非常感谢!

我想你要表达的是改进部署工具 CurveAdm,以达到持久化客户端配置文件 client.yaml ,防止该文件丢失的目的,是吗?
如果是的话,你可以参考以下 2 个 CurveAdm 实现的入口:

  1. map 命令实现的入口:client/map.go
  2. map 命令所执行任务的入口:bs/map.go

另外如果你想保存客户端的配置文件,我认为可以给 client 管理命令添加 config 子命令,并通过指定客户端 ID 来查看对应客户端的配置,这就需要你将配置文件保存在数据库 SQLite 中:

curveadm client config --id b81a9780dc70

而客户端 ID 则可以通过 status 子命令获取:

curveadm client status
Get Client Status: [OK]  

Id            Kind     Host  Container Id  Status     Aux Info                                   
--            ----     ----  ------------  ------     --------                                   
b81a9780dc70  curvefs  nuc   f9673d04a23c  Up 9 days  {"fsname":"myfs","mount_point":"/mnt/cfs"}

当然你也可以通过更好的设计来达到这一目的。
欢迎向 Curve 社区提交 PR,来帮助我们让 CurveAdm 变得更好 :slight_smile:

确实是一个好的提议,我会尝试进行完善,非常感谢!

1 个赞