FREENAS:为什么 mv 命令在 RAIDZ1 卷中不能立即执行?

FREENAS:为什么 mv 命令在 RAIDZ1 卷中不能立即执行?

我目前正在“重组” RAIDZ1 卷内的文件结构。将目录从一个数据集移动到另一个数据集,这两个数据集都包含在同一卷上。

通过 SSH 进入机器并执行一个传统操作:

mv * 目的地

这难道不应该是即时的吗?我知道它分布在三个驱动器上,但与此同时,文件本身实际上不需要移动 - 我只是希望它调整这些文件的指针,并且基本上是即时的。但事实并非如此。我有大约 500G 的数据需要移动,它已经运行了大约半个小时。oO

为什么它不是即时的?

规格:CPU:Intel G3220
MB:Gigabyte GA-B85-HD3
内存:Kingston DDR3-1600 8GB
磁盘:3x2TB WD Green,RAIDZ1 卷

答案1

只是你从错误的层面思考问题。

如果您在单个 ZFS 数据集的范围内移动文件,它的反应将与您预期的类似。如果您在池的范围内移动文件,但在数据集之间移动,则这是真正的移动。是的,从技术上讲,数据只是从点 A 移动到点 B,并且两个点都在同一个盘片上 - 但从 ZFS 的角度来看,它移动了房屋。

ZFS 数据集是独立的文件系统。真正的文件系统。它们可以具有不同的块大小、压缩设置等。在两个 ZFS 文件系统之间移动文件,即使是在同一个池中,也是真正的移动 - 读取位然后再次写入,而不是仅仅更新指针。

从功能上讲,它大致类似于在两个 ext4 文件系统之间移动文件,这两个文件系统在技术上来自同一硬盘的两个分区 - 尽管共享底层硬件,但这两个文件系统在逻辑上是不同的,因此不会发生“指针”更改,它必须物理移动文件,即使它实际上只是将数据从同一底层驱动器上的一个位置复制到另一个位置。

相关内容