【发布时间】:2017-06-23 12:54:59
【问题描述】:
当我尝试在 EFS 目录上创建带有 sqlite3 的基础时,这会导致错误:
$ sqlite3 foo.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .log stderr
sqlite> CREATE TABLE foo (int bar);
Error: disk I/O error
有问题的 Sqlite3 数据库应该只存储元数据,并且不会经常更新。不需要并发访问。但是,如果创建数据库的进程死亡,则要求该进程可以在不同的主机上重新启动并继续前一个实例退出的位置。
Amazon 声称 EFS 是一个“文件系统,Amazon EC2 实例可以通过文件系统接口(使用标准操作系统文件 I/O API)访问该文件系统,并且支持完整的文件系统访问语义(例如强一致性和文件锁定)。”因此,我假设它适合手头的任务。
/etc/fstab 中的挂载选项有:
eu-west-1a.fs-ID.efs.eu-west-1.amazonaws.com:/ /efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0
我了解it is often generally discouraged to put databases on NFS。不过,我相信,鉴于 Amazon 和 SQLite 都使用的语言,开发人员会继续尝试。
【问题讨论】:
-
使用
.log stderr获取更多错误信息。 -
@CL。
.log stderr不会产生额外的输出 -
在你尝试写任何东西之前。
-
@CL。我明白了,请参阅上面的编辑。这就是我得到的。
-
更新您的
sqlite3工具。
标签: linux amazon-web-services sqlite nfs