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是“通过文件系统接口(使用标准操作系统文件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
我理解通常不建议将数据库放在NFS上。然而,考虑到亚马逊和SQLite所使用的语言,开发人员仍会尝试。
.log stderr
获取更多的错误信息。 - CL..log stderr
不会产生任何附加输出。 - Jansqlite3
工具。 - CL.strace
命令跟踪进程,以查看涉及的系统调用。就我所观察到的而言,EFS 似乎使用非常大(>32位)的 inode 号码。 - Michael - sqlbot