首页 > 解决方案 > Samba Share .pid 权限问题

问题描述

我会尽量精简我的问题。

这是我所拥有的:

我正在尝试做的事情:

所以这就是问题所在。将文件夹安装到容器上工作并生成文件,包括失败的 .pid 文件,它告诉我rw权限有效。

[v3.0.2.4552] System.UnauthorizedAccessException: Access to the path '/config/radarr.pid' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileStream.WriteNative(ReadOnlySpan`1 source)
   at System.IO.FileStream.FlushWriteBuffer()
   at System.IO.FileStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at System.IO.StreamWriter.CloseStreamFromDispose(Boolean disposing)
   at System.IO.StreamWriter.Dispose(Boolean disposing)
   at System.IO.TextWriter.Dispose()
   at System.IO.File.WriteAllText(String path, String contents)
   at NzbDrone.Common.Processes.PidFileProvider.Write() in D:\a\1\s\src\NzbDrone.Common\Processes\PidFileProvider.cs:line 37

[Fatal] ConsoleApp: EPIC FAIL!

[v3.0.2.4552] NzbDrone.Common.Exceptions.RadarrStartupException: Radarr failed to start: Unable to write PID file /config/radarr.pid
 ---> System.UnauthorizedAccessException: Access to the path '/config/radarr.pid' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileStream.WriteNative(ReadOnlySpan`1 source)
   at System.IO.FileStream.FlushWriteBuffer()
   at System.IO.FileStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at System.IO.StreamWriter.CloseStreamFromDispose(Boolean disposing)
   at System.IO.StreamWriter.Dispose(Boolean disposing)
   at System.IO.TextWriter.Dispose()
   at System.IO.File.WriteAllText(String path, String contents)
   at NzbDrone.Common.Processes.PidFileProvider.Write() in D:\a\1\s\src\NzbDrone.Common\Processes\PidFileProvider.cs:line 37
   --- End of inner exception stack trace ---
   at NzbDrone.Common.Processes.PidFileProvider.Write() in D:\a\1\s\src\NzbDrone.Common\Processes\PidFileProvider.cs:line 42
   at Radarr.Host.Bootstrap.Start(StartupContext startupContext, IUserAlert userAlert, Action`1 startCallback) in D:\a\1\s\src\NzbDrone.Host\Bootstrap.cs:line 37
   at NzbDrone.Console.ConsoleApp.Main(String[] args) in D:\a\1\s\src\NzbDrone.Console\ConsoleApp.cs:line 41

/config/radarr.pid从容器内生成,因此它绝对可以访问rw它,所以我猜Unable to write PID file /config/radarr.pid消息是不正确的,它可能与执行有关,而不是读/写权限。

这是我从 kubernetes yaml 安装卷的方式

        - name: master-share-config
          flexVolume:
            driver: "fstab/cifs"
            fsType: "nfs"
            secretRef:
              name: "master-share-secret"
            options:
              networkPath: "//MACHINE_IP_ADDRESS/apps/radarr/"
              mountOptions: "dir_mode=0755,file_mode=0644,uid=k8sadmin,gid=k8sadmin,rw,exec,dev,suid"

我尝试过但不起作用的事情:

我尝试过的事情确实有效:

我已经尝试了一段时间了,我几乎可以肯定它要么是 samba 共享的设置,要么是卷被声明的方式。

请注意,我已经使用fstab/cibs插件来帮助调试它,我并不热衷于一次又一次地将驱动器重新安装到容器中,但它似乎可以安装驱动器。话虽如此,我不完全确定fsType: "nfs"正在做任何事情,因为日志没有说明你可以做到。但正如我所说,安装 from/etc/fstab也不起作用。

如果有人之前有解决方案和/或遇到类似问题,请告诉我。

另外,因为我能够从工作机器上的文件夹运行它,所以我只能假设这是 samba 或 samba 声明的问题。

标签: dockerkubernetessamba

解决方案


好的,在输入所有内容后,我找到了自己的问题。开始调查是否fsType: "nfs"有效。原来我根本没有使用 nfs,甚至没有安装 nfs 挂载工具。

在修复所有这些之后,它就可以工作了。

我会把它留在这里,希望它可以帮助其他人。


推荐阅读