Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lo spazio dei nomi System.IO.Log definisce un'interfaccia per la registrazione in un sistema di I/O sequenziale orientato ai record. Con l'utilizzo delle classi da questo spazio dei nomi, è possibile implementare il proprio sistema di registrazione diagnostica o di elaborazione delle transazioni. Lo spazio dei nomi fornisce inoltre un'implementazione di questa interfaccia che utilizza un semplice log basato su file e un'implementazione alternativa che utilizza CLFS (Common Log File System) fornito da ws2003r2 e Windows Vista.
Spazio dei nomi System.IO.Log
Lo spazio dei nomi System.IO.Log definisce un'interfaccia per la registrazione in un sistema di I/O sequenziale orientato ai record. Le implementazioni di questa interfaccia possono essere utilizzate per leggere e scrivere record di log. Quando i record di log vengono aggiunti a tale implementazione, a ogni record viene assegnato un numero sequenziale univoco. I numeri sequenziali sono imperativamente in ordine crescente all'interno di una determinata sequenza di record e i numeri provenienti da sequenze di record diverse non sono confrontabili. I numeri sequenziali sono rappresentati dalla struttura SequenceNumber. Inoltre, la sequenza di record fornisce un meccanismo per riservare spazio nell'archiviazione sottostante. È possibile sfruttare questo meccanismo di prenotazione in modo da essere certi che sia presente lo spazio necessario per i record di log successivi.
Due implementazioni diverse di questa interfaccia sono fornite dalle classi FileRecordSequence e LogRecordSequence. FileRecordSequence è una sequenza di record basata su un unico file di log nel file system.
La classe LogRecordSequence, al contrario, fornisce un'implementazione dell'interfaccia della sequenza di record all'inizio di un log Common Log File System (CLFS). Per ulteriori informazioni su questa implementazione, vedere la sezione "Astrazione di System.IO.Log".
CLFS
CLFS fornisce un servizio di log di file ad alte prestazioni e con finalità generiche, che può essere utilizzato dalle applicazioni client dedicate e condiviso da più client in modo da ottimizzare l'accesso al log.
Architettura del log
CLFS è un'utilità di gestione di log ARIES, in grado di salvare i record di log in ordine sequenziale e di assicurare che i record di log svuotati vengano mantenuti, anche dopo un errore di sistema. È possibile utilizzare CLFS per gestire i log e impostare i criteri dell'applicazione. CLFS utilizza le seguenti astrazioni per implementare la registrazione:
Un record è un'unità di dati scritta da un client.
Un log fisico è un insieme fisico di file e attributi che archivia uno o più flussi di log. Un flusso di log è una sequenza di record di log registrati da un client, uguale a un log fisico. Un log dedicato ha un unico flusso senza nome. Un log in multiplexing dispone di uno o più flussi con nome e consente la creazione successiva di più flussi. Un client in grado di effettuare la registrazione dispone di uno o più flussi di log in qualsiasi tipo di log. Tuttavia, non è possibile convertire un log creato da un tipo a un altro.
Un log in multiplexing rappresenta un contratto tra due applicazioni o sottosistemi che condividono lo stesso log. Ciascun flusso in un log in multiplexing risulta al proprietario client come se fosse archiviato in un log dedicato. Il vantaggio principale nell'utilizzo di un log in multiplexing è che i costi I/O del sistema sono condivisi tra più flussi, pertanto le prestazioni del sistema saranno migliori rispetto all'utilizzo di più log dedicati. I blocchi di record e di log nei log in multiplexing sono scritti generalmente nello stesso settore del disco, riducendo i tempi di ricerca e la latenza di I/O.
L'accesso al file di log può essere diretto su un disco locale o sui dischi su sistemi remoti tramite il supporto interno client-server. All'interno di un cluster, è possibile eseguire il failover dei file di log su un altro sistema utilizzando i meccanismi standard del sistema operativo. Tutte le scritture nel log vengono memorizzate nel buffer del client finché non è richiesto uno svuotamento o un nuovo buffer. Se possibile, i dati vengono scritti direttamente su disco dai buffer client senza eseguire la copia. Le letture vengono memorizzate nella cache in modo da ridurre l'accesso al disco durante le operazioni di recupero, di backup, o di picchi di interruzioni di transazione.
Il log fisico è effettivamente archiviato come un "file di log di base" (blf, base log file) contenente i metadati e il numero di file del contenitore (o di flussi all'interno di un file). È possibile definire la posizione di creazione del log e la creazione diretta dei contenitori del log. È necessario aggiungere almeno due contenitori affinché il log sia usabile. Tuttavia, i criteri del log possono essere impostati senza alcun contenitore.
Astrazione di System.IO.Log
La classe LogRecordSequence fornisce un'implementazione dell'interfaccia della sequenza di record all'inizio di un log Common Log File System (CLFS). Oltre alle funzionalità standard orientate al record, fornisce un modello di criterio che consente di evitare condizioni di log pieno e il multiplexing dei client sullo stesso file fisico. Questa classe viene utilizzata insieme alla classe LogStore che fornisce un'interfaccia per la modifica e la gestione diretta di un file di log CLFS. La relazione tra la classe LogStore e la classe LogRecordSequence è simile alla relazione tra un file del disco e un oggetto FileStream. Il file del disco fornisce l'archivio concreto e dispone di attributi quali la lunghezza e l'ora dell'ultimo accesso, mentre l'oggetto FileStream fornisce una visualizzazione del file che può essere utilizzata per operazioni di lettura o scrittura su di esso. Analogamente, la classe LogStore dispone di attributi quali un criterio e un insieme di extent del disco e la classe LogRecordSequence fornisce un meccanismo orientato ai record per la lettura e la scrittura di dati.
Diversamente dalla sequenza di record di file rappresentata dalla classe FileRecordSequence, un'istanza LogStore memorizza i relativi dati in un insieme di extent del disco, rappresentati da istanze LogExtent. Gli extent di una determinata istanza LogStore sono tutti della stessa dimensione e lo spazio viene aggiunto e rimosso da un'istanza LogStore per incrementi di extent.
I record del log effettivi sono rappresentati da istanze della classe LogRecord.
Criterio
A un'istanza LogStore possono essere associati criteri. Questi sono rappresentati da istanze LogPolicy. Un criterio specifica regole che il log tenterà di seguire, ad esempio il numero massimo di extent e la dimensione minima, nonché istruzioni sull'aumento o la riduzione dell'istanza LogStore in determinate condizioni. È inoltre possibile specificare se un'istanza LogStore può essere archiviabile o meno.
I criteri vengono impostati per ogni singolo log e sono volatili. Ciò significa che, dopo la chiusura dell'ultimo handle del log, il criterio non esiste più.
Protezione
Un log è protetto dall'ACL (Access Control List) NTFS standard. Si consiglia di non archiviare un log su un'unità FAT, poiché questa non fornisce alcuna protezione.
Vedere anche
Concetti
Sistema semplice di log di file
.gif)
Invia commenti su questo argomento a Microsoft.
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.