Devo deframmentare il disco rigido in esecuzione su una macchina virtuale?


18

So che non ha senso (in effetti è una cattiva idea) eseguire Defrag su un SSD. Che dire di una macchina virtuale in esecuzione su un SSD, devo deframmentare il suo disco rigido in quanto accede sostanzialmente al disco rigido allo stesso modo?


Non ho idea del perché questo sia su SO, ma potrebbe essere rilevante: stackoverflow.com/questions/281527/…
Der Hochstapler

VSS può causare la crescita dell'archiviazione se non si utilizza un deframmentatore compatibile con VSS.

Solo se l'opzione di deframmentazione fa parte del software di virtualizzazione.
qasdfdsaq,

Risposte:


14

Devo deframmentare i miei dischi rigidi virtuali ma per motivi di spazio, non di tempo:

Uso l'opzione allocata dinamicamente per i dischi rigidi virtuali, quindi iniziano in piccolo e si espandono secondo necessità. Ma quando il disco rigido virtuale (non necessariamente i file) viene frammentato, si espande per includere tutti i blocchi allocati. Deframmentare il disco rigido virtuale è il primo passo per compattarlo nuovamente.


Il fattore spazio potrebbe essere rilevante perché la VM si trova su un SSD, sebbene in generale la deframmentazione di qualsiasi cosa su un SSD non sia necessaria per motivi di prestazioni ed è scoraggiata.
Bigbio2002,

3

Non è necessario deframmentare un SSD. Un disco rigido normale deve girare per trovare (le parti di) file. Un SSD è paragonabile alla RAM, tutti i file possono essere raggiunti con lo stesso ritardo.

Wikipedia afferma che "Le prestazioni di lettura non cambiano in base alla posizione in cui sono archiviati i dati su un SSD"


Fornisci un link all'articolo Wikipedia .
wizlog,

1
@wizlog Voila;)
Simon Verbeke,

2

Questa è solo la mia opinione, non ho i risultati dei test per eseguirne il backup. Ecco una approssimazione approssimativa di come probabilmente le cose accadono:

Sistema operativo reale:

  1. L'applicazione richiede i dati X (veloce)
  2. Il sistema operativo chiede al driver del disco i dati X (veloce)
  3. Il disco fisico recupera i dati X e li restituisce al sistema operativo ( lento se frammentato )

Ecco la catena equivalente di comando in una macchina virtuale:

  1. L'applicazione VM richiede i dati X (veloce)
  2. Il sistema operativo VM richiede i dati X (veloce)
  3. L'host di macchine virtuali richiede al sistema operativo reale di archiviare i dati X nel file del disco virtuale (velocemente)
  4. Il sistema operativo reale chiede al driver del disco di ottenere i dati X (velocemente)
  5. Il disco fisico recupera i dati X e li restituisce al sistema operativo ( lento se frammentato ).

Come puoi vedere, in entrambi i casi la frammentazione diventa davvero un problema solo nella fase dell'operazione in cui il disco rigido fisico tenta di leggere i dati e ciò accade nel sistema operativo reale, al di fuori del contesto della VM. Prima di ciò, tutto probabilmente accade nella memoria.

In conclusione, poiché sappiamo che gli SSD non soffrono di frammentazione nel sistema operativo reale e che il problema della frammentazione in una VM probabilmente si verifica solo nell'ultima fase fisica dell'operazione, immagino che la deframmentazione del tuo sistema operativo virtuale o del il file del disco virtuale nel sistema operativo principale non migliorerebbe le prestazioni su un SSD, pur essendo dannoso / inutile quanto lo è la deframmentazione del sistema operativo reale.

Modifica: E se questo è corretto, è una dannata buona ragione per mettere una VM su un SSD! Su un HDD, la frammentazione in qualsiasi fase (sistema operativo guest, file del disco virtuale, sistema operativo reale) interromperà la linearità e causerà la frammentazione nel passaggio del disco fisico.


2

