NTFS How to

NTFS, acronimo di New Technology File System, è il file system per eccellenza dei sistemi Windows NT (fino ai 9x c’era l’obsoleto FAT32).

Oltre a funzionalità come il journaling e gli alternate data streams, ci sono anche altre caratteristiche meno note, vediamole.

Struttura fisica

MFT (Master File Table) è il segmento principale posto all’inizio di una partizione NTFS, è una sorta di banca dati (RDBMS) dove sono annotati i riferimenti ad attributi dei file, oltre ai relativi nomi, tutto è catalogato, vediamo.

  • $Bitmap – Tiene traccia di tutti i cluster utilizzati e non.
  • $Boot – Questo metadata punta al settore di boot
  • $MFT – L’MFT fisicamente
  • $MFTmirr – Copia dei primi 16 records MFT situati a metà del disco.
  • $Logfile – Supporto del journaling
  • $Volume – Queste sezioni contengono informazioni inerenti l’etichetta del disco ($volume_name) e sulla versione e stato ($volume_information).
  • $AttrDef  ($attribute_list) – Elenco degli attributi dei file nel volume
  • $. ($index_root)– Radice delle directory
  • $Secure – (solo NT5.x e superiori) – File dov’è registrato lo spazio massimo (quota appunto) utilizzabile per ogni utente 
  • $Upcase – File dov’è designata la tabella di conformità fra maiuscole e minuscole nel nome dei file sull’intero volume.

Internamente è diviso in segmenti da 1 KB ed è molto importante che in questa particolare zona i file siano contigui per avere prestazioni sempre al 100%; per fare questo basta utilizzare un defragger valido, ultimamente mi piace molto Ultradefrag.

Per manipolare la dimensione massima della MFT dovete aprire il registro di sistema (tasto Windows + R e digitare regedit) e andate alla voce:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem

Cercate NtfsMftZoneReservation, potete assegnargli un valore da 0 a 4 dove ogni valore incrementa del 12,5% la dimensione occupata dalla MFT.

  • 0 =  Valore di default su Seven (XP e precedenti hanno 1), difatti la mia MFT è di 144 MB su 30 GB, quindi decisamente meno dell’1%.
  • 1=  12.5%
  • 2= 25%
  • 3= 37.5%
  • 4= 50% (ottima per dischi capienti con molti file di dimensioni ridotte)

Da prompt:

fsutil behavior set mftzone 1

Gestione quote

Un importante comando per la gestione delle quote è fsutil: permette di abilitare o meno e cambiare le quote (porzioni di disco, ovvero quanto spazio assegnare) per ogni utente, ad esempio:

fsutil quota disable c:

In questo modo si disabilitano tutte le quote sul disco C:, oppure:

fsutil quota query c:

Richiede tutte le quote presenti nel disco C:.

Infine vi allego tutti i parametri possibili con quota.

  • disable – Disattiva la traccia e l’imposizione della quota
  • track – Abilita la traccia della quota
  • enforce – Abilita l’imposizione della quota
  • violations – Visualizza le violazioni della quota
  • modify – Imposta la quota del disco per un utente
  • query – Restituisce le quote del disco

Attributi

Gli attributi non sono altro che le singole autorizzazioni per files e directory, vediamo come interagire col comando attrib.

attrib +H d:\itl.pdf

Con + ho aggiunto un attributo, in questo caso hidden (nascosto) al file itl.pdf presente nel disco d:.

Per invertire:

attrib -H d:\itl.pdf

E l’attributo nascosto viene così rimosso.

L’elenco dei comandi possibili:

  • + Imposta un attributo.
  •  Cancella un attributo.
  • R  Attributo di file di sola lettura.
  • A Attributo di file di archivio.
  • S Attributo di file di sistema.
  • H Attributo di file nascosto.
  • I Attributo di file non indicizzato.
  • /S Elabora i file specificati presenti nella cartella corrente e  in tutte le sottocartelle.
  • /D Elabora anche le cartelle.
  • /L Opera sugli attributi del collegamento simbolico anziché sulla destinazione del collegamento simbolico
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
 [unità:][percorso][nomefile] [/S [/D] [/L]]

