在生物信息学中,我们越来越多地使用基于集群的部署,如Kubernetes、Spark和Hadoop。文档中经常出现“POSIX存储”这个术语。
POSIX存储和NFS块存储(EBS)有什么区别?这些术语是否可以互换使用?它基本上是否意味着任何不是对象存储(S3)或Microsoft(SMB、CIFS)的存储?
POSIX存储和NFS块存储(EBS)有什么区别?这些术语是否可以互换使用?它基本上是否意味着任何不是对象存储(S3)或Microsoft(SMB、CIFS)的存储?
我理解:
POSIX存储是指可以使用POSIX文件系统功能(即通常的“fopen”)访问的任何存储,并遵守POSIX文件系统要求:这意味着它必须提供几个设施,如POSIX属性、或者严格遵循POSIX语义的原子文件阻塞。
这通常是通过POSIX操作系统直接或通过SAN连接到主机的存储。此外,文件系统必须支持POSIX。
NFS、CIFS和其他NAS文件系统以及HDFS(Hadoop)都不与POSIX兼容。它们建立在网络协议之上,通常由其他文件系统支持,其访问语义不允许与POSIX兼容(但请参见@SteveLoughran有关NFS的说明)。
NTFS和FAT是文件系统,但它们不支持POSIX(它们不支持具有相同语义的锁定)。Windows也没有提供POSIX兼容函数,但即使在Linux上,这些文件系统也不能完全实现POSIX存储。它们不是"POSIX存储"。
Amazon EBS卷是块存储(SAN),因此一旦卷附加到主机上,如果您使用的文件系统是POSIX,并且正在运行POSIX操作系统,则可以将其视为“POSIX存储”。
S3不是一个文件系统,它有自己的对象访问API,因此它不能支持POSIX文件函数。
大多数典型的Linux文件系统(在由POSIX主机直接挂载时)都支持POSIX(即ext3、ext4、xfs、zfs等)。