Sto cercando di creare copie di mucca di alcuni file / directory, ma dei vari modi che conosco sembrano tutti non ottimali.
Ad esempio, btrfs può, con l'uso di cp --reflink=auto
generare rapidamente copie di file mucca.
Cosa ho provato:
- Symlink: non va bene. File rinominato, collegamento interrotto.
- Hardlink: meglio, ma ancora non va bene. Le modifiche a un file cambieranno l'altro e non voglio necessariamente cambiare l'altro file.
- Crea un'istantanea del set di dati, quindi clona l'istantanea: può funzionare, ma non bene. Spesso non cerco una copia dell'intero set di dati o che le copie si comportino come un altro set di dati. Poi ci sono le relazioni genitore / figlio tra il clone / istantanea / originale, che a quanto ho capito sono difficili, se non impossibili da interrompere.
- Utilizzando
zfs send/receive
e abilitato il dedup, replicare il set di dati in un nuovo set di dati: questo evita le relazioni padre / figlio sull'uso di un clone, ma crea ancora inutilmente un altro set di dati e soffre ancora della lentezza implicita nei file che devono essere letti al 100% e i blocchi referenziati di nuovo invece che scritti. - Copia i file e lascia che il dedup faccia il suo lavoro: funziona, ma è lento perché i file devono essere letti al 100% e quindi fare nuovamente riferimento ai blocchi invece di scrivere.
La lentezza dell'invio / ricezione di zfs e la copia fisica o rsyncing sono ulteriormente esacerbate perché la maggior parte delle cose sono archiviate compresse e devono essere decompresse durante la lettura, quindi compresse prima che il dedup entri in azione per fare riferimento ai blocchi duplicati.
In tutte le mie ricerche, non sono stato in grado di trovare nulla di simile alla semplicità di --reflink in btrfs da remoto.
Quindi, c'è un modo per creare copie di mucche in ZFS? Oppure la copia "fisica" e il deduping fanno del suo lavoro l'unica vera opzione?