Indicizzazione

L’indicizzazione è una funzionalità di NTFS che permette di velocizzare le ricerche dei file ma, di contro, rallenta leggermente il disco visto il maggior lavoro a cui è sottoposto.

dism /online /disable-feature /featurename:Indexing-Service-Packa
ge

Dism l’abbiamo già conosciuto, difatti nell’articolo per la creazione di Windows to go è stato utilizzato per integrare dei driver; stavolta con il comando sopra esposto disabiliteremo l’indicizzazione.

I parametri possibili:

COMANDI DI MANUTENZIONE DELLE EDIZIONI DI WINDOWS:

  • /Set-ProductKey – Inserisce il codice “”Product Key”” nell’immagine offline.
  • /Get-TargetEditions – Visualizza un elenco di edizioni di Windows a cui può essere effettuato l’aggiornamento di un’immagine.
  • /Get-CurrentEdition – Visualizza le edizioni dell’immagine specificata.
  • /Set-Edition – Aggiorna l’immagine Windows a un’edizione superiore.

COMANDI DI MANUTENZIONE DELL’INSTALLAZIONE AUTOMATICA:

  • /Apply-Unattend – Applica un file di installazione automatica un’immagine.

COMANDI DI MANUTENZIONE DRIVER:

  • /Remove-Driver – Rimuove pacchetti driver da un’immagine offline.
  • /Add-Driver – Aggiunge pacchetti driver a un’immagine offline.
  • /Get-DriverInfo – Visualizza informazioni su un driver specifico in un’immagine offline o in un sistema operativo in esecuzione.
  • /Get-Drivers – Visualizza informazioni su tutti i driver in un’immagine offline o in un sistema operativo in esecuzione.

COMANDI PER LA MANUTEZIONE DELLE IMPOSTAZIONI INTERNAZIONALI:

  • /Set-LayeredDriver – Imposta il driver su più livelli della tastiera.
  • /Set-UILang – Imposta la lingua predefinita dell’interfaccia utente del sistema utilizzata nell’immagine offline montata.
  • /Set-UILangFallback – Imposta la lingua di fallback predefinita per l’interfaccia utente del sistema nell’immagine offline montata.
  • /Set-UserLocale – Imposta le impostazioni locali dell’utente nell’immagine offline montata.
  • /Set-SysLocale – Imposta la lingua (impostazioni locali del sistema) per i programmi non Unicode e le impostazioni dei caratteri nell’immagine offline montata.
  • /Set-InputLocale – Imposta le impostazioni locali dell’input e i layout di tastiera da utilizzare nell’immagine offline montata.
  • /Set-TimeZone – Imposta il fuso orario predefinito nell’immagine offline montata.
  • /Set-AllIntl – Imposta tutte le impostazioni internazionali nell’immagine offline montata.
  • /Set-SKUIntlDefaults – Imposta tutte le impostazioni internazionali sui valori predefiniti per la lingua dello SKU specificato nell’immagine offline montata.
  • /Gen-LangIni – Genera un nuovo file lang.ini.
  • /Set-SetupUILang – Definisce la lingua predefinita che verrà utilizzata dall’installazione.
  • /Get-Intl – Visualizza informazioni sulle impostazioni internazionali e le lingue.

COMANDI DI MANUTENZIONE APPLICAZIONI:

  • /Check-AppPatch – Visualizza informazioni se le patch MSP sono
  • applicabili all’immagine montata.
  • /Get-AppPatchInfo – Visualizza informazioni su tutte le patch MSP
  • installate.
  • /Get-AppPatches – Visualizza informazioni su tutte le patch MSP
  • applicate a tutte le applicazioni installate.
  • /Get-AppInfo – Visualizza informazioni su una specifica
  • applicazione MSI installata.
  • /Get-Apps – Visualizza informazioni su tutte le applicazioni
  • MSI installate.

