在设计我们的下一代机载激光雷达系统时,我们打算将数据存储在采用 NTFS 格式的存储驱动器上。这是我们上一代系统的工作方式。我们的系统运行 Linux(CentOS),但使用 NTFS 并没有给我们带来任何问题。它还允许我们的客户移除存储驱动器并将其直接连接到 Windows PC 进行处理。
当我们的系统收集数据时,它会被分割并写入多个 SATA 驱动器(一旦主板制造商跟上时代,我们确实计划转向可移动 NVME 驱动器)。在开发进行到三分之二时,我们遇到了一个巨大的问题。虽然将数据存储到 NTFS 对我们的上一代系统来说效果很好,但 CentOS 无法以足够快的速度写入 NTFS 以处理我们新系统增加的数据流。我们当时能想到的唯一解决方案是将存储驱动器重新格式化为原生 Linux 文件系统。我们选择了 ext4 并获得了我们需要的写入速度。
问题 1: 我们的客户现在在 ext4 驱动器上拥有几 TB 的数据,而处理软件在 Windows PC 上运行。
我们当前的解决方案: 我们让客户安装“Linux Reader”软件,以便他们从 ext4 驱动器复制数据。
我们尝试过的其他解决方案: 让客户使用 ext2fs 软件。此外,让他们将处理 PC 启动到 Ubuntu,传输数据,然后重新启动回 Windows。
问题2: 问题 1 的解决方案感觉不够专业。它们各自也存在一些问题。例如,Linux Reader 软件有时无法看到驱动器上的所有文件。
我还有一些其他想法,但还没有尝试过(比如在处理 PC 上的 VM 上运行 Ubuntu 来读取驱动器并复制数据)。当我们已经有了一个“有效”(大部分情况下)的解决方案时,很难再继续钻研下去了。只是当客户为专业设备支付如此大笔费用时,他们不应该为了处理自己的数据而使用劣质的“变通方法”。
这里有人对更好的解决方案有什么想法或建议吗?
编辑1: 我想澄清的是,我不是代表公司提出这个问题。他们目前对当前的解决方案很满意。我个人希望为客户提供更好的解决方案,因为我对目前的解决方案不满意。
答案1
如果你真的想使用原生 Windows 文件系统那么目前只有几个解决方案:
- NTFS:以前在 Linux 上FUSE ntfs3g 驱动程序被使用。它运行于用户空间所以它比内核空间。 新的模范核心司机刚刚合并进入Linux 5.15因此,以后的性能应该会很好。但由于 CentOS 总是使用老旧的内核,你可能需要放弃它,换一个更好的发行版,或者干脆避免使用 NTFS
- exFAT:它有一个伟大的核心自 Linux 5.7 起的驱动程序。但同样,您需要一个新的内核版本,而 CentOS 可能无法实现。有一些泄露 内核驱动程序在下面的评论中,有关于 exFAT 的讨论,也许值得一试。据称,兼容内核3.4. 只需使用它们手动修补你的内核
- 自定义函数:我不知道Linux UDF 驱动程序所以我无法提供这方面的建议。但是如果你确实想尝试一下,那么请注意,制作一个真正的通用 UDF 分区是比较棘手的。请参阅UDF 可以且应该用作硬盘格式吗?执行此操作的脚本
- 重新文件系统:不常用然而
所以在我看来具有出色 Windows 支持的 Linux 驱动程序应使用。目前Windows 上没有好的 ext4 驱动程序所以你应该使用文件系统或者虚拟文件系统相反。它们都比 ext4 更优秀,并且 Windows 驱动程序也更好:
- 对于 Btrfs 使用文件系统. 它非常可靠,是ReactOS,所以这可能就是 Btrfs 拥有出色的 Windows 支持的原因。你甚至可以从 Btrfs 启动 Windows
- 对于 ZFS 使用锌锌这是 Windows 端口OpenZFS. 我没有用过这个,但据我所知它不如 WinBtrfs 稳定
如果客户端使用 Windows 11 Build 22000 或更高版本,或者 Windows 10 的一些内部版本,那么你甚至可以在 wsl2 上挂载任何 Linux 文件系统
答案2
为什么不使用 exFAT?它很小,容量巨大,Linux 可以写入它,不存在用户权限问题,而且开销也减少了。
答案3
可能的解决方案 #3...
好吧,首先我们重新回顾一下一些细节:问题中提到的前两个解决方案:
#1:将硬盘移到处理电脑,然后在 Windows 中使用 extfs 读取软件
#2:将硬盘移至 Processing PC,然后使用 Ubuntu 读取数据(并可能将其写入 Windows,然后启动 Windows)
怎么样:
#3:将硬盘移至使用 Ubuntu 读取数据的专用文件服务器。它们共享数据:Windows 计算机可以检查数据(或由 Ubuntu 服务器的传出连接触发)并在数据可用时自动复制数据,或者 Ubuntu 服务器可以设置可从 Windows 计算机远程访问的网络文件共享。网络文件共享看起来像驱动器号,对于大多数与 Windows PC 交互的人来说感觉相当自然。