FREENAS:为什么 mv 命令在 RAIDZ1 卷中不是即时的?

Rya*_*yan 15 freebsd raid zfs freenas mv

我目前正在 RAIDZ1 卷中“重新组织”文件结构。将目录从一个数据集移动到另一个数据集,它们都包含在同一卷中。

SSH 进入机器并做了一个很好的老式:

mv * 目的地

这不应该是瞬间的吗?我知道它分布在三个驱动器上,但同时,文件本身并不真正需要移动 - 我只是希望它调整这些文件的指针,并且基本上是瞬时的。绝对不是。我有大约 500G 的数据要移动,它现在已经运行了大约半小时。oO

为什么不是近乎即时?

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

Nex*_*ex7 23

你从错误的层面思考事情,就是这样。

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

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

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