COMANDI DI MANUTENZIONE PACCHETTI:

  • /Add-Package – Aggiunge pacchetti all’immagine.
  • /Remove-Package – Rimuove pacchetti dall’immagine.
  • /Enable-Feature – Attiva una specifica funzionalità nell’immagine.
  • /Disable-Feature Disattiva una specifica funzionalità nell’immagine.
  • /Get-Packages – Visualizza informazioni su tutti i pacchetti
  • inclusi nell’immagine.
  • /Get-PackageInfo – Visualizza informazioni su un pacchetto specifico.
  • /Get-Features – Visualizza informazioni su tutte le funzionalità
  • incluse in un pacchetto.
  • /Get-FeatureInfo – Visualizza informazioni su una funzionalità
  • specifica.
  • /Cleanup-Image – Esegue operazioni di pulizia e ripristino
  • sull’immagine.

Hard Link

Gli hard link, come suggerisce il nome, sono un collegamento ad un file ma sono diversi dai classici collegamenti (.ink) presenti ad esempio nel desktop, vediamo meglio.

In primis si presenta visivamente come una copia 1:1 del file, anche nelle proprietà mostra la dimensione reale del file linkato, non il solito KB del file .ink; altra particolarità: rispetto ad un classico collegamento se il file di destinazione viene spostato di percorso (leggi sotto) l’hard link non avrà nessun tipo di problema, continuerà a funzionare regolarmente.

Per crearne uno basterà digitare da prompt:

mklink /H nomehardlink.ext "percorso_file_da_linkare"

Esempio concreto:

mklink /H bormio.jpg "c:\dscn2852.jpg"

In questo caso ho creato un hard link ad un’immagine jpg presente nella root del mio disco C.

N.B Il file da linkare e l’HL devono essere nella medesima partizione in locale (no rete).

  • /D – Crea un collegamento simbolico a una directory. L’impostazione predefinita è il collegamento simbolico a un file.
  • /H – Crea un collegamento reale anziché un collegamento simbolico.
  • /J – Crea una giunzione di directory.

Compressione file

Un’altra interessante feature è la compressione integrata (algoritmo LZ77), la quale permette di comprimere ogni tipo di file (alla stessa stregua di UPX, ma questo comprime solo eseguibili e librerie) tranne, ovviamente, quelli già compressi nativamente, esempio mp3, jpg, mkv, etc.

Permette di risparmiare una buona porzione di spazio sul disco rigido mantenendo la stessa velocità di esecuzione.

Dal prompt eseguite compact.

compact /parametro:percorso

esempio concreto:

compact /c /s:d:

In questo modo compatta (/c) tutti i file di un percorso e relative sotto directory (/s), in questo caso tutto il disco D:.

  • /C – Comprime il file specificato. Le directory verranno marcate affinché i file aggiunti successivamente vengano compressi.
  • /U – Decomprime il file specificato. Le directory verranno marcate affinché i file aggiunti successivamente non vengano compressi.
  • /S – Esegue l’operazione specificata sui file nella directory data e in tutte le sue sottodirectory. La directory predefinita è quella corrente.
  • /A – Mostra i file con gli attributi nascosti o di sistema. L’impostazione predefinita prevede che questi file vengono omessi.
  • /I – Continua ad eseguire l’operazione specificata anche dopo che si sono verificati degli errori. L’impostazione predefinita prevede che COMPACT si arresti quando incontra un errore.
  • /F – Forza l’operazione di compressione su tutti i file specificati, anche quelli che sono già compressi. L’impostazione predefinita prevede che i file già compressi vengano ignorati.
  • /Q – Riporta solo le informazioni essenziali.

Criptazione

La criptazione integrata è comoda, anche se non utilizza un algoritmo fra i più sicuri (EFS) va senz’altro bene per tenere protetti e lontani da occhi indiscreti i nostri file: vediamo cipher.

cipher /e  d:\roma.mp4

/e stà per encrypt, in questo caso è un filmato sempre su D:.

