我正在设置两台 Linux 服务器。
ServerA 有/apps/data。
ServerB 已安装在/data
ServerAs 路径上,/apps/data
带有NFS
.
如何处理各种操作的负载?含义:
问:
例如,通过在 ServerB 上启动 gzip(可以是 cp 作为第二个示例),I/O 由 ServerA 或 ServerB 处理
磁盘的性能如何?意思是 ServerB 将文件获取到磁盘以执行 gzip,然后将其放回 NFS 并通过网络同步? (两台服务器IO增加+网络流量)
答案1
您有一个通过 NFS 共享ServerA
并由 挂载的目录ServerB
。
如果您在 上的该目录中执行文件操作ServerB
,则 上不会发生磁盘 I/O ServerB
,但服务器之间会有网络 I/O,并且ServerA
最终将执行实际的磁盘操作(通过 NFS 守护程序的指令) 。
您正在访问的文件不会像与rsync
或同步那样在服务器之间传输scp
,但文件的块将通过 NFS 传输并直接传递给读取数据的进程(在读取数据时),或者传递给服务器进行写入根据需要写入磁盘。这是使用 NFS 协议发生的,如RFC 1094(NFSv2) 或RFC 1813(NFSv3)。
再次,将会有不上的磁盘操作ServerB
,除非它需要交换或者您正在执行的操作在非 NFS 安装目录中分配空间(例如/tmp
)。
事实上,ServerB
如果没有任何物理磁盘已连接。这被称为“无盘系统”在 90 年代初我第一次接触 Unix 的计算机实验室中曾经很流行(Sun SPARCstation IPC有一个本地的/tmp
,但其他所有东西都通过 NFS 安装)。
由于网络 I/O,通过 NFS 工作会比在本地磁盘上工作慢,但对于日常命令行工作来说,这几乎没有什么关系,除非您经常处理大量文件数据。