Come verificare che una copia del file sia reflink / CoW?


8

Sto giocando con btrfs, che permette cp --reflinkdi copiare e scrivere. Anche altri programmi, come ad esempio lxc-clone, possono utilizzare questa funzione. La mia domanda è: come capire se un file è un CoW di un altro? Come per il collegamento fisico, posso dirlo dal numero dell'inode.

Risposte:


5

Buona domanda. Sembra che al momento non ci siano facili modi di alto livello per dirlo.

Un problema è che un file può condividere solo una parte dei dati tramite Copia su scrittura. Questo è chiamato estensione fisica e alcune o tutte le estensioni fisiche possono essere condivise tra i file CoW.

Non c'è nulla di analogo a un inodeche, se confrontato tra i file, ti direbbe che i file condividono le stesse estensioni fisiche. (Modifica: vedi la mia altra risposta ).

La risposta di basso livello è che puoi chiedere al kernel quali estensioni fisiche sono usate per il file usando il , che è documentato in . In linea di principio, se tutte le estensioni fisiche sono uguali, il file deve condividere lo stesso archivio sottostante.FS_IOC_FIEMAP ioctlDocumentation/filesystems/fiemap.txt

Poche cose implementano un modo per guardare queste informazioni a un livello superiore. Ho trovato un po 'di codice qui . Apparentemente l' filefragutilità dovrebbe mostrare le estensioni con -v. Inoltre, btrfs-debug-treemostra queste informazioni.

Vorrei prestare attenzione, tuttavia, poiché queste cose potrebbero essere state poco utilizzate in natura per questo scopo, potresti trovare bug che ti danno risposte sbagliate, quindi fai attenzione a fare affidamento su questi dati per decidere operazioni che potrebbero causare il danneggiamento dei dati.

Alcune domande correlate:


Bella risposta! Come useresti btrfs-debug-treeper elencare le estensioni su un determinato nome file?
Tom Hale,

4

Oltre alla mia precedente risposta , ho appena rilasciato un programma fienodeche calcola un hash SHA1 delle estensioni fisiche del file e può essere usato per trovare copie (identiche) di reflink. Attenzione però, ci sono avvertimenti (consultare la documentazione ). BTRFS ha deciso di modificare alcune, ma non tutte, le dimensioni fisiche di una copia di rifacimento che ho fatto senza provocazione o preavviso, causando il cambiamento del valore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.