我的 Jenkins 服务器在 Windows 2008 服务器上的 Tomcat 中运行。我在 CentOS 上设置了 NFS 服务器,Win2008 服务器可以通过 mount 命令访问 NFS 共享文件夹。我在 Windows 上以管理员用户身份运行时对其进行了测试。我将该文件夹作为 Z 驱动程序安装在 Windows 2008 服务器上。但是我在 Jenkins 的工作说它找不到 Z 驱动程序,我猜 Jenkins Web 应用程序可能没有足够的权限来访问 Z 驱动程序。请查看 Jenkins 的错误信息
控制台输出:
Started by user anonymous
Building in workspace C:\.jenkins\workspace\upland-install
[upland-install] $ cmd /c call "C:\Program Files\Apache Software Foundation\Tomcat 6.0\temp\hudson4487584210513580576.bat"
C:\.jenkins\workspace\upland-install>rd d:\tmp\upland_dist /s /q
C:\.jenkins\workspace\upland-install>xcopy Z:\upland_release\364 d:\tmp /S
**Invalid drive specification**
0 File(s) copied
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?将 Jenkins 安装为 Windows 服务?
我有流星的VM(虚拟盒)设置.我的主人和客人都是Ubuntu.VM包含通过Vagrantfile设置的vboxfs共享文件夹.我注意到的行为类似于NFS挂载.
我能够在这个共享文件夹中创建一个流星项目,但是当我运行该项目时,我得到指向mongodb的错误.
如果我按照https://github.com/pixelhandler/vagrant-dev-env/blob/master/README.md上的说明操作, 我的应用就可以了.
经过进一步调查,MongoDB似乎无法处理NFS共享,http://www.mongodb.org/display/DOCS/NFS
还有其他人遇到过这个问题吗?如果是这样,你有没有想出一个(非rsync)解决方案?
我打算将这个问题的链接发送给10gen,也许他们团队中的某个人可以回答它.
我们需要与Linux,MacOS和Windows主机共享VM.但是,对于Linux和MacOS,建议使用NFS共享,但对于Windows,不支持NFS共享.
有没有办法检测主机操作系统是Windows并禁用NFS共享?
我在两台 CentOS 6、64 机器之间设置了 NFS 文件共享。在服务器上,共享的文件夹最初由 root 用户拥有。在客户端上,它显示为 nfsnobody 所有。当我尝试从客户端写入该文件夹时,出现权限错误。因此,我将服务器上的文件夹所有权更改为 nfsnobody 并将其 chmod 为 777。但是,仍然不高兴 - 我继续收到权限错误。显然,这还有更多内容。我非常感谢任何能够帮助解决这个问题的 Linux 专家(我个人不值得被称为新手)。
编辑 - 我应该提到,尝试从客户端写入共享文件夹实际上可以创建一个文件条目。但是文件大小为0,并且报权限错误。
我将我的PHP会话文件存储在NFS共享上.问题是,PHP总是创建一个空的会话文件,但不能从中读取/写入,因此对于每个页面重新加载,都会创建一个新文件.
如果我将会话存储路径移动到本地文件夹,会话将正常保存.此外,我正在运行具有相同配置的另一个环境,它运行正常.
在PHP遇到此问题的同一台服务器上,我能够在保存会话的相同目录中创建/写入/读取文件(使用root,非root用户,特别是www-data用户进行测试).
我在Ubuntu 12.04 LTS上使用PHP 5.5.12,Apache 2.4.9和NFS v3
我的php.ini
session.save_handler = files
session.save_path = "2;/mnt/cache/sessions"
session.use_cookies = 1
session.use_only_cookies = 0
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 2592000
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 2592000
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
Run Code Online (Sandbox Code Playgroud)
我的/ etc/fstab
nfs-srv.local:/export/cache /mnt/cache …Run Code Online (Sandbox Code Playgroud) 我需要安装 NFS。经过多次尝试和错误,我可以在 Linux 系统上从 NAS 挂载 NFS 文件系统。我们还评估了当 NFS 不工作时是否可以使用 cif。手册页太混乱了,在网上找不到任何清晰的解释。我的问题是 - 如果 NFS 出现问题,可以使用 mount -t cifs 吗?cifs 是否始终可以替代 nfs。
这是我的摘录docker-compose.yml:
volumes:\n nfs_share:\n driver: local\n driver_opts:\n type: nfs\n o: addr=nfs_server,rw,noatime\n device: ":/srv/nfs_share"\nRun Code Online (Sandbox Code Playgroud)\n\n该卷已正确安装在主机上。
\n\n但是,在我的 docker 实例中,我无法使用文件锁。
\n\n例子:
\n\n# exec 3 > test_file\n# flock -x 3\nflock: 3: No locks available\nRun Code Online (Sandbox Code Playgroud)\n\n如果我在主机上手动挂载分区,我可以毫无问题地使用文件锁。
\n\n另外,我发现 Docker 没有使用正确的协议版本挂载 NFS 共享:
\n\n:/srv/nfs_share on /var/lib/docker/volumes/registry_registry/_data type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr={MYIPADDR},mountvers=3,mountproto=tcp,local_lock=none,addr={MYIPADDR})\nRun Code Online (Sandbox Code Playgroud)\n\n但是,如果我在主机上手动挂载分区,则可以正确使用 NFS4:
\n\nnfs:/srv/nfs_share on /mnt/nfs_share type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr={MYIPADDR},local_lock=none,addr={MYIPADDR})\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试添加nolock选项,或者local_lock=all,这些选项似乎被忽略\xe2\x80\xa6 我也尝试指定该vers=4.0选项,或使用type: nfs4\xe2\x80\xa6 所有这些变体都不会改变任何内容。
I\xe2\x80\x99m 尝试推送到 Harbor 注册表 2.2。\n它与 ssl 配合使用,存储位于本地安装的 NFS 共享上。\n我收到的错误是:未经授权访问存储库:test/flask,操作:推送:未经授权访问存储库:测试/烧瓶、操作推送。
\n我尝试使用管理员用户推送我用它创建的项目。
\n我尝试更改 nfs 共享的权限,但它不起作用\xe2\x80\x99。
\n注册表位于 compose 上,而不是 Kubernetes 上。
\n这个问题的重点是强制 docker-compose 等待启动mysql容器,直到安装主机文件系统。就我而言,主机文件系统保存 mysql 数据库文件。
对于依赖于mysql容器的服务,有一些脚本,例如wait-for-it,它们作为容器入口点的一部分运行。这些脚本检查网络端口上服务的可用性。但我不知道如何使容器启动等待文件系统安装在主机上。
当主机启动时,NFS 和 RAID 文件系统的启动速度可能不如容器启动的速度。如果容器启动后文件系统挂载到主机上,则容器中的绑定卷不会更新。然后容器最终无法访问已安装/绑定的文件系统。
我在OSX主机上的Vagrant VM中运行Ubuntu 12.04.
这里是用于安装文件夹的Vagrant配置:
config.vm.synced_folder "/var/projects", "/projects", type: "nfs"
Run Code Online (Sandbox Code Playgroud)
我发现PHP无法在NFS共享目录上正确创建会话.
这是test.php脚本:
session_save_path('/projects/sessions');
session_start();
file_put_contents('/projects/sessions/file.txt', 'TEST');
Run Code Online (Sandbox Code Playgroud)
这是执行的输出:
$ php test.php
PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/project/sessions) in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
以下是执行后发生的情况:
$ ls -l
total 8
-rw------- 1 502 dialout 0 Jul 21 10:13 sess_0p6bt4g3o0sofi3b7p6016jtg7
-rw-rw-r-- 1 502 dialout 4 Jul 21 10:13 file.txt
-rw-rw-r-- 1 502 dialout 164 Jul 21 10:12 test.php
Run Code Online (Sandbox Code Playgroud)
如您所见,会话文件为空,并使用奇怪的权限创建.因此,创建txt文件时没有错误. …