什么是文件系统的 posix 合规性?
Posted
技术标签:
【中文标题】什么是文件系统的 posix 合规性?【英文标题】:what is posix compliance for filesystem? 【发布时间】:2013-09-04 04:58:18 【问题描述】:Posix 合规性是许多公司都遵循的标准。 我对这个领域没有什么疑问, 1. 是否所有文件系统都需要符合 posix 标准? 2. 应用程序是否也需要符合 posix 标准? 3. 有没有非posix文件系统?
【问题讨论】:
请注意,POSIX 合规性与操作系统有关,而不是特定于文件系统。它的一部分确实指定了用于访问文件系统的 API。在这种情况下:1)它不是必需的,但它对程序员很有帮助,2)只有当他们想要使用符合 POSIX 的操作系统时,3)是的。见:***.com/questions/1780599/… 投票结束过于广泛:一个问题太多;-) 【参考方案1】:在“需要 POSIX 文件系统语义”领域,通常的意思是:
允许分层文件名和分辨率(.、..、...) 至少支持接近开放语义 umask/unix 权限,3 个文件时间 8位字节支持 支持同一文件系统上的原子重命名 fsync()/dirfsync() 持久性保证/限制 支持多用户保护(调整文件大小返回 0 字节而不是以前的内容) 重命名和删除打开的文件(Windows 不这样做) 文件名支持除 '/' 和 \0 之外的所有字节有时它也意味着符号链接/硬链接支持以及文件名和 32 位文件指针(最小)。在某些情况下,它还用于引用特定的 API 功能,例如 fcntl()
锁定、mmap()
或 truncate()
或 AIO。
【讨论】:
eckes,请您澄清一下“支持多用户保护”是什么意思? @pva 是的,基本上是我在括号中写的——我不确定是否有更好的官方名称。没有办法从已删除的文件中访问垃圾。如果您调整文件大小,则后者可能发生在 DOS 上的 FAT 上。rename and delete open files (Windows does not do that)
AFAIK,Windows 可以这样做,但仅适用于带有 NTFS 文件系统的 Win 10 RS1+。
当 FILE_SHARE_DELETE 被赋予 CreateFile 时,Windows 确实允许删除和重命名打开的文件。【参考方案2】:
当我考虑分布式文件系统的 POSIX 合规性时,我使用分布式文件系统符合 POSIX 的通用标准,如果在不同节点上运行的多个进程看到相同的行为,就好像它们在使用本地的同一节点上运行一样文件系统。这基本上有两个含义:
-
如果系统有多个buffer-cache,需要保证缓存的一致性。
执行此操作的各种机制包括锁定和租约。在这种情况下,不正确行为的一个示例是写入器在一个节点上成功写入,但随后另一个节点上的读取器接收到旧数据。
但是请注意,如果作者/阅读者相互独立竞争,则没有正确定义的行为,因为他们不知道哪个操作将首先发生。但是,如果它们通过某种机制(例如消息传递)相互协调,那么如果编写器完成(尤其是如果它发出 sync 调用),向成功接收到的读取器发送消息,那将是不正确的由阅读器,然后阅读器读取并获取陈旧数据。
如果数据跨多个数据服务器进行条带化,则跨多个条带的读取和写入必须是原子的。
例如,当读取器在读取条带的同时写入器写入相同的条带时,读取器应该接收写入之前的所有条带,或者接收写入之后的所有条带。不正确的行为是让读者收到一些旧的和一些新的。
与上述相反,即使作者/阅读器正在比赛,此行为也必须正常工作。
虽然我的示例是读取/写入单个文件,但正确的行为还包括写入/写入单个文件以及通过调用(例如 stat/readdir/mkdir/)读取/写入和写入/写入分层命名空间取消链接/等。
【讨论】:
【参考方案3】:以非常客观的方式回答您的问题:
1.是否所有文件系统都需要符合 posix 标准? 其实并不是。事实上,POSIX 定义了一些通用的操作系统标准。很高兴拥有,但并不是真正需要的。
2。应用程序是否也需要符合 posix 标准? 没有。
3.是否有任何非 posix 文件系统? HDFS(hadoop 文件系统)
【讨论】:
以上是关于什么是文件系统的 posix 合规性?的主要内容,如果未能解决你的问题,请参考以下文章
Windows 内核是不是有 read-on-write fork() 指令?
pjd-test The test suite checks POSIX compliance - 测试文件系统posix 接口兼容性