Indipendentemente dal fatto che la tua macchina virtuale acceda ai dati archiviati sul tradizionale HDD magnetico o SSD elettronico, i file NTFS di Windows e la frammentazione dello spazio libero rallentano la velocità di accesso delle applicazioni che richiedono dati. La frammentazione del file NTFS e dello spazio libero avviene molto più frequentemente di quanto si possa immaginare. Ha il potenziale per accadere non appena si installa il sistema operativo. Può succedere quando si installano applicazioni o aggiornamenti di sistema, si accede a Internet, si scaricano e si salvano foto, si creano e-mail, documenti di ufficio, ecc ... È un evento e un comportamento normali del sistema informatico, ma ha un effetto negativo su tutte le prestazioni dell'applicazione e del sistema. Quando si verifica la frammentazione, il sistema informatico e l'archiviazione sottostante eseguono più lavoro del necessario. Ogni richiesta I / O richiede un tempo misurabile. Anche negli ambienti SSD non esiste una richiesta I / O "istantanea". Ogni volta che un'applicazione richiede di leggere o scrivere dati e tale richiesta viene suddivisa in richieste di I / O aggiuntive, viene eseguito più lavoro. Questo lavoro extra provoca un ritardo proprio in quel momento.

Le unità disco sono diventate più veloci nel corso degli anni, ma anche le CPU. In effetti, il divario tra la differenza di velocità tra hard disk e CPU si è effettivamente ampliato. Ciò significa che le applicazioni possono ottenere molti cicli della CPU, ma stanno ancora morendo di fame per ottenere i dati dalla memoria. Inoltre, la quantità di dati archiviati è aumentata notevolmente. Basti pensare a tutte quelle foto digitali scattate e condivise durante le vacanze. Ogni foto ha una dimensione di circa 1 MB, ora superano i 15 MB per foto e alcuni vanno ben oltre. Anche l'editing, il rendering e l'archiviazione di filmati digitali sono diventati molto popolari e, di conseguenza, le applicazioni stanno manipolando centinaia di Gigabyte di dati. Con dimensioni tipiche dei cluster di dischi di 4k, un file di dimensioni di 15 MB potrebbe essere potenzialmente frammentato in quasi 4.000 estensioni. Questo significa un extra 4, Per leggere o scrivere il file sono necessarie 000 richieste di I / O su disco. Indipendentemente dal tipo di archiviazione, ci vorrà semplicemente più tempo per completare l'operazione.

Il posizionamento fisico dei dati su un SSD non ha molta importanza come sui normali HDD magnetici. Con un SSD non c'è latenza di rotazione o tempo di ricerca. Molti esperti ritengono che la frammentazione non sia più un problema, ma la velocità di accesso ai dati dell'applicazione non è solo definita in questi termini. Ogni richiesta I / O eseguita richiede un tempo misurabile. Gli SSD sono veloci, ma non sono istantanei. Il file system di Windows NTFS non si comporta in modo diverso perché l'archiviazione sottostante è un SSD vs. HDD e pertanto si verifica ancora la frammentazione. Ridurre gli I / O non necessari impedendo e sradicando la frammentazione riduce il numero di richieste I / O e, di conseguenza, accelera i tempi di risposta dei dati delle applicazioni e migliora la durata complessiva dell'SSD. In sostanza,

Inoltre, gli SSD richiedono che i vecchi dati vengano cancellati prima che nuovi dati vengano scritti su di essi, piuttosto che semplicemente scrivere sulle vecchie informazioni come con gli HDD. Ciò raddoppia l'usura e può causare gravi problemi con le prestazioni di velocità e la durata dell'SSD. La maggior parte dei produttori di SSD ha tecnologie di livellamento dell'usura molto sofisticate per aiutarlo. Il problema principale è il degrado della velocità di scrittura a causa della frammentazione dello spazio libero. Piccoli spazi liberi sparsi sull'SSD fanno sì che il file system NTFS scriva un file in frammenti in quei piccoli spazi liberi disponibili. Ciò ha l'effetto di causare un traffico I / O casuale più lento rispetto alle operazioni sequenziali.

Ho risultati di benchmark per sostenere questo. Se lo desideri, pubblica un commento, richiedendo questi risultati e sarei felice di condividerli con te.