La lista dei parametri è piuttosto ampia:

  • /B – Interrompe in caso di errore. Per impostazione predefinita, l’esecuzione di CIPHER continua anche in caso di errore.
  • /C – Visualizza informazioni sul file crittografato.
  • /D – Esegue la decrittografia delle directory o dei file specificati.
  • /E – Esegue la crittografia delle directory o dei file specificati. Le directory saranno contrassegnate in modo che i file aggiunti successivamente vengano crittografati. Un file crittografato potrebbe essere decrittografato quando viene modificato se la directory padre non è crittografata. È consigliabile crittografare il file e la directory padre.
  • /H – Visualizza i file con attributo Nascosto o Sistema. Tali file vengono omessi per impostazione predefinita.
  • /K – Crea un nuovo certificato e una nuova chiave da utilizzare con EFS. Se si specifica questa opzione, tutte le altre verranno ignorate.
  • /N – Questa opzione funziona solo con /U e impedisce l’aggiornamento delle chiavi. Consente di trovare tutti i file crittografati nelle unità locali.
  • /R – Genera una chiave e un certificato per il recupero EFS, quindi li scrive in un file con estensione PFX (contenente il certificato e la chiave privata) e in un file con estensione CER (contenente solo il certificato). Un amministratore può aggiungere il contenuto del file CER al criterio di recupero EFS, per creare la chiave di recupero per gli utenti, e importare il file PFX per recuperare i singoli file. Se si specifica l’opzione SMARTCARD, la chiave e il certificato di recupero verranno scritti su una smart card e verrà generato un file CER (contenente solo il certificato), ma non verrà generato alcun file PFX.
  • /S – Esegue l’operazione specificata sulla directory specificata e su tutti i file e le sottodirectory contenuti.
  • /U – Tenta di modificare tutti i file crittografati nelle unità locali. Se la chiave di crittografia file o le chiavi di recupero dell’utente sono state modificate, verranno aggiornate ai valori correnti. Questa opzione non può essere utilizzata insieme ad altre opzioni, ad eccezione di /N.
  • /W – Rimuove i dati presenti nello spazio su disco inutilizzato dell’intero volume. Se si specifica questa opzione, tutte le altre verranno ignorate. La directory specificata può trovarsi in qualsiasi punto del volume locale. Se si tratta di un punto di montaggio o punta a una directory in un altro volume, i dati in tale volume verranno rimossi.
  • /X – Esegue il backup del certificato e delle chiavi EFS nel file specificato da nomefile. Se si specifica il parametro fileEFS, verrà eseguito il backup dei certificati dell’utente corrente utilizzati per crittografare il file. In caso contrario verrà eseguito il backup del certificato e delle chiavi EFS correnti dell’utente.
  • /Y – Visualizza l’anteprima del certificato EFS corrente nel computer locale.
  • /ADDUSER – Aggiunge un utente ai file crittografati specificati. Se è specificato, il parametro CERTHASH verrà cercato un certificato con tale hash SHA1. Se si specifica il parametro CERTFILE, il certificato verrà estratto dal file. Se si specifica il parametro USER, il comando tenterà di individuare il certificato dell’utente in Servizi di dominio Active Directory.
  • /FLUSHCACHE – Scarica la cache delle chiavi EFS dell’utente chiamante nel server specificato. Se non si specifica il nome del server, verrà scaricata la cache delle chiavi dell’utente nel computer locale.
  • /REKEY – Aggiorna i file crittografati specificati in modo che utilizzino la chiave EFS corrente configurata.
  • /REMOVEUSER – Rimuove un utente dai file specificati. CERTHASH deve indicare l’hash SHA1 del certificato da rimuovere.

Dimensione dei cluster

La misura predefinita di un settore è di 4 KB, diciamo buona per un utilizzo general purpose, visto che nel disco abbiamo moltissimi files di ogni dimensione, da minuscoli a svariati GB, quindi un settore (cluster) grande (es. 64 KB) potrebbe andare meglio con file di notevole dimensione ma, di contro, sarà estremamente controproducente dove ci sono molti file minuscoli; anche se ognuno di questi fosse solo 1 KB lo spazio occupato sarebbe ben 64 KB, ovvero un cluster… e se sono migliaia la differenza è enorme.

