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

问题描述 投票:0回答:3

POSIX 合规性是许多公司遵循的标准。我在这方面有几个问题:

  1. 所有文件系统都需要兼容 POSIX 吗?
  2. 应用程序是否也需要符合 POSIX 标准?
  3. 是否有非 POSIX 文件系统?
filesystems posix
3个回答
33
投票

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

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

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

fcntl()
锁定、
mmap()
truncate()
或 AIO。


8
投票

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

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


5
投票

1。所有文件系统都需要兼容 posix 吗?

其实并不是。事实上,POSIX 总体上为操作系统定义了一些标准。很好,但并不是真正需要的。

2。应用程序是否也需要兼容 posix?

没有。

3.有没有非 posix 文件系统?

HDFS(hadoop 文件系统)

© www.soinside.com 2019 - 2024. All rights reserved.