我们的应用程序使用嵌入式Solr实例进行搜索 数据目录位于NFS上,我无法更改.Solr的用法非常简单,有一个线程定期更新索引,并且有几个读者线程 - 这些都在一个java进程中.没有其他Solr交互发生.
使用默认的"solrconfig.xml",我有时遇到"java.nio.channels.OverlappingFileLockException".据我所知,原因实际上是"SimpleFSLockFactory"与NFS无法正常工作.
问题:
鉴于上面描述的应用场景(没有并发索引修改),NoLockFactory不应该足够吗?使用NoLockFactory有什么缺点吗?如果我设置NoLockFactory,我会在错误日志中收到一些条目,说"配置警告:锁被禁用".为什么该消息会进入错误日志?这真的被认为是一个错误的案例,为什么?
也许有比使用"NoLockFactory"更好的解决方案?
不确定这与NFS有关,但有时(很少见)我的索引被破坏了,并且在尝试更新索引时我得到了很多"java.io.FileNotFoundException:_i.fdx".除了手动删除整个索引目录并从头开始之外,没有办法解决这个问题.为什么会发生这种情况,是否有任何优雅的方法可以自动检测损坏的索引并恢复?
在我的C/C++程序中,我想检查用户指定的数据目录是否驻留在NFS文件系统上.需要进行检查,因为远程NFS目录的数据处理延迟/带宽更差.如果数据目录是NFS,我想向用户发出警告.
我怎样才能做到这一点?我认为有stat()调用应该可以帮助我,但细节不明确.
我在Linux上.
我有一个类似于检查NFS共享是否挂载在python脚本中的问题,但在我的情况下,NFS服务器已挂载,但服务器崩溃并脱机.我试图通过使用考虑到这一点,os.dir.ismount('/path/to/mountpoint/)但我的问题是这个命令需要永远完成.
当我试图做一个简单的ls /path/to/mountpoint命令时,这个命令也没有完成.有什么根本错误的吗?我的设置是一个Linux NFSv3服务器和一个Linux NFS客户端.
我通常希望如果NFS服务器不可安装或不再可访问,则该ls命令显示本地目录的内容而不是暂停终端.
假设文件被替换(同名)批发而不是就地修改(即创建一个temp然后重命名为filename).
我想这个更改不会影响本地mmap,因为内核仍然有磁盘上旧文件(inode)的句柄.
但是,由于NFS是无状态的,mmap是否会在mmap的(长)生命周期内混淆并混淆旧/新文件内容?
在我看来,read/readv是处理NFS挂载文件的唯一安全方法.
我想将其他机器上的文件夹挂载到我的linux服务器上.为此,我使用以下命令
mount -t nfs 192.xxx.x.xx:/opt/oracle /
Run Code Online (Sandbox Code Playgroud)
哪个正在执行以下错误
mount.nfs: access denied by server while mounting 192.xxx.x.xx:/opt/oracle
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么?我是linux的新手.
我多次听到将gc.log放在NFS卷上的想法很糟糕,因为这可能会导致gc暂停时间更长。当前的jdk(8u25)仍然是这种情况吗?
我正在尝试将源目录从nfs服务器挂载到具有linux的嵌入式主板中的目标目录.以下命令在板中的shell提示符中按预期完美地工作.
mount -t nfs -o nolock 10.126.62.45:/vol/home/avinoba/Sky /mnt
Run Code Online (Sandbox Code Playgroud)
在上面的命令的程序中使用的等效系统调用是什么?我尝试了以下调用但挂载失败并显示"无效参数"
if(mount("10.126.62.45:/vol/home/avinoba/Sky","/mnt","nfs",MS_MGC_VAL,"nolock") == -1)
{
printf("ERROR: mount failed: %s \n",strerror(errno));
}
Run Code Online (Sandbox Code Playgroud)
请建议解决方案是什么.
谢谢
我正在开发一个应用程序,并有以下问题.
在使用NFC进行设备所有者配置时,我想发送一个字符串,该字符串将由新设备所有者应用程序使用.
我知道设备所有者配置的标准MIME属性,可在此处找到
这是一个片段,可以让您更好地了解我的问题.注意"myCustomValue"属性.
Properties properties = new Properties();
properties.put("myCustomValue", value);
properties.put(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, "com.example.some.app");
try {
properties.store(stream, "NFC Provisioning");
ndefMessage = new NdefMessage(new NdefRecord[{NdefRecord.createMime(DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, stream.toByteArray())});
} catch (IOException e) {
}
Run Code Online (Sandbox Code Playgroud)
这个片段在里面
public NdefMessage createNdefMessage(NfcEvent event)
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到一个模板
如果可能,我也想知道如何在配置的应用程序启动后立即检索该字符串值.
当我尝试sqlite3在EFS目录上创建基础时,这会导致错误:
$ 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数据库应仅用于故事元数据,并且不经常更新.不需要并发访问.但是,如果创建数据库的进程终止,则需要在不同的主机上重新启动该进程,并继续执行先前实例退出的位置.
亚马逊声称EFS是一个"文件系统,可以通过文件系统接口(使用标准操作系统文件I/O API)访问Amazon EC2实例,并且支持完整文件系统访问语义(例如强一致性和文件锁定) )".因此,我认为它适合手头的任务.
挂载选项/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使用的语言,开发人员将继续尝试.
我尝试首次创建nfs服务器。尝试安装到服务器时,出现错误“ mount.nfs:连接超时”。我的服务器版本是ubuntu 14.04.5 LTS,而我的客户端是ubuntu 14.04.1 LTS。以下是我执行的步骤。
在服务器端:
#vi / etc / exports
/home/nfs 192.168.13.81(rw,async,no_root_squash)
Run Code Online (Sandbox Code Playgroud)
#sudo服务nfs-kernel-server重新启动
#sudo exportfs -u
/home/nfs 192.168.13.81
Run Code Online (Sandbox Code Playgroud)
在客户端:
#sudo安装192.168.13.80:/home/nfs / home / nfs
mount.nfs: Connection timed out
Run Code Online (Sandbox Code Playgroud)
在尝试时
#sudo mount -t nfs4 -o proto = tcp,port = 2049 192.168.13.80:/home/nfs / home / nfs
mount.nfs4: mounting 192.168.13.80:/home/nfs failed, reason given by server: No such file or directory
Run Code Online (Sandbox Code Playgroud)
“#rpcinfo -p”给出:
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 …Run Code Online (Sandbox Code Playgroud) nfs ×10
linux ×4
java ×2
android ×1
indexing ×1
mmap ×1
mount ×1
nfsclient ×1
performance ×1
provisioning ×1
python ×1
solr ×1
sqlite ×1
stat ×1
ubuntu-14.04 ×1