跳转到内容

删不掉共享文件夹 ​

适用范围 ​

在 存储器 → 共享文件夹(Storage → Shared Folders)里选中某个共享文件夹,删除(Delete)按钮是灰色的,点不了。

这是 OMV 的保护机制:共享文件夹被任何一处配置引用时,不允许删除。列表里的引用(Referenced)一列打了勾,就说明还有引用。官方 FAQ 的说法是:必须先在所有用到它的服务里取消引用,删除按钮才会可用。

开始排查前 ​

取消引用会影响正在用它的服务

影响范围:引用它的可能是 SMB 共享、NFS 共享、rsync 任务或模块、用户主目录、FTP、USB 备份、Compose 等。取消引用,就意味着这些服务不再使用这个目录:SMB 里的共享消失,rsync 任务失去源或目标,容器失去挂载来源。

前置条件:先确认没有人或任务还在用它,里面的数据已经备份或迁走。

回退办法:取消引用和删除共享文件夹,都只改配置,不会删除目录里的文件。需要时可以重新建共享、重新建任务,再指回同一个共享文件夹,但选项要重新配置,所以动手前先截图记下原来的设置。

先弄清一件事:界面里的删除只删除 OMV 数据库里的这条定义,不会删除目录里的文件和子目录。删除之后,数据仍留在磁盘上原来的路径里。

排查步骤 ​

1. 找出谁在引用它 ​

先在界面里逐个地方检查:

去哪里看看什么
服务 → SMB/CIFS → 共享(Services → SMB/CIFS → Shares)有没有哪个共享用了它
用户 → 设置(Users → Settings)用户主目录所在的共享文件夹
服务 → NFS → 共享(Services → NFS → Shares)NFS 共享
服务 → Rsync → 任务(Services → Rsync → Tasks)、服务 → Rsync → 服务器 → 模块(Services → Rsync → Server → Modules)任务的源和目标,rsync 模块
官方插件的设置页FTP、TFTP、USB 备份、ClamAV 扫描、PhotoPrism、FileBrowser、OwnTone、OneDrive、Kubernetes 等,凡是让你选过共享文件夹的地方
omv-extras 插件的设置页Compose 的「Compose 文件」「数据」「备份」,以及其他选过共享文件夹的插件

逐个找很容易遗漏。omv-extras 的 openmediavault-resetperms 插件,提供了一个只读的办法:

  • 界面:服务 → 重置权限(Services → Reset Permissions)的列表里,有一列被谁使用中(In use by),列出每个共享文件夹被哪些服务使用。
  • 命令行:
sh
# 在 OMV 的 shell 里执行(只读);<共享文件夹名称> 是列表里的名称
omv-showsharedfolder <共享文件夹名称>

它会列出配置数据库里引用这个共享文件夹的位置,例如 services->smb->shares->share。这个插件来自 omv-extras,需要先安装,见安装 omv-extras。

2. 取消引用 ​

对每一处引用,要么删除那一项(例如 SMB 里的那个共享),要么改成指向别的共享文件夹,然后点顶部黄色提示条上的应用。

特别注意 Compose 插件:它设置里的「Compose 文件」「数据」「备份」共享文件夹,存着你全部的 compose 栈和应用数据。不要为了删某个共享文件夹,就随手改成别的位置。需要迁移时,先停掉相关容器,再按Compose 插件设置详解和更新与备份容器的说明处理。

3. 删除共享文件夹 ​

回到 存储器 → 共享文件夹,选中它,删除按钮变成可用,点击并确认。删除之后:

  • 目录和里面的文件仍然在磁盘上,需要时可以重新建一个共享文件夹指向同一个相对路径。
  • 想清掉目录里的内容,在 shell 里手工删除之前,先确认没有别的共享文件夹指向同一个目录或它的子目录,并且数据已经备份。

4. 引用都取消了,按钮还是灰的 ​

  • 先点一遍黄色提示条上的应用,再刷新页面。
  • 引用可能来自你已经卸载的插件的残留配置。卸载插件通常会清除它的配置,仍有残留时,不要手改 config.xml。先带着 omv-showsharedfolder 的输出去求助;需要自己处理的话,先读进阶的配置数据库:config.xml 与 omv-confdbadm,并且事先做好备份。
  • 共享文件夹显示「不可用」(Unavailable)时,通常是它所在的文件系统有问题,先看磁盘或文件系统不见了。

确认恢复 ​

  1. 共享文件夹从列表里消失,页面顶部没有待应用的更改。
  2. 原来依赖它的服务(SMB、rsync、容器等)没有报错,或者已经按预期改到了新的位置。
  3. 在 shell 里确认数据还在:ls /srv/dev-disk-by-uuid-<UUID>/<目录>。

仍未解决 ​

附上:存储器 → 共享文件夹 的截图(遮盖主机名和路径中的敏感部分)、omv-showsharedfolder <共享文件夹名称> 的输出、已安装的插件列表(dpkg -l | grep openmediavault)。读如何有效求助。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。