什么是文件系统的posix合规性?

Ope*_*ile 24 filesystems posix

Posix合规性是许多公司遵循的标准.我对这方面的问题很少,1.所有文件系统都需要兼容posix吗?2.申请是否也需要符合posix标准?3.有没有非posix文件系统?

eck*_*kes 26

在"需要POSIX文件系统语义"领域,通常意味着:

  • 允许分层文件名和分辨率(.,..,...)
  • 支持至少接近开放的语义
  • umask/unix权限,3个文件时间
  • 8位字节支持
  • 支持在同一文件系统上进行原子重命名
  • fsync()/ dirfsync()持久性保证/限制
  • 支持多用户保护(调整大小文件返回0字节而不是垃圾)
  • 重命名和删除打开的文件(Windows不会这样做)
  • 支持'/'和\ 0旁边所有字节的文件名

有时它还意味着符号链接/硬链接支持以及文件名和32位文件指针(最小值).在某些情况下,它也被用来指如特定的API功能fcntl()锁定,mmap()或者truncate()或AIO.


Joh*_*ent 7

当我考虑分布式文件系统的POSIX兼容性时,如果在不同节点上运行的多个进程看到的行为与使用本地文件系统在同一节点上运行时相同,则使用分布式文件系统符合POSIX的通用标准.这基本上有两个含义:

  1. 如果系统有多个缓冲区缓存,则需要确保缓存一致性.
    • 这样做的各种机制包括锁和租赁.在这种情况下,错误行为的一个示例是在一个节点上成功写入但随后另一个节点上的读取器接收旧数据的编写器.
    • 但请注意,如果作者/读者彼此独立竞争,则没有正确定义的行为,因为他们不知道首先会发生哪种操作.但是如果他们通过消息传递之类的某种机制相互协调,那么如果编写器完成(特别是如果它发出同步调用),向阅读器发送消息并且读取器成功接收,那么它将是不正确的,然后是读者阅读并获取陈旧数据.
  2. 如果数据跨多个数据服务器进行条带化,则跨越多个条带的读取和写入必须是原子的.
    • 例如,当读者在写入相同条带的同时读取条带时,读者应该在写入之前接收所有条带,或者在写入之后接收所有条带.不正确的行为将是读者接收一些旧的和一些新的.
    • 与上述相反,即使作家/读者正在比赛,这种行为也必须正常工作.

虽然我的示例是对单个文件的读/写,但正确的行为还包括对单个文件的写入/写入以及通过诸如stat/readdir/mkdir/unlink/etc之类的调用对分层命名空间进行读/写和写入/写入.


小智 5

以非常客观的方式回答您的问题:

1. 是否所有文件系统都需要符合 posix? 其实并不是。事实上,POSIX 定义了一些通用的操作系统标准。很好,但不是真正必需的。

2. 应用程序是否也需要符合 posix 标准? 不。

3. 是否有任何非 posix 文件系统? HDFS(Hadoop文件系统)