Clonazione dei blocchi su ReFS
Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016
La clonazione dei blocchi indica al file system di copiare un intervallo di byte di file per conto di un'applicazione in cui il file di destinazione può essere lo stesso oppure può essere diverso dal file di origine. Le operazioni di copia sono costose in quanto attivano letture e scritture impegnative sui dati fisici sottostanti.
La clonazione dei blocchi in ReFS, tuttavia, esegue le copie come un'operazione di metadati a basso costo invece che leggere e scrivere nei dati dei file. Poiché ReFS consente a più file di condividere gli stessi cluster logici (posizioni fisiche su un volume), le operazioni di copia devono solo rimappare un'area di un file in una posizione fisica separata, trasformando in questo modo un'operazione fisica costosa in una rapida operazione logica. Ciò consente di completare le copie in modo più rapido e di generare meno I/O nell'archiviazione sottostante. Questo miglioramento offre vantaggi anche ai carichi di lavoro della virtualizzazione in quanto, quando si utilizzano le operazioni di clonazione dei blocchi, le operazioni di unione del checkpoint .vhdx. vengono estremamente velocizzate. Inoltre, poiché più file possono condividere gli stessi cluster logici, i dati identici non vengono fisicamente archiviati più volte, migliorando la capacità di archiviazione.
Funzionamento
La clonazione dei blocchi su ReFS converte un'operazione dati dei file in un'operazione di metadati. Per effettuare questa ottimizzazione, ReFS introduce nei metadati i conteggi dei riferimenti per le aree copiate. Questo conteggio dei riferimenti registra il numero delle aree distinte del file che si riferiscono alle stesse aree fisiche. Ciò consente a più file di condividere gli stessi dati fisici:
Mantenendo un conteggio dei riferimenti per ogni cluster logico, ReFS non interrompe l'isolamento dei file: la scrittura nelle aree condivise attiva un meccanismo di allocazione in fase di scrittura dove ReFS alloca una nuova area per la scrittura. Questo meccanismo preserva l'integrità dei cluster logici condivisi.
Esempio
Si supponga ci siano due file, X e Y; ciascun file è formato da tre aree e ciascuna area è mappata su cluster logici separati.
Si supponga ora che un'applicazione avvii un'operazione di clonazione dei blocchi dal File X al File Y per copiare le aree A e B all'offset dell'area E. Lo stato del file system sarà il seguente:
Questo stato del file system indica una duplicazione corretta dell'area con i blocchi clonati. Poiché ReFS effettua questa operazione di copia aggiornando solo le mappature VCN su LCN, non sono stati letti dati fisici, né sovrascritti dati fisici nel File Y. I file X e Y ora condividono cluster logici, riflessi dai conteggi dei riferimenti nella tabella. Poiché non sono stati fisicamente copiati dati, ReFS riduce il consumo di capacità del volume.
Si supponga ora che l'applicazione tenti di sovrascrivere l'area A nel File X. ReFS duplicherà l'area condivisa, aggiornerà il conteggio dei riferimenti in modo appropriato ed eseguirà la scrittura nell'area duplicata. In questo modo viene mantenuto l'isolamento dei file.
Dopo la scrittura di modifica, l'area B è ancora condivisa da entrambi i file. Notare che se l'area A fosse stata più grande di un cluster, sarebbe stato duplicato solo il cluster modificato e la parte rimanente sarebbe rimasta condivisa.
Restrizioni e note sulle funzionalità
- L'area di origine e di destinazione deve iniziare e terminare al limite di un cluster.
- L'area clonata deve avere una lunghezza minore di 4 GB.
- Il numero massimo di aree file che possono essere mappate alla stessa area fisica è 8175.
- L'area di destinazione non può estendersi oltre la fine del file. Se l'applicazione vuole estendere la destinazione con i dati clonati, deve prima chiamare SetEndOfFile.
- Se le aree di origine e di destinazione si trovano nello stesso file, non si devono sovrapporre. (L'applicazione può continuare dividendo l'operazione di clonazione dei blocchi in più clonazioni dei blocchi che non si sovrappongono).
- I file di origine e di destinazione devono essere nello stesso volume ReFS.
- I file di origine e di destinazione devono avere la stessa impostazione Flussi di integrità.
- Se il file di origine è un file sparse, anche il file di destinazione deve essere sparse.
- L'operazione di clonazione dei blocchi interromperà i blocchi opportunistici condivisi (noti anche come Blocchi opportunistici di Livello 2).
- Il volume ReFS deve essere stato formattato con Windows Server 2016 e, se è in uso il Clustering di failover, il Livello di funzionalità del clustering al momento della formattazione doveva essere Windows Server 2016 o versioni successive.