Volendo fare i precisi, per trovare una dimensione ideale c’è un metodo: dividere lo spazio occupato su disco in KB con il numero totale dei file nel disco, per fare una media; il comando chkdsk ci darà facilmente le informazioni che stiamo cercando. Nonostante questo, resto sempre dell’idea che la dimensione predefinita sia la scelta migliore.

Premetto subito che con i tool nativi Microsoft non si può cambiare dimensione ai cluster di una partizione senza formattare; in questo caso meglio affidarsi a programmi esterni, tipo Acronis Disk Director.

format d: /V:Dati /Q /A:64K

Con questo comando viene formattato il disco D: assegnandogli l’etichetta “Dati” (/V:Dati), /Q sta per quick ovvero la formattazione veloce optando per cluster da 64 KB (/A:64K).

Incollo la lista dei parametri completa:

  • volume – Specifica la lettera di unità (seguita da due punti), il punto di montaggio o il nome del volume.
  • /FS:filesystem – Specifica il tipo di file system (FAT, FAT32, exFAT, NTFS o UDF).
  • /V:etichetta – Specifica l’etichetta di volume.
  • /Q – Esegue una formattazione rapida. Nota: questa opzione ha la precedenza su /P.
  • /C (Solo NTFS): L’impostazione predefinita prevede che i file creati sul nuovo volume siano compressi.
  • /X – Forza il volume a essere smontato per primo se necessario. Tutti gli handle del volume aperti non saranno più validi.
  • /R:revisione (Solo UDF): impone una versione UDF specifica per la formattazione (1.02, 1.50, 2.00, 2.01, 2.50). La revisione predefinita è 2.01.
  • /D (Solo UDF 2.50): i metadati verranno duplicati.
  • /A:dimensioni – Sostituisce le dimensioni unità di allocazione predefinite. Le impostazioni predefinite sono consigliate per l’utilizzo generale.
  • /F:dimensioni – Specifica le dimensioni del disco floppy da formattare (1,44)
  • /T:tracce – Specifica il numero di tracce per faccia del disco.
  • /N:settori – Specifica il numero di settori per traccia.
  • /P:passaggi – Numero di passaggi di azzeramento dei singoli settori del volume. Opzione non valida con /Q.
  • /S:stato – Dove “stato” può essere “enable” o “disable” . I nomi brevi sono abilitati per impostazione predefinita.

Controllo del disco

