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

问题

在销毁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