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

时间:2013-08-31 16:27:14

标签: filesystems posix

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

3 个答案:

答案 0 :(得分:24)

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

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:4)

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

<强> 1。所有文件系统都需要兼容posix吗? 其实并不是。事实上,POSIX一般为操作系统定义了一些标准。很高兴,但没有真正的要求。

<强> 2。应用程序是否也需要符合posix? 没有。

第3。有没有非posix文件系统? HDFS(hadoop文件系统)