Howard Butler, sei nuovo su questo sito, benvenuto. In generale, è sconsigliato di pubblicare informazioni personali su Internet.
wizlog,

@wizlog Non c'è niente di sbagliato nel pubblicare informazioni personali su Internet se le informazioni sono tue. Tuttavia, ai fini di StackExchange, la pubblicazione delle informazioni di contatto o della "firma" in una risposta è ridondante. Gli utenti possono fare clic sul tuo profilo per ulteriori informazioni se lo desiderano.
iglvzx,

@iglvzx Stavo solo componendo un commento che suggerirebbe essenzialmente la stessa cosa ... Come raccomandato da questa risposta.
wizlog,

2

Per quanto riguarda la domanda originale di una tradizionale deframmentazione di un SSD, sono d'accordo che sia una cattiva idea, ma ci sono soluzioni specifiche disponibili che affrontano le preoccupazioni relative al movimento dei file e alla durata della vita dell'SSD.

Una macchina virtuale che esegue Windows come sistema operativo, si verificherà comunque la frammentazione e l'effetto combinato del traffico I / O aggiuntivo ridurrà la velocità e l'efficienza non solo dei sistemi guest, ma anche dell'host. Sia Microsoft che VMware raccomandano la necessità di affrontare la frammentazione a livello di guest.

Ecco perché…

  1. L'applicazione richiede i dati X

  2. La richiesta viene elaborata da NTFS.sys

  3. Vengono esaminati gli attributi del file ($ MFT) e se i dati non sono contenuti in un'unica estensione (frammento), vengono create richieste di I / O aggiuntive per ogni estensione / frammento per soddisfare la richiesta di dati originale.

  4. Ciascuna di queste richieste viene quindi inviata al driver di archiviazione su disco.

  5. Una volta recuperati, i dati vengono trasferiti nuovamente nello stack all'utente / all'applicazione.

Ogni macchina virtuale Windows invia questo tipo di traffico I / O al sistema host. Se la struttura del file system è frammentata a livello di guest / macchina virtuale, ciò si traduce in traffico I / O aggiuntivo e non necessario che deve essere gestito dall'host e distribuito l'archivio back-end. Questo viene ulteriormente aggravato quando si aggiungono sempre più macchine virtuali. In effetti, è possibile avere la frammentazione all'interno della frammentazione a livello del file system host.

Indipendentemente dal fatto che i dati siano archiviati su un SSD o su un HDD tradizionale, se si esegue Windows il file system NTFS verrà frammentato e, di conseguenza, non si raggiungeranno mai la velocità e il throughput nominali dei produttori a causa del file NTFS e della frammentazione dello spazio libero. Gli effetti possono essere misurati tramite PerfMon osservando la lunghezza media della coda di lettura del disco, la lunghezza media della coda di scrittura e, soprattutto, la divisione IO / sec.


1

A partire da Windows Server 2008 e Windows Vista, prestare attenzione all'attività di deframmentazione pianificata predefinita di Windows.

Può essere disabilitato con: schtasks /change / tn “microsoft\windows\defrag\ScheduledDefrag” /disable

o usando PowerShell:

Get-ScheduledTask ScheduledDefrag | Disable-ScheduledTask

Estratto da: http://www.sysadmit.com/2015/10/vmware-y-gpo-defrag-windows.html


0

Ho appena deframmentato una VM VMLite XPMode utilizzando la deframmentazione di Windows ospitata su INTEL SSDSC2CW240A3 da 240Gb.

Preframmentazione dimensioni VM sull'host - 7,83 GB (spazio utilizzato su C: su VM, 5,81 GB di 121 GB)

Post defrag - 9.86Gb (spazio utilizzato su C: su VM, 5.80Gb di 121Gb)

Non è il risultato che mi aspettavo e ho ripristinato la versione di pre deframmentazione.


-1

No, non proprio. Esistono elementi come "Hyperfast" di Diskeeper, ma non ho idea di quanto siano efficienti queste tecnologie. (Forse è solo una fregatura, quindi non cadranno dal mercato dopo che SSD diventerà mainstream.)


Hyperfast, sembra una salsa magica.
Jafin,
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.