In the following examples, the cylinders represent datasets. (They do not represent pools or servers.)
This can work
Because in the “chain of replications”, there is only one source dataset that has snapshots explicitly created created. The other datasets (along the “chain”) only ever have snapshots “created” by receiving them from a replication. (No snapshots are explicitly created on the datasets themselves.)
flowchart LR
style ds0 fill:#CCFFCC,color:black
style ds1 fill:#CCFFCC,color:black
style ds2 fill:#CCFFCC,color:black
style us1 fill:white,color:black
style us2 fill:white,color:black
style us3 fill:white,color:black
ds0[(Main\nDataset)] -->|replication| ds1[(Backup\nOffice)] -->|replication| ds2[(Backup\nRemote)]
us1(user or\n system) -..->|create snapshots| ds0
us2(user or\n system) -..->|create snapshots| ds0
us3(user or\n system) -..->|create snapshots| ds0
linkStyle 0,1,2,3,4 stroke:green
This can also work
Because of the reasons explained above, and…
…even though there’s a “fork” in the chain of replication, these incoming snapshots all originate from the original source dataset. No datasets (other than the original source) have snapshots explicitly created on them.
flowchart LR
style ds0 fill:#CCFFCC,color:black
style ds1 fill:#CCFFCC,color:black
style ds2 fill:#CCFFCC,color:black
style ds3 fill:#CCFFCC,color:black
style ds4 fill:#CCFFCC,color:black
style us1 fill:white,color:black
style us2 fill:white,color:black
style us3 fill:white,color:black
ds0[(Main\nDataset)] -->|replication| ds1[(Backup\nOffice)] -->|replication| ds2[(Backup\nRemote)]
ds1 -->|replication| ds3[(Friend's\nHouse)]
ds0 -->|replication| ds4[(Backup\nIn-House)]
us1(user or\n system) -..->|create snapshots| ds0
us2(user or\n system) -..->|create snapshots| ds0
us3(user or\n system) -..->|create snapshots| ds0
linkStyle 0,1,2,3,4,5,6 stroke:green
This will NOT work
Because there is a dataset that tries to receive a replication from more than one source dataset. (It is the equivalent of receiving replications from elsewhere and writing new files on the dataset itself.)
flowchart LR
style ds0 fill:#CCFFCC,color:black
style ds1 fill:#CCFFCC,color:black
style ds2 fill:#FFCCCC,color:black
style ds3 fill:#CCFFCC,color:black
style ds4 fill:#CCFFCC,color:black
style ds5 fill:#CCFFFF,color:black
style us1 fill:white,color:black
style us2 fill:white,color:black
style us3 fill:white,color:black
style us4 fill:white,color:black
ds0[(Main\nDataset)] -->|replication| ds1[(Backup\nOffice)] -->|replication| ds2[(Backup\nRemote)]
ds1 -->|replication| ds3[(Friend's\nHouse)]
ds0 -->|replication| ds4[(Backup\nIn-House)]
ds5[(Other\nDataset)] -->|replication| ds2
us1(user or\n system) -..->|create snapshots| ds0
us2(user or\n system) -..->|create snapshots| ds0
us3(user or\n system) -..->|create snapshots| ds0
us4(user or\n system) -..->|create snapshots| ds5
linkStyle 1,4 stroke:red,stroke-width:6px
linkStyle 0,2,3,5,6,7,8 stroke:green
This will also NOT work
Because there is a dataset that receives from elsewhere and has its own snapshots explicitly created on itself.
flowchart LR
style ds0 fill:#CCFFCC,color:black
style ds1 fill:#FFCCCC,color:black
style ds2 fill:#CCFFCC,color:black
style us1 fill:white,color:black
style us2 fill:white,color:black
style us3 fill:white,color:black
style us4 fill:white,color:black
ds0[(Main\nDataset)] -->|replication| ds1[(Backup\nOffice)]
ds0 -->|replication| ds2[(Backup\nIn-House)]
us1(user or\n system) -..->|create snapshots| ds0
us2(user or\n system) -..->|create snapshots| ds0
us3(user or\n system) -..->|create snapshots| ds0
us4(user or\n system) -..->|write files and\ncreate snapshots| ds1
linkStyle 1,2,3,4 stroke:green
linkStyle 0,5 stroke:red,stroke-width:6px
*I’m still getting a feel for this “mermaid” plugin. It’s not as seamless as you think.
I don’t know why it needlessly “crops” the charts. It makes it more difficult to view.