在 Linux 服务器中使用 Docker
通过 PuTTy 的命令行
当我在本地机器上运行 ODM 时,无论是否拆分数据集,它都可以正常工作,使用
docker run -it --rm -v G:/test:/datasets/code opendronemap/odm --project-path /datasets
要么
docker run -it --rm -v G:/test:/datasets/code opendronemap/odm --project-path /datasets --split 10 --split-overlap 3
只要我在本地文件夹(硬盘驱动器或 USB 外部磁盘)中有数据,它就会按预期执行所有操作
但是当我在服务器上运行它时,它只能在没有split 命令的情况下工作:
docker run -it --rm -v /my-server/Project 文件夹:/datasets/code opendronemap/odm --project-path /datasets
工作正常,但只要我添加
--split 10 --split-overlap 3
到代码,我收到以下错误:
[信息] 运行 /code/SuperBuild/src/opensfm/bin/opensfm create_submodels >/var/www/data/44a86e01-7ff1-4848-a6b6-711097026c96/opensfm
回溯(最近一次调用最后一次):
文件“/code/SuperBuild/src/opensfm/bin/opensfm”,第 34 行,在
命令.运行(参数)
文件“/code/SuperBuild/src/opensfm/opensfm/commands/create_submodels.py”,第37行,运行中
meta_data.load_clusters_with_neighbors())
>create_submodels 中的文件“/code/SuperBuild/src/opensfm/opensfm/large/metadataset.py”,第 154 行
os.symlink(src_relpath, dst)
OSError: [Errno 95] 不支持操作
回溯(最近一次调用最后一次):
文件“/code/run.py”,第 56 行,在
应用程序执行()
文件“/code/stages/odm_app.py”,第 93 行,在执行中
self.first_stage.run()
运行中的文件“/code/opendm/types.py”,第 376 行
self.next_stage.run(输出)
运行中的文件“/code/opendm/types.py”,第 357 行
self.process(self.args,输出)
文件“/code/stages/splitmerge.py”,第 65 行,正在处理中
octx.run(“create_submodels”)
运行中的文件“/code/opendm/osfm.py”,第 21 行
(context.opensfm_path,命令,self.opensfm_project_path))
运行中的文件“/code/opendm/system.py”,第 76 行
引发异常(“孩子返回{}”。格式(retcode))
例外:孩子返回 1
似乎 opensfm 在读取/写入子模型文件夹时出现问题。 我加入了docker用户组,但是运行命令时没有sudo权限。
预期的行为是 ODM 创建子模型文件夹,并分块处理数据集,然后我可以提取每个子模型的正射影像和 DSM 以处理较小的 tif 文件
在服务器磁盘上使用 --split 运行 ODM
我一直在和服务器管理员来来回回,我想我们已经发现了问题:
Symlinks 在 cifs 文件系统上运行时出现问题,这需要将 mfsymlink 标志添加到 mount 命令,这就是我收到错误的原因。 添加 mfsymlink 标志后,该过程工作正常。 我现在正在运行一个更大的数据集来确定,但现在似乎已经修复了。
是的,这是完全有道理的。 大量使用符号链接对于文件系统来说是一个明确的问题。
Piero - 你仍然认为这是一个错误,还是我们应该要求 x-ancin 在文档中添加一些东西,如果可以的话?
我不认为这是一个错误,而是一个文件系统问题。 关闭。