¿Debo desfragmentar el disco duro que se ejecuta en una máquina virtual?

18

Sé que no tiene sentido (de hecho, es una mala idea) ejecutar Defrag en un SSD. ¿Qué pasa con una máquina virtual que se ejecuta en un SSD? ¿Debería desfragmentar su disco duro ya que básicamente está accediendo al disco duro de la misma manera?

Kris Erickson
fuente
No tengo idea de por qué esto está en SO, pero podría ser relevante: stackoverflow.com/questions/281527/…
Der Hochstapler
VSS puede hacer que el almacenamiento crezca si no utiliza un desfragmentador compatible con VSS.
Solo si la opción de desfragmentación es parte de su software de virtualización.
qasdfdsaq

Respuestas:

14

Desfragmente mis discos duros virtuales, pero por razones de espacio, no de tiempo:

Utilizo la opción asignada dinámicamente para VHD, por lo que comienzan de a poco y se expanden según sea necesario. Pero a medida que el VHD (no necesariamente los archivos) se fragmenta, se expande para incluir todos los bloques asignados. Desfragmentar el VHD es el primer paso para compactarlo nuevamente.

JRobert
fuente
El factor espacio puede ser relevante porque la VM está en una SSD, aunque en general, la desfragmentación de cualquier cosa en una SSD no es necesaria por razones de rendimiento y se desaconseja.
Bigbio2002
3

No hay necesidad de desfragmentar un SSD. Un disco duro normal tiene que girar para encontrar (las partes de) los archivos. Un SSD es comparable a la RAM, se puede acceder a todos los archivos con el mismo retraso.

Wikipedia dice que "El rendimiento de lectura no cambia según el lugar donde se almacenan los datos en un SSD"

Simon Verbeke
fuente
Proporcione un enlace al artículo de Wikipedia .
wizlog
1
@wizlog Voila;)
Simon Verbeke
2

Esta es solo mi opinión, no tengo resultados de pruebas que lo respalden. Aquí hay una aproximación aproximada de cómo suceden las cosas:

SO real:

  1. La aplicación solicita datos X (rápido)
  2. El sistema operativo solicita datos al controlador de disco X (rápido)
  3. El disco físico obtiene los datos X y los devuelve al sistema operativo ( lento si está fragmentado )

Aquí estaría la cadena de comando equivalente en una VM:

  1. La aplicación de VM solicita datos X (rápido)
  2. VM OS solicita datos X (rápido)
  3. El host VM le pide al sistema operativo real que almacene los datos X en el archivo del disco virtual (rápido)
  4. El sistema operativo real le pide al controlador de disco que obtenga datos X (rápido)
  5. El disco físico recupera los datos X y los devuelve al sistema operativo ( lento si está fragmentado ).

Como puede ver, en ambos casos la fragmentación solo se convierte en un problema en la etapa de la operación donde el disco duro físico intenta leer los datos, y eso sucede en el sistema operativo real, fuera del contexto de la VM. Antes de eso, todo probablemente sucede en la memoria.

En conclusión, dado que sabemos que los SSD no sufren fragmentación en el sistema operativo real, y que el problema de la fragmentación en una máquina virtual probablemente solo ocurra en el último paso físico de la operación, supongo que la desfragmentación de su sistema operativo virtual o el el archivo de disco virtual en su sistema operativo principal no mejoraría el rendimiento en un SSD, a la vez que es tan perjudicial / inútil como lo es la desfragmentación de su sistema operativo real.

Editar: Y si eso es correcto, ¡es una muy buena razón para poner una VM en un SSD! En un HDD, la fragmentación en cualquier etapa (SO huésped, archivo de disco virtual, SO real) romperá la linealidad y causará fragmentación en el paso del disco físico.

mtone
fuente
2

