Flussi di integrità di ReFS
I flussi di integrità sono una funzionalità facoltativa in ReFS che convalida e mantiene l'integrità dei dati usando i checksum. Sebbene ReFS usi sempre i checksum per i metadati, per impostazione predefinita non genera o convalida i checksum per i dati dei file. I flussi di integrità sono una funzionalità facoltativa che consente agli utenti di utilizzare i checksum per i dati dei file. Quando i flussi di integrità sono abilitati, ReFS può determinare chiaramente se i dati sono validi o danneggiati. Inoltre, ReFS e Spazi di archiviazione possono correggere congiuntamente metadati e dati danneggiati in modo automatico.
Funzionamento
I flussi di integrità possono essere abilitati per singoli file, directory o per l'intero volume e le impostazioni del flusso di integrità possono essere attivate in qualsiasi momento. Inoltre, le impostazioni del flusso di integrità per file e directory vengono ereditate dalle directory padre.
Una volta abilitati i flussi di integrità, ReFS creerà e manterrà un checksum per i file specificati nei metadati di quel file. Tale checksum consente a ReFS di convalidare l'integrità dei dati prima di accedervi. Prima di restituire tutti i dati con flussi di integrità abilitati, ReFS calcolerà innanzitutto il checksum:
Quindi, tale checksum viene confrontato con il checksum contenuto nei metadati del file. Se i checksum corrispondono, i dati vengono contrassegnati come validi e restituiti all'utente. Se i checksum non corrispondono, i dati sono danneggiati. La resilienza del volume determina il modo in cui ReFS risponde ai danneggiamenti:
- Se ReFS è montato in uno spazio semplice non resiliente o in un'unità nuda, restituirà un errore all'utente senza restituire i dati danneggiati.
- Se ReFS è montato in un mirror resiliente o in uno spazio di parità, tenterà di correggere il danneggiamento.
- Se il tentativo ha esito positivo, ReFS applicherà una scrittura correttiva per ripristinare l'integrità dei dati e restituirà i dati validi all'applicazione. L'applicazione non è a conoscenza di alcun danneggiamento.
- Se il tentativo non riesce, ReFS restituirà un errore.
ReFS registrerà tutti i danneggiamenti nel registro eventi di sistema, che indicherà se i danneggiamenti sono stati risolti o meno.
Prestazioni
Sebbene i flussi di integrità offrano una maggiore integrità dei dati per il sistema, essi comportano anche un costo in termini di prestazioni. Tale situazione può essere spiegata da un paio di motivi diversi:
- Se i flussi di integrità sono abilitati, tutte le operazioni di scrittura diventano operazioni di allocazione in scrittura. Sebbene in questo modo si evitino i colli di bottiglia di lettura-modifica-scrittura, poiché ReFS non ha bisogno di leggere o modificare i dati esistenti, i dati dei file diventano spesso frammentati, con conseguenti ritardi nella lettura.
- A seconda del carico di lavoro e dell'archiviazione sottostante del sistema, il costo computazionale del calcolo e della convalida del checksum può causare un aumento della latenza di I/O.
Poiché i flussi di integrità comportano un costo in termini di prestazioni, è consigliabile lasciare disabilitati i flussi di integrità nei sistemi sensibili alle prestazioni.
Scrubber di integrità
Come descritto in precedenza, ReFS convaliderà automaticamente l'integrità dei dati prima di accedere a qualsiasi dato. ReFS usa anche uno scrubber in background, che gli consente di convalidare i dati a cui si accede raramente. Lo scrubber esegue periodicamente una scansione del volume, identifica i danneggiamenti latenti e attiva in modo proattivo la riparazione dei dati danneggiati.
Nota
Lo scrubber dell'integrità dei dati può convalidare solo i dati dei file per i quali i flussi di integrità sono abilitati.
Per impostazione predefinita, lo scrubber viene eseguito ogni quattro settimane, anche se questo intervallo può essere configurato all'interno dell'Utilità di pianificazione in Microsoft\Windows\Data Integrity Scan.
Esempi
Per monitorare e modificare le impostazioni di integrità dei dati dei file, ReFS usa i cmdlet Get-FileIntegrity e Set-FileIntegrity.
Get-FileIntegrity
Per verificare se i flussi di integrità sono abilitati per i dati dei file, usare il cmdlet Get-FileIntegrity.
PS C:\> Get-FileIntegrity -FileName 'C:\Docs\TextDocument.txt'
È anche possibile usare il cmdlet Get-Item per ottenere le impostazioni del flusso di integrità per tutti i file in una directory specificata.
PS C:\> Get-Item -Path 'C:\Docs\*' | Get-FileIntegrity
Set-FileIntegrity
Per abilitare/disabilitare i flussi di integrità per i dati dei file, usare il cmdlet Set-FileIntegrity.
PS C:\> Set-FileIntegrity -FileName 'H:\Docs\TextDocument.txt' -Enable $True
È anche possibile usare il cmdlet Get-Item per definire le impostazioni del flusso di integrità per tutti i file in una cartella specificata.
PS C:\> Get-Item -Path 'H\Docs\*' | Set-FileIntegrity -Enable $True
Il cmdlet Set-FileIntegrity può essere usato anche nei volumi e nelle directory direttamente.
PS C:\> Set-FileIntegrity H:\ -Enable $True
PS C:\> Set-FileIntegrity H:\Docs -Enable $True