在Windows上如何后台运行JuiceFS

Ceph对象存储方案

共 2031字,需浏览 5分钟

 ·

2022-03-13 11:22

在Windows上如何后台运行JuiceFS

1. 背景&解决方案

JuiceFS的Badger引擎改造完成以后,需要在Windows下面进行后台运行。因为现有的JuiceFS中还没有在Windows下的后台运行实现,所以需要通过其他途径解决。

现有代码地址 https://github.com/juicedata/juicefs/blob/main/cmd/mount_windows.go#L48

func makeDaemon(c *cli.Context, name, mp string, m meta.Meta) error {
    logger.Warnf("Cannot run in background in Windows.")
    return nil
}

网上找了一大圈,发现一个nssm的命令行工具比较好用

  • https://nssm.cc/ 官网

  • https://nssm.cc/release/nssm-2.24.zip 工具下载地址

  • https://git.nssm.cc/nssm/nssm.git 源码仓库

2. 脚本实现

以Windows10下为例,将相关操作封装成对应的批处理。具体如下

1. 服务注册脚本

解压对应的工具到Windows10下面的的D:/juicefs目录即可,同时将编译好的juicefs.exe也放置在同一个目录,创建一个初始化脚本InstallService.bat,该脚本用于注册一个名为JuiceFS的系统服务(开机自启动),并指定对应的挂载盘符,内容如下

@echo off
@title Run JuiceFS Background
echo ********************************
echo Setting mount path,(example: mount_path=Z)
set mount_path=Z
set /p mount_path="Set mount_path="
echo Mount JuiceFS To %mount_path%
set dir_name=badger_test
echo dir_name:badgerDB path
echo cache_dir:directory paths of local cache
echo max_uploads:directory paths of local cache
echo cache_size : size of cached objects in MiB (default: 102400)
echo ********************************

set max_uploads=150
set cache_size=102400
set juicefs_dir=D:\juicefs\
set cache_dir=%juicefs_dir%cache

if exist %cache_dir% (
echo "cache exist"
else (
md %cache_dir%
echo "create cache_dir"
)

%juicefs_dir%nssm.exe install JuiceFS Application=%juicefs_dir%juicefs.exe
%juicefs_dir%nssm.exe set JuiceFS Application %juicefs_dir%juicefs.exe
%juicefs_dir%nssm.exe set JuiceFS AppDirectory %juicefs_dir%
%juicefs_dir%nssm.exe set JuiceFS AppParameters mount  --cache-dir=%cache_dir% --cache-size=%cache_size% --max-uploads=%max_uploads% --no-usage-report --debug  badger://%dir_name%  %mount_path%:
%juicefs_dir%nssm.exe start JuiceFS

2. 服务关停脚本

脚本名称StopService.bat

@echo off
set juicefs_dir=D:\juicefs\
%juicefs_dir%nssm.exe stop JuiceFS

3. 服务卸载脚本

脚本名称RemoveService.bat

@echo off
set juicefs_dir=D:\juicefs\
%juicefs_dir%nssm.exe remove JuiceFS confirm

3. 运行须知

需要注意的是,上面的脚本都需要用系统管理员权限运行

8112ae152ab5ff08458f56e5e857d68b.webp

运行成功以后,可以成功在资源管理器中看到对应的盘符

ff1414690c128c25465b7d5a752803fa.webp

系统服务面板会注册一个名为JuiceFS的后台服务

928a04db9046f4b21d20fb399bc48347.webp


浏览 53
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报