Ya sea que su máquina virtual esté accediendo a datos almacenados en HDD magnético tradicional o SSD electrónico, el archivo NTFS de Windows y la fragmentación de espacio libre ralentizan la velocidad de acceso de las aplicaciones que solicitan datos. La fragmentación de archivos NTFS y de espacio libre ocurre con mucha más frecuencia de lo que podría suponer. Tiene el potencial de suceder tan pronto como instales el sistema operativo. Puede suceder cuando instala aplicaciones o actualizaciones del sistema, accede a Internet, descarga y guarda fotos, crea correos electrónicos, documentos de oficina, etc. Es una ocurrencia y comportamiento normal del sistema informático, pero tiene un efecto negativo sobre Todas las aplicaciones y el rendimiento del sistema. A medida que ocurre la fragmentación, el sistema informático y el almacenamiento subyacente realizan más trabajo del necesario. Cada solicitud de E / S lleva una cantidad de tiempo medible. Incluso en entornos SSD no existe una solicitud de E / S "instantánea". Cada vez que una aplicación solicita leer o escribir datos y esa solicitud se divide en solicitudes de E / S adicionales, hace que se realice más trabajo. Este trabajo adicional causa un retraso justo en ese momento.

Las unidades de disco se han vuelto más rápidas con los años, pero también las CPU. De hecho, la brecha entre la diferencia de velocidad entre los discos duros y la CPU se ha ampliado. Esto significa que las aplicaciones pueden obtener muchos ciclos de CPU, pero todavía se mueren de hambre para obtener los datos del almacenamiento. Además, la cantidad de datos que se almacenan ha aumentado dramáticamente. Solo piense en todas esas fotos digitales tomadas y compartidas durante las vacaciones. Cada foto tiene un tamaño aproximado de 1 MB, ahora superan los 15 MB por foto y algunas van mucho más allá. La edición y el procesamiento de video y el almacenamiento de películas digitales también se han vuelto bastante populares y, como resultado, las aplicaciones están manipulando cientos de Gigabytes de datos. Con tamaños de clúster de disco típicos de 4k, un archivo de tamaño de 15 MB podría fragmentarse en casi 4.000 extensiones. Esto significa un extra 4, Se requieren 000 solicitudes de E / S de disco para leer o escribir el archivo. No importa qué tipo de almacenamiento, simplemente llevará más tiempo completar la operación.

La ubicación física de los datos en un SSD realmente no importa como lo hace en los discos duros magnéticos normales. Con un SSD no hay latencia rotacional ni tiempo para buscar. Muchos expertos suponen que la fragmentación ya no es un problema, pero la velocidad de acceso a los datos de la aplicación no solo se define en esos términos. Todas y cada una de las solicitudes de E / S realizadas requieren una cantidad de tiempo considerable. Los SSD son rápidos, pero no son instantáneos. El sistema de archivos de Windows NTFS no se comporta de manera diferente porque el almacenamiento subyacente es un SSD frente a un HDD y, por lo tanto, todavía se produce fragmentación. La reducción de las E / S innecesarias al prevenir y erradicar la fragmentación reduce el número de solicitudes de E / S y, como resultado, acelera el tiempo de respuesta de los datos de la aplicación y mejora la vida útil general de la SSD. En esencia,

Además, los SSD requieren que los datos antiguos se borren antes de que se escriban nuevos datos sobre ellos, en lugar de simplemente escribir sobre la información anterior como con los discos duros. Esto duplica el desgaste y puede causar problemas importantes con el rendimiento de la velocidad y la vida útil de la SSD. La mayoría de los fabricantes de SSD tienen tecnologías de nivelación de desgaste muy sofisticadas para ayudar con esto. El problema principal es la degradación de la velocidad de escritura debido a la fragmentación del espacio libre. Pequeños espacios libres dispersos en el SSD hacen que el sistema de archivos NTFS escriba un archivo en fragmentos fragmentados en esos pequeños espacios libres disponibles. Esto tiene el efecto de causar más tráfico aleatorio de E / S que es más lento que las operaciones secuenciales.

Tengo resultados de referencia para respaldar esto. Si lo desea, publique un comentario, solicitando estos resultados, y estaré encantado de compartirlos con usted.

