通过 UDS 套接字将具有不同文件系统的机器连接到通用文件系统

Connecting different machines with common file system via UDS sockets

提问人:Cyborg 提问时间:10/27/2023 更新时间:10/27/2023 访问量:24

问:

我正在尝试使用 UDS 套接字连接 2 个 EC2 实例并在 2 个实例之间共享一些数据。现在,众所周知,UDS 套接字不能用于在 2 台不同的机器(https://unix.stackexchange.com/a/422300)之间建立连接,因为它们使用本地文件系统

但是,我在两个实例上都挂载了一个通用的 EFS,因此它们基本上共享相同的 EFS 文件系统,其中创建套接字。但尽管如此,这种联系还是被拒绝了。

可能是什么原因,有什么方法可以启用这种形式的通信,我可以使用通用文件系统来运行通信套接字

C 套接字 UNIX 服务器 客户端

评论


答:

2赞 Steffen Ullrich 10/27/2023 #1

UNIX 域套接字在操作系统的同一实例中运行的不同套接字端点之间共享数据。文件系统中的“文件”只是一个标识符,以便同一系统上的套接字可以相互找到。数据交换本身不是使用文件系统完成的,而是使用操作系统内核中的结构完成的。

这意味着,在不同的操作系统实例之间拥有共享文件系统以与 UNIX 域套接字共享数据是不够的。两个套接字终结点必须位于同一操作系统实例中。

评论

0赞 Cyborg 10/27/2023
感谢您的见解!那么,是否有其他通信模式可以利用共享文件系统工作,但同时也允许 2 个独立主机之间的通信?
0赞 Steffen Ullrich 10/27/2023
@Cyborg:正如我所说,UDS 中共享文件系统的目的只是为了拥有一个通用标识符,而不是数据传输本身。如果你想实现类似的事情,但在多个主机之间,你可以在一台主机中创建一个TCP监听器,将监听器IP:port(也许还有一些身份验证信息)写入一个共享文件,然后等待另一个主机作为TCP客户端工作。