I filesystem di Windows e NTFS
Transcript
I filesystem di Windows e NTFS
Windows Internals Tour Windows File System Andrea Dell’Amico – Microsoft Student Partner [email protected] 21 Aprile 2012 – Roma 3 Sommario • • • • • • • • File Systems supportati da Windows NTFS Design Goals Architettura del File System Driver Operazioni NTFS Windows File System On-Disk Structure Compressione NTFS BitLocker One more thing… Windows File System - Terminology Settori: – Blocchi indirizzabili in hardware su un media di storage – La dimensione tipica è di 512 bytes in un sistema x86 Formato File System: – Definisce come i dati sono memorizzati nel media di storage – Impatta sulle caratteristiche: permessi e sicurezza, limitazioni, supporto dischi grandi dimensioni Clusters: – Blocchi indirizzabili che possono essere usati dal FS – La dimensione è sempre multipla di quella dei settori – Dimensione = tradeoff tra efficienza di spazio e tempo di accesso Metadata: – Sono informazioni di supporto alla gestione del FS – Contiene le informazioni per localizzare i file e directory in un volume – Tipicamente non accessibili alle applicazioni Formati supportati da Windows • CD-ROM File System (CDFS) • Universal Disk Format (UDF) • File Allocation Table (FAT12, FAT16, FAT32, exFAT) • New Technology File System (NTFS) NTFS NTFS è il file System Nativo di Windows NTFS usa indici a 64-bit per l’identificazione dei cluster – In teoria può indirizzare volumi fino a 16 exabytes (16 miliardi di GB) – Da Windows 2000 il limite è stato settato a 128 TB utilizzando cluster da 64-KB indirizzabili a 32-bit Perché usare NTFS al posto del Fat? FAT è semplice, rende alcune operazioni più veloci, ma NTFS supporta: – – – – File e HD di grandi dimensioni Migliori prestazioni in HD grandi, con grandi cartelle e piccoli file Affidabilità Sicurezza NTFS Design Goals Superare i limitazioni inerenti a FAT / HPFS – FAT (File Allocation Table) non supporta dischi di grandi dimensione – FAT16 (MS-DOS file system) supporta solo 216 clusters e dischi da 2 GB ( con clusters da 64 Kb) – FAT / root directory rappresentano un singolo punto di fallimento – Il numero di record nella root directory è limitato – HPFS ha rimosso alcune limitazioni del FAT, ma non supporta sicurezza, tecnologie di ripristino, ridondanza dei dati e faulttolerance (versioni successive di HPFS supportano fino a dischi da 2TeraByte) NTFS Recoverability Nel passato l’ottimizzazione dell’I/O dei PC era focalizzato sulla velocità NTFS ha cambiato questa visione – l’affidabilità è diventata la cosa più importante: Le operazioni di I/O che alterano la struttura di NTFS sono implementate con transazioni atomiche – Cambio della struttura delle directory, – Estendere file, allocare lo spazio per nuovi file Le transazioni devono essere completate o annullate NTFS memorizza in modo ridondante le informazioni vitali per l’FS – Al contrario in FAT e HPFS, c’è un singolo settore che contiene tutte le informazioni critiche – Un errore di lettura di questo settore causa la perdita del volume NTFS Security and Recoverability La sicurezza di NTFS deriva dal modello a oggetti di Windows L’apertura di un file è implementata come un oggetto, i descrittori di sicurezza sono memorizzanti come parte del file Il sistema di gestione della sicurezza di NT verifica i diritti di accesso quando un processo tenta di accedere ad un oggetto L‘amministratore e owner del file possono impostare le proprietà di sicurezza NTFS recoverability garantisce l’integrità della struttura del FS Non può garantire il completo ripristino dei file degli utenti Modello stratificato + FTDISK driver – Mirroring of data – RAID level 1 – Striping of data – RAID level 5 (un disco con informazioni di parità) Altre funzionalità di NTFS Multiple data streams Unicode-based names Hard links Junctions Compression and sparse files Change logging Per-user volume quotas Link tracking Encryption POSIX support Defragmentation Dischi e File Grandi FAT16: – Tabella a 16-bit memorizza la struttura del disco – Fino a 65.536 clusters per volume (#files !!); la dimensione dei cluster è modificabile FAT32: – – – – Introdotto con Windows 2000 4kb clusters per volumi fino a 8 GB Può riallocalre la root directory / mantenere una copia di backup della FAT La Root directory è una lista di cluster, non ci sono limiti al numero di entry HPFS (supporto rimosso in NT 4.0): – 32 bits per enumerare le unità di allocazione, 4 GB la dimensione massima dei file – Alloca lo spazio in settori fisici da 512 bytes (alcuni dischi con geometria a 1024 bit per settore non sono supportati) Dischi e File Grandi (cont.) NTFS indica i cluster con indici a 64-bit Fino a 264 clusters di 64 Kbytes di dimensione Dimensione massima dei file: 264 bytes Dimensione dei cluster modificabile – 512 bytes per dischi piccoli – Fino a 64Kb per dischi grandi NTFS Cluster Size La dimensione dei cluster dipende dalla dimensione del disco – – – – 512 bytes per dischi piccoli (up to 512 MB) 1 KB per dischi fino a 1 GB 2 KB per dischi tra 1 e 2 GB 4 KB per dischi più grandi di 2 GB Tradeoff: frammentazione del disco e spazio sprecato Multiple Data Streams In NTFS, ogni unità di informazione associata ad un file (il nome, il proprietario, i time stamp, il contenuto, etc) sono implementate come un file attribute (NTFS object attribute) Ogni attributo consiste in un singolo stream, che è una sequenza di bytes – Questa generica implementazione permette di aggiungere nuovi attributi ad un file Multiple Data Streams Un file NTFS ha uno stream di default che non ha nome – Una applicazione può creare nuovi stream, fornendone un nome e riferendosi a questi con il nome scelto – Al fine di non modificare le Microsoft Windows I/O API, che prendono come argomento un nome di file, i data stream aggiuntivi possono essere riferiti aggiungendo : al nome del file: es myfile:stream2 Unicode Names Il supporto Unicode è ereditato da Windows, è quindi possibile salvare file, directory e volumi con un set completo di caratteri Hard Links •Un Hard link consente di riferire path diversi allo stesso file o directory – Se si crea un hard link a C:\Users\Documents\Spec.doc che si riferisce al file C:\My Documents\Spec.doc, I due percorsi puntano allo stesso file fisico, una modifica dell’uno si riflette su entrambi Junctions •Le Junctions sono anche chiamati symbolic links, permettono di redirigere i file o le directory ad altre posizioni – Se il path è C:\Drivers è una junction che redirige a C:\Winnt\System32\Drivers, una applicazione che legge C:\Drivers\Ntfs.sys, avrebbe accesso a C:\Winnt\System\Drivers\Ntfs.sys – Può essere creata con il comando: mklink /J NomeJunction PercorsoDiDestinazione Junctions •Nei sistemi precedenti a Windows Vista, le junction possono essere create con il juction tool di Sysinternals o il tool linkd tool dal Resource Kits Change Logging Molte applicazioni, come le utility di backup necessitano di monitorare i cambiamenti dei volumi su cui operano C’è un quindi un modo per l’applicazione di “aspettare” la disponibilità di una directory ed essere notificata in caso di modifica Change Logging Con Windows 2000, NTFS include I change log, che tengono traccia degli eventi che avvengono nel FS, sono implementati come record metadata – Se il file supera la dimensione imposta, NTFS elimina I dati più vecchi – Le applicazioni devono usare le Win32 API per leggere gli eventi – Il log è condiviso e in genere abbastanza grande per tenere traccia di tutte le modifiche anche in caso di operazione con grandi I/O Per-User Volume Quotas Le NTFS Quota permettono di definire la quantità di spazio disco utilizzabile da ciascun utente. – Può essere configurato per registrare nell’Event Log il superamento della soglia di attenzione da parte di utente. – Se un utente supera il limite imposto, l’evento viene registrato e l’operazione di scrittura interrotta con un avviso di “disco pieno” Lo spazio occupato viene calcolato in base alla somma della dimensione logica dei file e directory che hanno l’utente come proprietario degli stessi. Link Tracking Numerosi tipi di link simbolici sono usati dalle applicazioni: – I collegamenti permettono agli utenti di collocare i file nel loro ambiente di lavoro (es desktop) indipendentemente dalla loro posizione nel file system – Object linking and embedding (OLE) permettono ai documenti di un’applicazione di essere nei documenti di un’altra In passato erano difficili da gestire – Se spostavi la sorgente il link si rompeva Ora Windows ha un servizio di link-tracking, TrkWks (gira dentro services.exe), che tagga le sorgenti con un unique object ID e le rialloca in caso di spostamenti Encryption L’implementazione della sicurezza di NTFS è applicabile a file e directory. Non è efficace in caso di violazione fisica della macchina: – Installazione parallela di altra copia di Windows – NTFSDOS – Boot Disk / Live / etc. Encrypting File System (EFS) – Come la compressione è trasparente all’utente – E’ implementata come attributo per file e directory – I file crittografati con EFS possono essere letti solo dall’account che possiede la chiave privata corrispondente. La chiave privata è rilasciata solo dopo l’autenticazione dell’utente stesso. – EFS è integrato al livello più basso di NTFS anche se è implementato come un file system filter. POSIX Support Il supporto POSIX richiede alcune caratteristiche specifiche implementate in NTFS: – Un descrittore di protezione per i gruppi – Nomi dei file case sensitive – Indicazioni di accesso e informazioni dettagliate sull’orario. Filenames POSIX: – Case-sensitive, trailing periods & spaces – NTFS namespace equivalente al POSIX space Namespaces Win32: – File name lunghi, con unicode – Punti multipli, spazi, punti iniziali POSIX subsystem MS-DOS: – Nomi da 8.3 caratteri, non case sensitive NTFS genera i nomi MS-DOS per i file Win32 automaticamente – Funzionano come alias NTFS – Memorizzati nella stessa directory; dir /x Win32 subsystem MS-DOS Win16 clients Deframmentazione •Frammentazione: un file si dice frammentato quando non è memorizzato in cluster contigui •La frammentazione è significativa solo nei dischi a piatti rotanti, nei nuovi supporti SSD (Solid State Disk) invece non esiste. Deframmentazione Anche se è comune opinione che NTFS non si frammenti, questo non è vero: – Le API della deframmentazione sono incluse fin da NT 4 – Windows 2000 ha introdotto un deframmentatore non schedulabile – In Windows XP è stata aggiunta una implementazione da linea di comando – In Windows 7 il defrag è automatico, disattivato di default se è presente un disco allo stato solido NTFS File System Driver Log file service Flush the log file Write the cache Cache manager Access the mapped file or flush the cache Virtual memory manager Log the transaction Read/write the file I/O manager NTFS driver Fault tolerant driver Load data from disk into memory Disk driver Read/write a mirrored or striped volume Read/write the disk Componenti di NTFS Cache Manager •System wide caching – Per NTFS e altri drivers di file systems – Includendo i driver di network file system (server and redirectors) •Cached files sono mappati nella memoria virtuale – L’interfaccia specializzata da Cache Manager NT manager della memoria virtuale – Il Memory manager ordina a NTFS di accedere ai driver del disco ed ottenere i file Log File Service – 2 copie dei transaction logs – I Transaction log sono scritti su disco prima che la cache in scrittura sia inviata al disco stesso – Cache manager esegue il flush dell’operazione corrente NTFS & File Objects Process Handle table File object Object manager data structures File object File control block Data attribute NTFS data structures App accesses files as NT objects by handles. Object Manager and security subsystem verify access rights Stream control blocks (used to manage the on-disk structure) Master file table Userdefined attribute NTFS database (on disk) NTFS On-Disk Structure I volumi corrispondono alle partizioni logiche dei dischi fissi E’ possibile creare volumi fault tollerant distribuiti su più dischi – Variano dalla SKU di Windows le modalità supportate I volumi consistono in una serie di file + lo spazio vuoto – FAT volume: alcune aree sono formattate in modo specifico per l’FS – NTFS volume: tutti i dati sono memorizzati come normali file NTFS fa riferimento internamente ai cluster – Cluster factor: #sectors/cluster; varia con la dimensione dl volume; (l’intero numero dei settori fisici è sempre potenza di 2) Logical Cluster Numbers (LCNs): – Si riferiscono alla locazione fisica dei cluster – LCN sono l’indice contiguo di tutti i cluster del volume Master File Table Tutti i dati memorizzati in un volume sono contenuti in un file MFT: Il cuore della struttura dei volumi NTFS – Implementata come un array di file records – Una riga per ogni file del volume (inclusa una riga per la MFT stessa) – Archivio dei Metadata con le informazioni sulla struttura del file system (file nascosti; $MFT; $Volume...) – Più di un MFT record per i file molto frammentati MFT MFT copy (partial) Log file Volume file NTFS metadata file Attribute def. table Root directory Bitmap file Boot file Bad cluster file ... User files and dirs. Operazioni NTFS Montare un volume 1. 2. NTFS controlla nei boot file per individuare l’indirizzo fisico della MFT ($MFT) Il secondo record della MFT punta ad una copia della MFT stessa ($MFTMirr) – Necessaria per trovare i metadati se la MFT è corrotta 3. 4. I record della MFT contengono la mappatura VCN a LCN NTFS ottine dalla MFT l’indirizzo dei metadati – NTFS apre questi file 5. 6. NTFS esegue le operazioni di ripristino Il file system è ora pronto e accessibile all’utente NTFS metadata •NTFS writes to log file ($LogFile) – Memorizza tutti i comandi che cambiano la struttura del volume •Root directory: – Quando NFTS cerca di aprire un file, parte sempre dalla root directory – Quando il file è trovato, ne memorizza il riferimento della MFT – Nelle seguenti operazioni di I/O è possibile accedere al record MFT direttamente •Bitmap file ($Bitmap): – memorizza lo stato di allocazione del volume (1 bit, 1 cluster) •Boot file ($Boot): – Contine il codice del bootstrap – E’ memorizzato in una specifica area del disco – Rappresentato come file -> file ops. possible (!) (non è editabile) NTFS metadata (contd.) Bad-cluster file ($BadClus) – Memorizza la locazione dei Bad-Cluster Volume file ($Volume) – Contiene: nome del volume, versione NTFS – Bit, che indica se il volume è corrotto Attribute Definition Table ($AttrDef) – Definisce quali sono gli attributi supportati dal volume – Indica cosa può essere indicizzato, recuperato, etc. LCN vs VCN NTFS si riferisce alle locazioni fisiche attraverso LCN Physical cluster = LCN * cluster-factor Virtual Cluster Numbers (VCNs): Memorizza i cluster che appartengono ad un file; mappato sul LCN LCNs non sono necessariamente fisicamente contigui File Records & File Reference Numbers Sequence number 63 File number 47 0 I file nei Volumi NFTS sono identificati dal file reference – File number == index in MFT – Sequence number – usato per i controlli di consistenza; incrementato ogni volta che il file è riusato File Records: – Un file è una collezione di coppie attributi/valori (uno di questi è il dato) – Altri attributi: filename, time stamp, security descriptor,... – Ogni attributo del file è memorizzato come uno stream di byte all’interno del file File Records (contd.) NTFS non legge e scrive file: – Legge e scrive attributi – Operazioni: create, delete, read (byte range), write (byte range) – Read/write lavorano su attributi senza nome Master File Table Windows optimization: Security descriptors are stored in a central file and referenced by each file record (saves disk space) Standard information Security Filename descriptor MFT record for a small file Data Attributi Standard dei file su NTFS Attribute Description Standard information File attributes: read-only, archive, etc; time stamps; creation/modification time; hard link count Filename Name in Unicode characters; multiple filename attributes possible (POSIX links!!); short names for access by MS-DOS and 16-bin Win applications Security descriptor Specifies who owns the file and who can access it data Contents of the file; a file has one default unnamed data attribute; directory has no default data attrib. Index root, index Three attributes used to implement filename allocation, bitmap index for large directories (dirs. only) Attribute list List of attributes that make up the file and first reference of the MFT record in which the attribute is located (for files which require multiple MFT file records) Attributi (contd.) Tutti gli attributi in un file record hanno un nome e un valore NTFS identifica gli attributi con: – Nomi maiuscoli che iniziano con $: $FILENAME, $DATA Attribute‘s value: Byte stream – Il nome del file per $FILENAME – I Bytes di dati per $DATA I nomi degli attributi corrispondo ad un typecode numerico Gli attributi dei file nel record MFT sono memorizzati nell’ordine dei typecode – Alcuni attributi possono comparire più di una volta (es. Nome del file) MS-DOS filenames in NTFS Standard info NTFS filename MS-DOS filename Security desc. Data MFT file record with MS-DOS filename attribute Il nome NTFS e il nome MS-DOS sono memorizzati nello stesso record e puntano allo stesso file – La rinominazione cambia entrambi i nomi – Apertura, lettura, scrittura, cancellazione lavorano con entrambi i nomi allo stesso modo. POSIX hardlinks sono implementati allo stesso modo – Cancellare un file con più nomi, decrementa solo il contatore dei link Generazione dei nomi MS-DOS: 1. Rimuove caratteri illegali, rimuove altri caratteri non alfanumerici ad eccezione dei punti, tronca a 6 caratteri. 2. Concatena ~1 al nome; tronca l’estensione a 3 caratteri, tutti maiuscoli 3. Inscrementa ~1 se trova duplicati nella stessa cartella Resident & Nonresident Attributes File Piccoli: – – – – Tutti gli attributi sono memorizzati nella MFT Gli attributi che risiedono nella MFT sono chiamati „resident“ Tutti gli attributi iniziano con un header (sempre contenuto nella MFT) L’Header include l’offset to attr. value e lunghezza del value Standard info NTFS filename Security desc. Data header „RESIDENT“ Offset: 8h Length: 14h value MYFILE.DAT Attributes (contd.) •Piccole Cartelle: – Index root contiene i riferimenti ai file e subdirectory Standard info NTFS filename Security desc. Index root Empty Index of files file1, file2, file3,... MFT file record for a small directory • Se l‘attributo non sta nella MFT: • • • • NTFS alloca un cluster separato (run, extent) per memorizzare il valore NFTS alloca altri run se l‘attributo cresce nel tempo Questi attributi sono chiamati „non-resident“ L‘Header degli attributi „non-resident“ contiene l‘informazione sulla loro locazione Large files & directories Standard info NTFS filename Security desc. Data HPFS extended attr. MFT record for large file with 2 data runs Solo gli attributi che possono crescere devono essere non-resident Il nome del file e le informazioni standard devono essere sempre resident Gli indici dei file per le directory formano dei B+ tree Standard info NTFS filename Security desc. Index root Index allocation Index of files file4, file8 MFT file record for a large directory with nonresident filename index file1, file2, file3 VCN-to-LCN mappings file5, file6 Bitmap Large files (contd.) NTFS keeps track of runs by means of VCN (Virtual Cluster Numbers) – Logical Cluster Numbers rappresentano l’intero volume – Virtual Cluster Numbers rappresentano i cluster che fan parte di un file – La lista degli attributi può estendersi tra più run (non solo i dati) Standard info NTFS filename Security desc. VCN-to-LCN mappings for a nonresident data attribute VCN 0 1 2 3 Data LCN 1355 1356 1357 1358 Data Startin g VCN Startin g LCN Number of clusters 0 1355 4 4 1588 4 VCN 4 5 6 7 Data LCN 1588 1589 1590 1591 Compressione NFTS supporta la compressione trasparente dei file – Se una cartella è indicata come compressa, tutti i file contenuti e le sub directory sono compresse – La compressione è a livello di cluster ed è applicata a 16 blocchi di ogni file – La compressione è attivabile dalla GUI del sistema operativo. Compression of sparse files NTFS azzera tutto il contenuto del file alla creazione Molti sparse files contengono una gran quantità di “zeri” – Questi occupano spazio – quelli inutili sono compressi. Standard info VCN 0 1 NTFS filename Security desc. 2 3 .... 15 Data LCN 1355 1356 1357 1358 .... VCN 32 33 34 35 ... 1370 Startin g VCN Startin g LCN Number of clusters 0 1355 16 32 1588 16 48 96 16 128 324 16 47 Data LCN 1588 1589 1590 1591 .... Data 1603 Certain ranges of VCNs have no disk allocation (16-31, 64-127) Compressing Nonsparse Data •NTFS divide i file non processati in unità di compressione da 16 cluster l’una. •Alcune sequenze non possono essere molto compresse – NTFS determina se è possibile comprimere di almeno un cluster ogni unità – Se i dati non possono essere compressi, alloca lo spazio e li scrive su disco – Se i dati possono essere compressi di almeno un cluster, NTFS alloca solo lo spazio necessario per la memorizzazione dell’informazione compressa •Quando sono scritti dati, NTFS si assicura che ogni run inizi sempre al limite del 16 cluster. – In lettura/scrittura si accede sempre all’intera unità di compressione – Lettura anticipata + decompressione asincrona migliorano le performance Data runs of a compressed file 15 VCN 0 Compressed data LCN 19 20 21 16 22 31 Compressed data 23 24 25 32 26 27 28 29 30 47 Noncompressed data Startin g VCN Startin g LCN No. of cluster s 0 19 4 16 23 8 32 97 16 48 113 10 97 98 99 48 100 101 102 103 104 105 106 107 108 109 110 111 112 63 Compressed data 113 114 115 116 117 118 119 120 121 122 MFT record for a compressed file VHD: Virtual Hard Disk E’ un file che riprende le caratteristiche di un HD fisico Le specifiche sono disponibili sotto Microsoft Open Specification Promise Supportato dalla maggior parte dei software di virtualizzazione Integrato in Windows 7 / 2008 R2 BitLocker e BitLocker to Go Introdotto in Windows Vista Sistema di crittografia per la protezione dell’intero volume Utilizza AES 128 o AES 256 (con o senza diffusione) Integrato con TPM BitLocker™ Drive Encryption Architecture PreOS Static OS All Boot Blobs unlocked Volume Blob of Target OS unlocked TPM Init BIOS MBR BootSector BootBlock BootManager OS Loader Start OS Disk Layout And Key Storage OS Volume • Encrypted OS • Encrypted Page File • Encrypted Temp Files • Encrypted Data • Encrypted Hibernation File Dove è l’Encryption Key? 1. SRK (Storage Root Key) dentro il TPM 2. SRK encrypts FVEK (Full Volume Encryption Key) protetta da TPM/PIN/USB Storage Device 3. FVEK memorizzata (encrypted da SRK) nel HD dentro l’OS Volume 3 OS Volume System 2 FVE K System Volume Contains: MBR, Boot manager, Boot Utilities (Unencrypted, small) 1 SRK Come superare BitLocker ™? 1. Trovare la macchina Target 2. Controllare che sia accesa o in Standby 3. Raffreddare la ram con uno spray criogenico… 4. Fare il dump della RAM con un USB boot disk 5. Trovare la chiave di BitLocker analizzando il dump… 6. Facile no? One more thing… ReFS: Resilient File System Disponibile in Windows Server 8 Solo per volumi dati (no boot) Integrità dei metadati con checksums ReFS: B+ tree on-disk structure DOMANDE, RICHIESTE, SUGGERIMENTI? GRAZIE A TUTTI PER L’ATTENZIONE! Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows Operating System Internals Curriculum Development Kit, developed by David A. Solomon and Mark E. Russinovich with Andreas Polze Microsoft has licensed these materials from David Solomon Expert Seminars, Inc. for distribution to academic organizations solely for use in academic environments (and not for commercial use) Microsoft, Windows Server 2003 R2, Windows Server 2008, Windows 7 and Window Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.