POSIX 存储和 NFS 有什么区别?

What is the difference between POSIX storage and NFS?

在生物信息学领域,我们越来越多地使用基于集群的部署,如 Kubernetes、Spark 和 Hadoop。 POSIX 存储一词不断出现在文档中。

POSIX 存储和 NFS 块存储 (EBS) 有什么区别?这些术语可以互换吗?它基本上是指对象存储 (S3) 或 Microsoft(SMB、CIFS)之外的任何东西吗?

我的理解是:

POSIX 存储指的是可以使用 POSIX 文件系统函数(即通常的 'fopen')访问的任何存储,并且符合 POSIX filesystem requirements:this意味着它必须提供多种设施,如 POSIX 属性,或严格遵循 POSIX 语义的原子文件阻塞。

这通常是通过 POSIX 操作系统连接到主机(直接或通过 SAN)的存储。此外,文件系统必须支持 POSIX。

NFS、CIFS、其他 NAS 文件系统以及 HDFS (Hadoop) 不 POSIX 兼容。这些工作在网络协议之上,通常由一些其他文件系统支持,并且它们的访问语义不允许 POSIX 兼容性(但请参阅@SteveLoughran 关于 NFS 的说明)。

NTFS 和 FAT 是文件系统,但它们不具备 POSIX 功能(它们不支持具有相同语义的锁定)。 Windows 也不提供 POSIX 兼容的功能,但即使 Linux 也不能在这些文件系统上完全 POSIX 存储兼容。他们不是 "POSIX storage".

Amazon EBS 卷是块存储 (SAN),因此一旦卷附加到您的主机,如果您使用的文件系统是 POSIX,并且您是 运行 POSIX操作系统,可以考虑"POSIX storage".

S3 不是文件系统,它有自己的对象访问权限 API,因此不支持 POSIX 文件功能。

最典型的 Linux 文件系统(当由 POSIX 主机直接挂载时)是 POSIX 支持的(即 ext3、ext4、xfs、zfs)。