Compresión de SMB

Se aplica a: Windows Server 2022, Windows 11

La compresión de SMB permite a un administrador, usuario o aplicación solicitar la compresión de archivos a medida que se transfieren a través de la red. Esto elimina la necesidad de desinflar manualmente un archivo con una aplicación, copiarlo y, luego, inflarlo en el equipo de destino. Los archivos comprimidos consumirán menos ancho de banda de red y tardarán menos tiempo en transferirse, a costa de un ligero aumento del uso de CPU durante las transferencias. La compresión de SMB es más eficaz en redes con menos ancho de banda, como la red Ethernet de 1 Gbps o Wi-Fi de un cliente. En la práctica, una transferencia de archivos a través de una red Ethernet de 100 Gbps sin congestión, entre dos servidores con almacenamiento flash puede ser igual de rápida sin la compresión de SMB, pero generará menos congestión para otras aplicaciones.

La compresión de SMB en Windows tiene las siguientes características:

  • Admite algoritmos de compresión XPRESS (LZ77), XPRESS Huffman (LZ77+Huffman), LZNT1 o PATTERN_V1*. XPRESS se usa automáticamente.
  • Admite la firma SMB y el cifrado SMB.
  • Admite SMB a través de QUIC.
  • Admite SMB multicanal.
  • No admite SMB directo a través de RDMA.

Para ver una demostración de la compresión de SMB, vea este vídeo:

Requisitos

Para usar la compresión de SMB en una carga de trabajo tradicional de servidor de archivos de cliente, necesita lo siguiente:

Configuración de la compresión de SMB

Puede configurar la compresión de SMB desde la perspectiva de un cliente y de un servidor. El cliente y el servidor no hacen referencia a una edición determinada, como Windows Server 2022 o Windows 11 Insider Preview, sino a la arquitectura de una transferencia de archivos entre dos equipos. Tanto Windows Server 2022 como Windows 11 admiten ser un cliente o servidor de compresión SMB.

Solicitud de compresión de SMB en recursos compartidos de archivos

Puede configurar que los recursos compartidos soliciten siempre la compresión cuando los clientes se conecten. Puede usar Windows Admin Center o PowerShell.

Uso de Windows Admin Center

  1. Instale Windows Admin Center y conéctese a un servidor de archivos de Windows Server 2022.
  2. Haga clic en el elemento de menú Archivos y uso compartido de archivos.
  3. Haga clic en Recursos compartidos de archivos.
  4. Edite un recurso compartido existente o cree uno.
  5. Seleccione Comprimir datos y, luego, haga clic en Agregar o Editar.

file server compression

Usar PowerShell

  1. Abra un símbolo del sistema de PowerShell con privilegios elevados como administrador.

  2. Cree un nuevo recurso compartido con compresión mediante New-SMBShare con el parámetro y argumento -CompressData $true. Por ejemplo:

    New-SmbShare -Name "Sales" -Path "C:\sales" -CompressData $true

  3. Edite un recurso compartido existente con compresión mediante Set-SMBShare con el parámetro y argumento -CompressData $true. Por ejemplo:

    Set-SmbShare -Name "Sales" -CompressData $true

Solicitud de compresión de SMB en unidades asignadas

Puede solicitar que todos los datos copiados en una unidad asignada se compriman. Esto se puede hacer como parte de un script de inicio de sesión o cuando se ejecuta manualmente.

Usar PowerShell

  1. Abrir un símbolo del sistema de PowerShell

  2. Asigne una unidad mediante New-SMBMapping con el parámetro y argumento -CompressNetworkTraffic $true. Por ejemplo:

    New-SmbMapping -LocalPath "Z:" -RemotePath "\\fs1.corp.contoso.com\sales" -CompressNetworkTraffic $true

Uso de NET USE

  1. Abra un símbolo del sistema de CMD.

  2. Asigne una unidad mediante NET USE con el parámetro y argumento /REQUESTCOMPRESSION:YES. Por ejemplo:

    NET USE * \\fs1.corp.contoso.com\sales /REQUESTCOMPRESSION:YES

