30

Posix compliance is a standard that is been followed by many a companies. I have few question around this area, 1. does all the file systems need to be posix compliant? 2. are applications also required to be posix compliant? 3. are there any non posix filesystems?

4

3 回答 3

31

在“需要 POSIX 文件系统语义”领域,通常的意思是:

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

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

于 2014-04-17T15:49:52.610 回答
8

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

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

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

于 2017-01-04T18:35:35.017 回答
5

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

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

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

3. 有没有非posix 文件系统? HDFS(Hadoop 文件系统)

于 2015-10-03T14:28:55.543 回答