标签: nfs

如何判断文件是否在Perl的远程文件系统上?

在shell脚本或Perl中,是否有一种快速而简单的方式来判断路径是位于远程文件系统(nfs等)还是本地路径?或者是唯一的方法来解析/ etc/fstab并检查文件系统类型?

filesystems shell perl nfs

11
推荐指数
1
解决办法
3089
查看次数

确保客户端上的文件状态与NFS服务器同步

我正在尝试找到适当的方法来处理NFS客户端上的陈旧数据.考虑以下场景:

  • 两台服务器使用多个文件挂载相同的NFS共享存储
  • 1服务器上的客户端应用程序删除一些文件
  • 2服务器上的客户端应用程序尝试访问已删除的文件,但失败的是:过时的NFS文件句柄(没什么奇怪的,预计会出错)

(另外,可能有用的是要知道,出于性能原因,两个服务器上的缓存安装选项都相当高).

我想要了解的是:

  • 有可靠的方法来检查,该文件是否存在?在上面给出的场景中,文件上的lstat返回成功,只有在尝试移动文件后应用程序才会失败.
  • 如何手动将客户端上的目录内容与服务器同步?
  • 有关如何在NFS的情况下编写可靠的文件管理代码的一般建议?

谢谢.

c linux nfs

11
推荐指数
3
解决办法
1万
查看次数

检查新创建的文件时如何强制刷新NFS缓存?

在Linux NFS共享装载上创建文件时,客户端是Linux或mac机器.文件的存在与否是下一步操作的关键,但检查并不总是返回正确的结果:

例如,我在perl中这样做,这仍然不能正常工作,尤其是mac机器

write_key_file();  # write a file that must be checked before proceeding
Run Code Online (Sandbox Code Playgroud)

当文件存在时,以下检查不能始终返回true

问题 - perl中的此命令未在NFS系统中返回正确的状态:

if( -e $file){}
Run Code Online (Sandbox Code Playgroud)

无法解决的无法解决的问题:

 sleep(5);   # wait 5 seconds
 system("ls -ltr"); # force to cache?
 if(-e $file){}
Run Code Online (Sandbox Code Playgroud)

我不打算检查这样的每个文件,但有几个关键位置,以获得正确的文件状态是很重要的.

我们是否有更好的方法在特定目录上的特定文件上强制刷新nfs缓存?谢谢.

我不确定这是一个XY问题,但有一些最薄弱的问题都可以解决.

A - NFS客户端设置

如果在这个阶段有解决方案,那就太好了!

B - exit_code或返回写入函数的代码

$exit_code = write_key_file();
Run Code Online (Sandbox Code Playgroud)

它的问题,而不是所有的写作都在代码块的范围内.这只能解决部分问题.

C - 禁用特定文件或目录的NFS缓存以进行文件检查

我需要确定这是可能的以及如何?如果没有,为什么?

我对所有可能的解决方案,没有解决方案或其他可能性持开放态度.

linux perl nfs

11
推荐指数
1
解决办法
1万
查看次数

Kubernetes:使用NFS进行动态持久卷配置

我有多节点kubernetes设置.我正在尝试使用带有NFS卷插件的存储类动态分配持久卷.我找到了glusterfs,aws-ebs等的存储类示例.但是,我没有找到任何NFS示例.如果我只创建PV和PVC,那么NFS工作得很好(没有存储类).我试图通过引用其他插件为NFS编写存储类文件.请参考下面,

NFS的存储class.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  namespace: kube-system
  name: my-storage
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "true"
  labels:
    kubernetes.io/cluster-service: "true"

provisioner: kubernetes.io/nfs
parameters:
  path: /nfsfileshare
  server: <nfs-server-ip> 
Run Code Online (Sandbox Code Playgroud)

NFS-PV-claim.yaml

apiVersion: v1
metadata:
  name: demo-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: my-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
Run Code Online (Sandbox Code Playgroud)

它没用.所以,我的问题是,我们可以为NFS编写存储类吗?它是否支持动态提供?

nfs docker kubernetes

11
推荐指数
2
解决办法
1万
查看次数

qtcreator与cmake商店在哪里运行和构建设置,以及如何通过脚本设置?

至少在我的用法中,我有时删除我的CMake构建文件夹并创建一个新文件夹,或者有多个构建文件夹(每台计算机一个)但只有一个源文件夹(nfs mount).

据我所知,QT Creator将设置保存到树中的CMakeLists.txt.user ,将其他一些设置保存到build文件夹中的'project.cbp'文件中.如果我从GUI设置设置,它们会在擦除/创建构建文件夹后丢失.很公平,但我想在创建新版本时使用脚本再次设置它们.

那么,我该怎么做:

a)让QT Creator在源树之外的某处写入CMakeLists.txt.user文件夹,以便保留机器特定的设置(例如在开发计算机上调试,在测试计算机上发布)?

b)从QT Creator项目读取/编写构建和运行设置,例如每个可执行文件的调试参数和额外的构建命令(例如-j8)?

然后我会在CMakeLists.txt中执行类似"execute_process(...)"的操作,为QT Creator项目设置一些调试和构建参数.

qt nfs cmake qt-creator

10
推荐指数
1
解决办法
5300
查看次数