Solicitud de compresión de SMB con herramientas de copia

Puede solicitar que se intenta la compresión de SMB para archivos concretos mediante robocopy o xcopy.

Nota

Si quiere que el Explorador de archivos, herramientas de copia de terceros o aplicaciones usen compresión, asigne unidades con compresión, habilite la compresión en recursos compartidos o establezca clientes de SMB para que siempre se compriman.

Uso de Robocopy.exe

  1. Abra un símbolo del sistema de CMD o de PowerShell.

  2. Copie con la marca /COMPRESS. Por ejemplo:

    ROBOCOPY c:\hypervdisks \\hypervcluster21.corp.contoso.com\disks$ *.vhdx /COMPRESS

Uso de Xcopy.exe

  1. Abra un símbolo del sistema de CMD o de PowerShell.

  2. Copie con la marca /COMPRESS. Por ejemplo:

    XCOPY c:\hypervdisks\*.vhdx \\hypervcluster21.corp.contoso.com\disks$\* /COMPRESS

Requerir siempre o rechazar siempre las solicitudes de compresión

Puede configurar un cliente de SMB para que siempre solicite la compresión y siempre rechace las solicitudes de compresión. Puede configurar un servidor de SMB para que siempre rechace las solicitudes de compresión.

Comprimir siempre

  1. En el equipo cliente de SMB, inicie Regedit.exe.

  2. Ve hasta la siguiente subclave del Registro:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

  3. Cree un nuevo nombre de valor REG_DWORD:

    EnableCompressedTraffic

  4. Establézcalo en un valor de:

    1

  5. Cierre regedit. Esta configuración entra en vigor inmediatamente, sin necesidad de reiniciar.

No comprimir nunca (cliente de SMB)

  1. Abra un símbolo del sistema de PowerShell con privilegios elevados como administrador.

  2. Ignore todas las solicitudes de compresión de cualquier unidad asignada, herramienta o servidor con:

    Set-SMbClientConfiguration -DisableCompression $true

    Con esto:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

    DisableCompression [dword] = 1

No comprimir nunca (servidor de SMB)

  1. En el equipo servidor de SMB, inicie Regedit.exe.

  2. Ve hasta la siguiente subclave del Registro:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters

  3. Cree un nuevo nombre de valor REG_DWORD:

    DisableCompression

  4. Establézcalo en un valor de:

    1

  5. Cierre regedit. Esta configuración entra en vigor inmediatamente, sin necesidad de reiniciar.

Descripción y control de los comportamientos de compresión

La compresión SMB en Windows Server 2022 y Windows 11 usa un algoritmo predeterminado donde intenta comprimir los primeros 524 288 000 bytes (500 MiB) de un archivo durante la transferencia y realiza un seguimiento de que al menos 104 857 600 bytes (100 MiB) comprimidos dentro de ese intervalo de 500 MiB. Si se pueden comprimir menos de 100 MiB, la compresión de SMB deja de intentar comprimir el resto del archivo. Si se comprimen al menos 100 MiB, la compresión de SMB intenta comprimir el resto del archivo. Esto significa que es probable que los archivos muy grandes con datos comprimibles (por ejemplo, un disco de máquina virtual de varios gigabytes) se compriman, pero un archivo relativamente pequeño, incluso uno muy comprimible, no se comprimirá.

Nota

Este comportamiento no seguirá siendo el valor predeterminado en Windows Server 2022 y Windows 11. Se cambió por primera vez en Windows 11 compilación 22449 de Insider Preview, donde SMB ya no usará este algoritmo de decisión de forma predeterminada. Para obtener más información, consulte Announcing Windows 11 Insider Preview Build 22449 ( Anuncio de la compilación 22449 de Insider Preview).

