【问题标题】:SqLite3 NFS mount issue with locking - can I use something like CIFS nobrl?带有锁定的 SqLite3 NFS 挂载问题 - 我可以使用 CIFS nobrl 之类的东西吗?
【发布时间】:2011-09-27 17:33:07
【问题描述】:

我遇到了一个锁定问题,即在 NFS 文件系统上创建 SQLITE3 数据库时,它会被永久锁定。我读过一个名为nobrl 的选项可以在相关文件系统是CIFS 时解决这个问题。 (它是 mount 命令的一个选项)。

发件人:http://linux.die.net/man/8/mount.cifs

nobrl

不要向服务器发送字节范围锁定请求。这是 对于某些不符合 cifs 风格的应用程序是必需的 强制字节范围锁(大多数 cifs 服务器还不支持 请求咨询字节范围锁定)。

如果 NFS 中发生字节范围锁定请求,是否有任何方法可以阻止它们,或者我是否在考虑这一点时就在错误的方向上运行?我很高兴像 CIFS 解决方案一样更改 mount 命令。

【问题讨论】:

  • 好吧,您可以使用 nolock 进行挂载(请参阅 nfs(5) 联机帮助页),但这确实是个坏主意。
  • SQLite 非常热衷于使用锁定(所有名副其实的数据库都是)所以真的有必要将数据库放在 NFS 挂载上吗?锁在网络文件系统中从来都不能很好地工作(由于网络的性质,总是需要对某些操作的语义进行隐瞒……)

标签: unix sqlite mount lynxos


【解决方案1】:

我建议通过启用 nolock 参数的软件打开你的 sqlite db,golang exg。:

sql.Open("sqlite3", "file:/media/R/Databases//your.db?nolock=1")

而 /media/R 是已安装的 Windows nfs-network-drive。请小心,因为您必须通过软件锁定您的数据库交互,否则您可能会在同时访问它时损坏您的数据库。

您可以在此处阅读有关 sqlite 参数的更多信息: https://www.sqlite.org/c3ref/open.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多