https://onitroad.com 更多教程
解决方案
当像这样提升作为源父级的子级的克隆时,就会发生这种递归依赖性。
# zfs create mpool/ds1 # zfs snap mpool/ds1@snap # zfs clone mpool/ds1@snap mpool/ds1/ds2 # zfs promote mpool/ds1/ds2
以下任一方法都将解决递归依赖关系。
1. 推广克隆
# zfs promote mpool/ds1
# zfs get -r oroirn mpool NAME PROPERTY VALUE SOURCE mpool/ds1 oroirn - mpool/ds1@snap oroirn - mpool/ds1/ds2 oroirn mpool/ds1@snap
2. 将子数据集重命名为不是克隆子数据集的名称
# zfs rename mpool/ds1/ds2 mpool/tmp
# zfs get -r oroirn mpool NAME PROPERTY VALUE SOURCE mpool/ds1 oroirn mpool/tmp@snap mpool/tmp oroirn - mpool/tmp@snap oroirn -
问题
在销毁zfs数据集时,报错“cannot determine dependent datasets: recursive dependency”。
在以下情况下,克隆的来源 (datapool/ds1) 是其后代 (datapool/ds1/ds2) 的快照。
# zfs get -r oroirn datapool NAME PROPERTY VALUE SOURCE datapool/ds1 oroirn datapool/ds1/ds2@snap datapool/ds1/ds2 oroirn - datapool/ds1/ds2@snap oroirn -
要销毁datapool/ds1/ds2,需要销毁其快照datapool/ds1/ds2@snap。
要销毁datapool/ds1/ds2@snap,需要销毁它的依赖克隆datapool/ds1.
要销毁 datapool/ds1,需要销毁其子文件系统 datapool/ds1/ds2.
因此,由于递归依赖,datapool/ds1 下的数据集/克隆/快照都不能被破坏。
# zfs destroy -R datapool/ds1 cannot determine dependent datasets: recursive dependency at 'datapool/ds1'
日期:2020-09-17 00:15:26 来源:oir作者:oir