Howard Butler
fuente
Howard Butler, eres nuevo en este sitio, bienvenido. En general, no es aconsejable publicar información personal en Internet.
wizlog
@wizlog No hay nada de malo en publicar información personal en Internet si la información es suya. Sin embargo, para fines en StackExchange, publicar su información de contacto o 'firma' en una respuesta es redundante. Los usuarios pueden hacer clic en su perfil para obtener más información si lo desean.
iglvzx
@iglvzx Estaba componiendo un comentario que esencialmente sugeriría lo mismo ... Como lo recomienda esta respuesta.
wizlog
2

Con respecto a la pregunta original de una desfragmentación tradicional de un SSD, estoy de acuerdo en que es una mala idea, pero hay soluciones específicas disponibles que abordan las preocupaciones del movimiento de archivos y la vida útil del SSD.

Una máquina virtual que ejecuta Windows como su sistema operativo, la fragmentación seguirá produciéndose y el efecto combinado del tráfico de E / S adicional reducirá la velocidad y la eficiencia no solo de los sistemas invitados, sino también del host. Tanto Microsoft como VMware recomiendan la necesidad de abordar la fragmentación a nivel de invitado.

Este es el por qué…

  1. La aplicación solicita datos X

  2. La solicitud es procesada por NTFS.sys

  3. Se examinan los atributos del archivo ($ MFT) y si los datos no están contenidos en una sola extensión (fragmento), se crean solicitudes de E / S adicionales para cada extensión / fragmento para satisfacer la solicitud de datos original.

  4. Cada una de estas solicitudes se envía al controlador de almacenamiento en disco.

  5. Una vez que se recuperan los datos, se devuelven a la pila al usuario / aplicación.

Cada máquina virtual de Windows envía este tipo de tráfico de E / S al sistema host. Si la estructura del sistema de archivos está fragmentada en el nivel de máquina Invitado / Virtual, esto se traduce en un tráfico de E / S adicional e innecesario que debe ser manejado por el Host y cultivar el almacenamiento de back-end. Esto se complica aún más a medida que agrega más y más máquinas virtuales. De hecho, puede tener fragmentación dentro de la fragmentación en el nivel del sistema de archivos del host.

Ya sea que los datos se almacenen en un SSD o un HDD tradicional, si está ejecutando Windows, el sistema de archivos NTFS se fragmentará y, como resultado, nunca alcanzará la velocidad y el rendimiento nominal del fabricante debido al archivo NTFS y la fragmentación de espacio libre. Los efectos se pueden medir a través de PerfMon mirando la longitud promedio de la cola de lectura del disco, la longitud promedio de la cola de escritura y, lo más importante, dividir E / S.

Howard Butler
fuente
1

A partir de Windows Server 2008 y Windows Vista, tenga cuidado con la tarea de desfragmentación programada predeterminada de Windows.

Se puede deshabilitar con: schtasks /change / tn “microsoft\windows\defrag\ScheduledDefrag” /disable

o usando PowerShell:

Get-ScheduledTask ScheduledDefrag | Disable-ScheduledTask

Extraído de: http://www.sysadmit.com/2015/10/vmware-y-gpo-defrag-windows.html

Jonathan
fuente
0

Acabo de desfragmentar una VM VMLite XPMode usando Windows Defrag alojado en 240 GB INTEL SSDSC2CW240A3.

Predesfragmentar tamaño de máquina virtual en el host: 7.83 Gb (espacio utilizado en C: en VM, 5.81 Gb de 121 Gb)

Post defrag - 9.86Gb (Espacio usado en C: en VM, 5.80Gb de 121Gb)

No es el resultado que esperaba y he restaurado la versión previa a la desfragmentación.

Essendee
fuente
-1

No en realidad no. Hay cosas como "Hyperfast" de Diskeeper, pero no tengo idea de cuán eficientes son estas tecnologías. (Tal vez sea solo una estafa para que no se caigan del mercado después de que SSD se convierta en la corriente principal).

apache
fuente
Hyperfast, suena como salsa mágica.
Jafin