Si quiere que la compresión de SMB se aplique de forma agresiva independientemente del tamaño del archivo, puede invalidar los valores predeterminados:

  1. En el equipo cliente de SMB, inicie Regedit.exe.

  2. Ve hasta la siguiente subclave del Registro:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

  3. Cree un nuevo nombre de valor REG_DWORD:

    CompressibilitySamplingSize

  4. Establézcalo en un valor decimal:

    4294967295

  5. Cree un nuevo nombre de valor REG_DWORD:

    CompressibleThreshold

  6. Establézcalo en un valor de:

    0

  7. Cierre regedit. Esta configuración entra en vigor inmediatamente, sin necesidad de reiniciar.

Esta configuración significa que la compresión de SMB intentará comprimir los primeros 4 GiB de un archivo y, si comprime al menos 1 byte, intentará comprimir el resto del archivo.

Prueba de la compresión de SMB

Pruebas

Una manera sencilla de probar la configuración de compresión es usar archivos VHDX. Puede crear y montar un VHDX, agregarle algunos archivos y, luego, desmontar el VHDX y copiarlo como archivo. Como alternativa, puede tan solo copiar un archivo VHDX de máquina virtual desmontado existente, ya que gran parte de su contenido de archivo se comprimirá. Para ver un ejemplo de creación de un archivo de prueba VHDX:

  1. Inicie Diskmgmt.msc.

  2. Haga clic en Disco local (C:) para seleccionarlo.

  3. Haz clic en Acción y luego en Crear VHD.

  4. En Diskmgmt, haga clic con el botón derecho en el VHDX que ahora se muestra como "Sin inicializar" y haga clic en Inicializar disco y haga clic en Aceptar. Haga clic con el botón derecho en la sección Sin asignar de los discos y haga clic en Nuevo volumen simple y, después, en Siguiente para todos los mensajes de menú y, a continuación, haga clic en Finalizar.

  5. Especifique una ruta de acceso de archivo, establezca el tamaño en "25 GB", seleccione VHDX y Tamaño fijo, y haga clic en Aceptar.

    disk management

  6. Haga clic con el botón derecho en el disco y haga clic en Ocultar VHD y luego en Aceptar.

  7. En el Explorador de archivos, haga doble clic en ese archivo VHDX para montarlo. Copie algunos MB de archivos no comprimibles, como el formato JPG, haga clic con el botón derecho en el disco montado y haga clic en Expulsar.

Ahora tiene un archivo de prueba grande con contenido muy comprimible.

Probar la compresión de SMB entre un par de VM que se ejecutan en el mismo host de Hyper-V puede no mostrar un ahorro de tiempo, ya que el conmutador virtual es de 10 Gbps y no tiene congestión, además de que los hipervisores modernos suelen usar almacenamiento flash. Pruebe la compresión en las redes reales que tiene pensado usar. También puede reducir el ancho de banda de red en las VM de Hyper-V con fines de prueba, por ejemplo, mediante Set-VMNetworkAdapter con -MaximumBandwidth establecido en 1Gb.

Para ver cómo funciona la compresión, puede aplicar robocopy en el mismo archivo en un servidor dos veces, una vez con la marca /compress y otra sin compresión, eliminando el archivo de servidor entre cada prueba. Si el archivo se comprime, debería ver un menor uso de la red en el Administrador de tareas y un tiempo de copia menor. También puede observar el objeto "Recursos compartidos de servidor SMB" del Monitor de rendimiento del servidor SMB para los contadores "Compressed Requests/sec" (Solicitudes comprimidas/s) y "Compressed Responses/sec" (Respuestas comprimidas/s).

RDMA y SMB directo

La compresión de SMB no admite SMB directo y RDMA. Esto significa que incluso si el cliente solicita compresión y el servidor la admite, la compresión no se intentará con SMB directo y RDMA. La compatibilidad de la compresión de SMB con SMB directo y RDMA estará disponible después de las versiones preliminares públicas de Windows Server 2022 y Windows 11.