使用主硬盘作为缓存?

Jon*_*han 4 server ssd networking hard-drive

有没有办法使用我的主硬盘(NVMe pci3 SSD)作为缓存?

用例是这样的:

当我从台式计算机向 Ubuntu 服务器 21.04 发送大文件时,我希望 Ubuntu 服务器首先将我要传输的文件转储到 NVMe 驱动器,然后转储到我的机械 3.5 硬盘驱动器之一的预期目的地。

原因?为了最大限度地利用两个设备之间的 10 Gbit 网络连接,并在升级时(面向未来)最大限度地利用 25 Gbit 网络连接。

这可能吗?

基本上它是这样的:

我已经从计算机 A 发送了一个 10 GB 的视频文件,我想将其传输到所在位置的服务器 PC,/somelocation/mechanicalHDD/videos我设想它在后台工作的方式是,我的服务器 PC 将首先从我的网络连接直接接收文件到我的服务器。主 NVMe SSD 驱动器 ( /home/cache),然后我的服务器从 传输/home/cache/somelocation/mechanicalHDD

我的主 PC 不必等到我的家庭服务器将其从 传输/home/cache/somelocation/mechanicalHDD。它只关心我是否已成功将其传输到我的服务器中的某个位置以实现快速传输速度。

Raf*_*ffa 5

ZFS允许您通过配置所谓的存储池来添加 SSD作为 HDD 的缓存设备(也需要在 ZFS 中) ...还有其他缓存解决方案。

话虽这么说,缓存实际上并不是您想要的,因为您的复制命令/程序仍然会等到文件完全写入目标目录,即缓存在提前结束复制过程方面的作用非常小。

为了达到您的要求:

我有一个来自计算机 A 的 10gb 视频文件,我想将其传输到位置 /somelocation/mechanicalHDD/videos 的服务器 PC,我设想它在后台工作的方式是我的服务器 PC 将首先从我的服务器接收文件。网络连接直接连接到我的主 nvme 驱动器 ( /home/cache),然后我的服务器从 /home/cache 传输到/somelocation/mechanicalHDD.

我的主 PC 不必等到我的家庭服务器将其从 /home/cache to /somelocation/mechanicalHDD. 它只关心我是否已 成功地将其传输到我的服务器中的某个位置以实现快速传输 速度。

我建议您直接将文件复制到服务器的 SSD 上,然后运行一个脚本来检查 SSD 上找到的所有内容并将其移动到 HDD 上...这更可靠文件首先会永久保存到 SSD 上)并且比使用 ZFS 之外您可能实现的任何缓存解决方法更快完成从桌面到服务器的复制过程比写入缓存到 HDD 更快)...该脚本将非常简单:

#!/bin/bash

source_d="/home/cache/" # Specify the source directory.
destination_d="/somelocation/mechanicalHDD/videos/" # Specify the destination directory.

inotifywait -m -q -e close_write "$source_d" |

  while read -r path action file; do
    echo mv -n -- "$path$file" "$destination_d$file" # "echo" is there for a dry-run(simulation) ... remove it to enable moving files
  done
Run Code Online (Sandbox Code Playgroud)