将 eSata 接口直接映射到 NFS 共享

将 eSata 接口直接映射到 NFS 共享

我不确定这是否可行,但我想安装一个 nfs 共享(作为客户端)并将主板外部 eSata 绑定到 nfs 共享。

这听起来可能有点假,但我拥有的是一个可以通过 eSata 播放媒体的媒体播放器,并且想要一个中间盒来完成 eSata 和 nfs 安装之间的转换。(因为这个特定的播放器对 nfs 世界一无所知)。

也许有更好的方法,所以我愿意听取建议。(但必须不是远离 nfs)。

我还有另一个(更草率的)想法,那就是找到一个尽可能小的外部 USB 和 eSata 驱动器,然后在外部驱动器上使用符号链接安装 nfs 共享,然后将媒体播放器 eSata 也插入该驱动器。

谢谢!

答案1

虽然从根本上来说这并非不可能,但我不认为存在任何解决方案。

首先,如果我没有理解您的请求——媒体播放器没有自己的磁盘,或者没有在这里使用它——媒体播放器希望通过 eSATA 呈现磁盘。eSATA 是一种块访问协议;要给它这样的块设备(磁盘,这里实际上不是磁盘),您需要在目标模式下运行 SATA HBA(“正常”端口以启动器模式运行)。这在 SAN 系统之外并不常见,它们往往是光纤通道或 SAS,而不是 SATA。这些支持目标模式的设置将(单个、大)文件映射到呈现给连接设备的 LUN。服务器不知道或不太关心该文件中的内容;客户端计算机必须先理解 LUN 上的分区表和文件系统,然后才能获取文件的实际内容。

接下来,媒体服务器可能希望它看到的“磁盘”具有 DOS 样式的分区表和一个带有 FAT(或可能是 NTFS)分区的单个分区。也许它也会接受 ext2/3——这取决于它自己运行的是什么。

另一方面,NFS 是一种文件协议。客户端请求文件并获取原始数据,而无需关心文件所在的文件系统。

为了实现此处的目标,您需要一个中间层,该中间层构建媒体播放器可以读取的某些文件系统布局的内部结构(最有可能的选择是非开放标准,这增加了复杂性),并使用从 NFS 文件中获取的数据来响应对这些块的请求。您可以枚举 NFS 挂载的内容来构建数据库,但对 NFS 共享的任何更改都需要重新合并到提供给媒体播放器的表示中。Linux 中有一些系统调用可以执行此操作,但它们不适用于 NFS 挂载。

因此,安全地执行此操作的方法是将 NFS 共享的内容复制到回送挂载的 FAT32 分区中,然后卸载该分区并将其作为 LUN 导出到媒体播放器。但是,这样做的缺点是需要将所有内容存储两次。

或者,简而言之:抱歉,这(几乎)是不可能的。

相关内容