什么是测试NFS性能的正确方法

我给了一个项目,唯一的目标是监控网络的NFS性能.我知道那里有很多开源工具,但我仍然希望得到基本的想法,以便更好地调整周围的人.因此,该网络由几百个Linux系统和几千个帐户组成,其中NFS安装了家庭目录; 脚本可以推送到每个站,服务器也是可能的,如果这样做有任何好处.Afaik,基本上所有脚本应该做的是几个dd并观察NFS上的IO速率.
我的问题是这样做的正确方法是什么?我是否仅为了运行脚本而向系统添加新帐户?
一些一般的想法非常感谢:)

linux performance monitoring nfs system-administration

10
推荐指数
1
解决办法
3万
查看次数

无法使用nfs挂载vagrant synced文件夹

我设法在一个ubuntu流浪盒中设置我的Symfony2项目.但是通过它的网络服务器加载网站大约需要20秒.经过一番研究,我想出了使用nfs作为同步文件夹.这是我在Vagrantfile中的设置:

config.vm.network "private_network", ip: "192.168.56.101"
config.vm.synced_folder ".", "/vagrant", :nfs => true, :mount_options => ["dmode=777","fmode=777"]
Run Code Online (Sandbox Code Playgroud)

启动de vagrant box后,我收到以下错误

==> default: Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mount -o 'dmode=777,fmode=777' 192.168.56.1:'/Users/marcschenk/Projects/teleboy.ch' /vagrant

Stdout from the command:

Stderr from the command:

stdin: is not a tty
mount.nfs: an incorrect mount option was specified
Run Code Online (Sandbox Code Playgroud)

VM似乎工作,但同步文件夹显然是空的.我错了什么?

我的设置:

  • Vagrant 1.6.5&Virtualbox 4.3.18
  • 主持人:OS X 10.10
  • 嘉宾:Ubuntu 12.04

macos nfs shared-directory vagrant ubuntu-12.04

10
推荐指数
1
解决办法
1万
查看次数

rename()原子性和NFS?

参考:rename()是原子的吗?

我问的是类似的东西,但不完全一样,因为我想知道的是依赖于rename()使用NFS时的原子性是否安全?

这是我正在处理的一个场景 - 我有一个必须始终存在的'索引'文件.

所以:

  • 客户端创建一个新文件
  • 客户端通过"旧"索引文件重命名新文件.

独立客户:

  • 读取索引文件
  • 指的是基于索引的磁盘结构.

这假设rename()是原子意味着 - 总会有一个'索引'文件(尽管它可能是一个过时的版本,因为缓存和时间)

然而我遇到的问题是 - 这是在NFS上发生的 - 并且正在工作 - 但是我的几个NFS客户端偶尔会报告"ENOENT" - 没有这样的文件或目录.(例如,在以5米间隔发生的数百次操作中,我们每隔几天就会收到此错误).

所以我希望是否有人可以启发我 - 在这种情况下,实际上是否真的无法获得'ENOENT'?

我问的原因是RFC 3530中的这个条目:

RENAME操作必须是客户端的原子操作.

我想知道这是否只是发出重命名的客户端,而不是查看目录的客户端?(我对缓存/过时的目录结构没问题,但是这个操作的重点是这个文件总是以某种形式"存在")

操作顺序(来自执行写操作的客户端)是:

21401 14:58:11 open("fleeg.ext", O_RDWR|O_CREAT|O_EXCL, 0666) = -1 EEXIST (File exists) <0.000443>
21401 14:58:11 open("fleeg.ext", O_RDWR) = 3 <0.000547>
21401 14:58:11 fstat(3, {st_mode=S_IFREG|0600, st_size=572, ...}) = 0 <0.000012>
21401 14:58:11 fadvise64(3, 0, 572, POSIX_FADV_RANDOM) = 0 <0.000008> …
Run Code Online (Sandbox Code Playgroud)

linux nfs atomicity

10
推荐指数
3
解决办法
2662
查看次数

WSL下的NFS客户端 - mount.nfs:没有这样的设备

尝试挂载nfs导出时出现以下错误.

sudo mount 192.168.1.175:/mnt/nas /mnt/c/nas
mount.nfs: No such device
Run Code Online (Sandbox Code Playgroud)

有想法该怎么解决这个吗?

nfs windows-subsystem-for-linux

10
推荐指数
1
解决办法
7723
查看次数

打开O_CREAT | Linux上的NFS上的O_EXCL?

什么时候在Linux 2.6内核和NFSv3中确实open("fname", O_CREAT|O_EXCL)有效?当前的规范open(2)系统调用文档(http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html)说一切都很好:

  - O_EXCL  
   - ...  
      On NFS, O_EXCL is only supported when using NFSv3 or later on kernel  
      2.6 or later.  In NFS environments where O_EXCL support is not  
      provided, programs that rely on it for performing locking tasks will  
      contain a race condition.  Portable programs that want to perform  
      atomic file locking using a lockfile, and need to avoid reliance on NFS  
      support for O_EXCL, can  ...
Run Code Online (Sandbox Code Playgroud)

这看起来好像所有2.6内核都没问题,但是手册页面更改日志(ca late …

linux file-io nfs glibc

9
推荐指数
1
解决办法
3621
查看次数