In caso di errori di sistema, BSOD e chiusure non convenzionali (es. calo di tensione (UPS docet!) il file system può contenere degli errori negli indici e nei descrittori, vediamo come rimediare (prompt da admin).

chkdsk /r c:

Il parametro /R è quello più completo, perchè oltre a cercare errori nel file system corregge anche i settori danneggiati.

Sono 5 passaggi in tutto contro i 3 di default; nel caso dell’esempio, visto che viene controllato C:, vi verrà richiesto un riavvio perchè il sistema e relativi file sono in uso.

ADS

Sui flussi alternativi ho scritto un articoletto circa 6 anni fa, che vi invito a leggere.

Journaling

Il journaling lavora come una sorta di diario, per semplificare il funzionamento lavora in 4 fasi:

• Fase 1: annotazione PREVENTIVA nel diario delle operazioni pendenti
• Fase 2: scrittura FISICA dei dati
• Fase 3: aggiornamento dell’indice
• Fase 4: cancellazione dal diario delle operazioni completate.

Ecco cosa succede se vi dovesse essere un blocco improvviso del sistema, dovuto a blackout, crash o altre cause:

  1. II blocco avviene durante la prima fase. Al riavvio, il Journal viene controllato per primo e, non essendo ancora stati scritti dati, viene cancellato qualsiasi riferimento ai files.
    Tutto torna a posto, ed è come se il comando di scrittura non fosse mai stato impartito. Il file è andato perduto, tuttavia ciò sarebbe avvenuto comunque. Si ha però un guadagno sul tempo impiegato per il ripristino, in questo caso di pochi secondi.
  2. II blocco si verifica durante la seconda fase. Al riavvio, si legge il Journal e si verifica cosa sia stato scritto e cosa no. Di conseguenza, si aggiorna l’indice dei file e si toglie il riferimento dal diario. Si perde ciò che non è ancora stato scritto, senza inutili attese, e recupera ciò che effettivamente era stato salvato.
  3. II blocco avviene nella terza fase. L’unica cosa che deve essere fatta è quella di leggere diario e aggiornare l’indice di conseguenza. Il file è interamente salvo e l’operazione richiede pochi secondi per essere completata
  4. II blocco avviene durante l’ultima fase. In questo marginale caso, il Journal viene cancellato; anche questa operazione richiede pochi secondi.

Nel primo caso si perdono i dati, nel secondo vi è una perdita parziale e negli ultimi due non si perde nulla: un bel passo in avanti rispetto alla perdita sicura nei file system FAT.

Tips finali

Qualche modifica per ottimizzare le prestazioni.

Come sempre, prima di ogni modifica importante al sistema, fate un backup completo.

Nei tips vi ho messo  due modalità di azione: una editando manualmente il registro e un’altra da riga di comando, scegliete quella che preferite. 😉

1) Nomi dei file eccessivamente lunghi (oltre 30 caratteri) e troppe sottodirectory (oltre 10) inficiano sulle performance.

Se avete molti file (intendo migliaia) in un’unica directory meglio suddivideteli in più sottocartelle stando attenti a non esagerare (vedi sopra).


2) Disabilitate LastAccessUpdate: aprite il registro (regedit) e andate su:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Cambiate il valore DWORD da 0 a 1 della voce NtfsDisableLastAccessUpdate. 

fsutil behavior set disablelastaccess 1

3) Disabilitate NtfsDisable8dot3NameCreation impostando il suo valore su 1. Si trova anch’esso su:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Da prompt:

fsutil behavior set disable8dot3 1

4) Il file di paging (la memoria virtuale) può essere disabilitato in caso di quantitativi di RAM elevati (≥ 4 GB) se non fate un utilizzo davvero spinto del PC (editing grafico avanzato, videomontaggio, etc).

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

Mettiamo il valore dword a 1 alla voce DisablePagingExecutive.

Da CLI (Riga di comando):

wmic pagefileset where name="d:\\pagefile.sys" set InitialSize=0,MaximumSize=0"

Ovviamente lo spostamento su D: è fittizio visto che sono assegnati valori zero (disabilitato).

4.1) Con meno di 4 GB consiglio di tenerlo, ma possibilmente di spostarlo in un altro disco in modo da non far gravare ulteriore lavoro al disco di sistema con conseguenti rallentamenti, quindi  nel nostro fido registro su:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

Fate doppio click su PagingFiles, impostate il percorso e la dimensione iniziale e massima in MB (consiglio 1,5 volte la RAM), esempio:

d:\pagefiles.sys 2048 3072

Quindi nel disco D: avrà una dimensione che oscillerà fra 2 GB e 3GB.

Da CLI:

wmic pagefileset where name="d:\\pagefile.sys" set InitialSize=2048,MaximumSize=3072"

5) Non tenete un’unica partizione nel disco di sistema, ma suddividetelo in più partizioni in modo da avere più ordine nei dati e performance migliori.


6) Disabilitate l’indicizzazione come spiegato nel capitolo sopra.


Anche se non arriva nemmeno lontanamente alle prestazioni di file system come ZFS o EXT4, NTFS è un file system da esplorare e permette di conoscere un pò più a fondo il nostro Windows NT.

Annunci

Pubblicato il 11 dicembre 2013, in Sistemi operativi, Tweaking, Windows con tag , , . Aggiungi il permalink ai segnalibri. Lascia un commento.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: