我正在尝试将 zvol 的更改从我的工作池 ( zdata
) 逐步发送到备份池 ( zbackup
),但是我正在努力抑制该refreservation
属性。
虽然我意识到此属性的目的是确保 zvol 有足够的空间,但我并不打算从备份池中安装它,所以我宁愿释放空间,特别是因为 zvol 大部分是空的并且可能还会保持一段时间。
然而,尽管我可以暂时地抑制设置,它似乎不断被重新创建,但我不完全确定为什么。
我用来发送增量更改的命令如下所示:
zfs send -pw -i @snapshot1 zdata/zvol@snapshot2 | zfs receive -dus -x reservation -x refreservation zbackup
基本上,在发送端,我必须-p
发送属性(因为我确实希望其他属性同步),-w
用于发送加密块,并-i
指定要从中增量发送的快照。
在接收端,我已经获得了-d
命名约定(删除池名称),-u
以防止安装任何东西,并-s
允许恢复中断的传输(使用恢复令牌),以及-x
删除我不想传输的属性(reservation
和refreservation
,虽然我认为实际上只需要后者)。
我的问题是删除属性似乎不起作用;第一次运行命令时,预留消失了(我有我期望的可用空间),然后下次运行命令时,预留又回来了。每次运行命令时,它似乎都会交替出现,而不是保持抑制状态。*
如果我zfs get refreservation zbackup/zvol
在预订返回时运行,我会收到如下响应:
zbackup/zvol refreservation 257G received
即使该物业应该不是根据-x
接收方的选项进行接收(或者如果接收了,则应将其忽略)。
none
我意识到我可以尝试将接收方的预留设置为本地属性,或者使用-o
选项设置refreservation=none
为选项zfs receive
,但我认为如果-x
表现正常,我不需要执行任何一项操作?那么在这种情况下我做错了什么,还是这可能是一个错误?
更新: *实际上,我看到的交替行为可能与另一个属性的更改有关(可能导致属性在每次第二次运行时重新发送给接收方)。但这并不是导致整体问题的原因(即使应该排除预订,但预订仍以某种方式被接收)。