小编Jmo*_*y38的帖子

在 NFS 上 flock(2) 与 fcntl(2)

Perl 5.x 文档指出,它的 flock(..) 实现将使用以下本地调用之一,从 1 开始,如果不可用,则朝 3 工作:

  1. 羊群(2)
  2. fcntl(2)
  3. 锁(3)

没关系。但是,您可能已经注意到他们的免责声明,即不应在 NFS 上使用 flock(2)。该文档建议使用 -Ud_flock 标志来强制 Perl 使用 flock(2)。flock(2) 的手册页(在 Redhat 上)陈述了关于 NFS 问题的类似免责声明。

我的问题是,为什么!?!?我似乎找不到深入的文章或解释为什么 flock(2) 在 NFS 上不安全。

我已经在 Redhat(使用 flock(2) 的地方)和 Solaris(使用 fcntl(2) 的地方)用 C 和 Perl 编写了几个测试脚本。我运行了 strace/truss 以确保 Perl 确实分别使用了 flock(2) 和 fcntl(2)。我无法复制任何没有兑现锁的问题!是什么赋予了??

nfs system-calls

23
推荐指数
3
解决办法
2万
查看次数

mkfifo - 磁盘 I/O 真的发生了吗?

我有 2 个应用程序:

  • 生产者(N 个实例)
  • 消费者(1个实例)

我目前从生产者那里写出中间结果,然后消费者从磁盘读取这些文件并产生最终结果。

我想通过将生产者的输出直接“流式传输”到消费者来最小化这个 I/O。

我碰到命名管道(mkfifo)和随后的例子在这里。这看起来很棒,但我无法确定的是实际是如何实现的?FIFO 队列是否只是通过文件进行缓冲?如果是这样,那可能对我没有帮助。我希望内容完全“通过内存”流式传输而不使用磁盘。也许这在整个流程中是不可能的?

io fifo

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

gzip 压缩文件的奇怪行为

我在 Redhat 系统上遇到了一个非常奇怪的问题。我们有一个 Gzip 压缩的 TAR 文件,其中包含数百个带有绝对路径的小文本文件。它只有 8 MB。我们将此文件复制到已安装的 ext3 HDD 后,它挂起,导致系统崩溃并重新启动。我认为操作系统最终会向“cp”进程发送一个 SIGTERM。sys 日志中的内容不多。

我无法进行太多调试,因为这是一个我无法直接访问的远程系统。我不是在寻找直接的答案,因为我没有提供很多信息。但是,我想有人可能会提到一些我还没有想到的东西,以激发进一步的独立调查。这有点具体,因此为了使其成为更一般的讨论:

  • Unix 中有什么东西会导致“cp”(或底层系统调用)以不同于任何其他文件的方式对待压缩档案吗?
  • ext3安装的硬盘怎么样?有什么理由以不同的方式处理压缩档案
  • NFS... 我们正在通过 NFS 源获取文件。有什么理由 NFS 应该特别处理它?

filesystems rhel nfs mount

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

标签 统计

nfs ×2

fifo ×1

filesystems ×1

io ×1

mount ×1

rhel ×1

system-calls ×1