Aparentemente, Robocopy no comprende la deduplicación de Windows Server 2016. ¿Hay alguna manera de hacerlo funcionar sin corromper el volumen?

13

Guión:

  • Realizando una migración del servidor desde el antiguo Servidor 2008 R2 al nuevo Servidor 2016, siguiendo esta guía de Fallas del servidor: Migración del servidor de archivos usando Robocopy

  • Una vez que se complete Robocopy, habilite la deduplicación en Server 2016 para el volumen copiado y luego use PowerShell para comenzar a eliminar el pulso manualmente. Después de muchas horas se completa y recupera aproximadamente el 25% del espacio en disco.

  • Ejecute Robocopy nuevamente para copiar cualquier cosa que pueda haberse perdido en la copia inicial, como una verificación final del nuevo servidor.

.... pero Robocopy (ejecutado desde el Servidor 2016) no comprende la deduplicación y, por lo tanto, procede a eliminar el almacén de fragmentos de deduplicación.

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Sunday, July 8, 2018 12:10:02 PM
   Source : \\SERVER-2008\e$\
     Dest : \\SERVER-2016\e$\

    Files : *.*

  Options : *.* /TEE /S /E /COPYALL /PURGE /MIR /ZB /NP /MT:32 /R:1 /W:10 

------------------------------------------------------------------------------

    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\
      *EXTRA File         253504    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.1
      *EXTRA File         253504    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.2
      *EXTRA File             28    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\stamp.dat
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\
      *EXTRA File         196608    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000046.00.RB
      *EXTRA File         106496    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000048.00.RB

[.......]

*EXTRA File           30.3 m    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\Stream\000f0000.00000002.ccc
*EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\
  *EXTRA File         29.7 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\00000001.kmchange.log
  *EXTRA File        999.8 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.10.archive.etl
  *EXTRA File       1000.0 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.11.archive.etl
  *EXTRA File        735.5 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.12.archive.etl
  *EXTRA File        999.8 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.9.archive.etl
  *EXTRA File          1.3 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.2.1.archive.etl
*EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\
  *EXTRA File             76    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.00.cfg
  *EXTRA File             76    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.01.cfg
  *EXTRA File           2228    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.01.xml
  *EXTRA File           2228    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.02.xml
  *EXTRA File              0    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\VolumeJobLock.bin
*EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\State\
  *EXTRA File           2982    \\SERVER-2016\e$\System Volume Information\Dedup\State\chunkStoreStatistics.xml
  *EXTRA File           2592    \\SERVER-2016\e$\System Volume Information\Dedup\State\dedupStatistics.xml
  *EXTRA File         11.5 m    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceBitmap.tmp
  *EXTRA File          1.0 g    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceContainer.ccc
  *EXTRA File         46.0 m    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceDeleteLogs.tmp
  *EXTRA File          1.0 m    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceFileList.tmp
  *EXTRA File           4096    \\SERVER-2016\e$\System Volume Information\Dedup\State\GroupCommitFlushControl0.bin
  *EXTRA File           2066    \\SERVER-2016\e$\System Volume Information\Dedup\State\optimizationState.xml

[......]

Lo aborté momentos después de ver esto volar en el registro y reconocer lo que estaba sucediendo. Pero el daño ya está hecho, los datos en el nuevo servidor deduplicado fueron corrompidos instantáneamente por Robocopy al irrumpir a través de \ System Volume Information. La nueva partición de la unidad del servidor se ha formateado y copiado de nuevo desde Server 2008.

¿Existe una forma segura de usar Robocopy para que no toque los datos del volumen de deduplicación?

Además, tengo una nueva inquietud ... si Robocopy puede destruir un volumen deduplicado, ¿qué otra cosa es insegura de usar con un volumen deduplicado, que lo atraviese y pueda destruir los datos subyacentes a los que solo debería poder acceder el servidor? (probablemente debería ser una pregunta por separado ..)

Dale Mahalko
fuente
55
¿Qué esperabas que pasara con el /MIRinterruptor que es MIRror a directory tree (equivalent to /E plus /PURGEdónde /PURGE :: delete dest files/dirs that no longer exist in source? "Espejo" significa hacer del destino una copia de la fuente. Robocopy es poderoso ... y, por supuesto, sabemos lo que eso significa: ¡ con un gran poder viene una gran responsabilidad!
davidbak
"\ Información del volumen del sistema" normalmente es inaccesible y normalmente se bloquea el acceso a todos los programas. No debería haber ninguna forma en que Robocopy pueda ingresar allí incluso cuando se ejecuta desde un símbolo del sistema del Administrador. Probémoslo accediendo manualmente en ese mismo Servidor 2016: Inicio -> Símbolo del sistema -> Ejecutar como administrador. CD \ Información del volumen del sistema. Acceso denegado.
Dale Mahalko
Es verdad. También debería haber señalado que usó /ZB :: use restartable mode; if access denied use Backup modedonde el modo de Copia de seguridad anula la mayoría de los permisos para poder leer archivos "normalmente" ilegibles para hacer copias de seguridad completas. Así que fue la combinación de /By /MIReso te hizo
entrar
Continuando con la gran respuesta de Greg: dada la opción, simplemente deje la deduplicación desactivada hasta que haya terminado de migrar.
Tim Brigham el

Respuestas:

16

El System Volume Informationdirectorio debe excluirse utilizando el modificador / XD. Probablemente sea una buena idea excluir otros directorios ocultos / del sistema como $RECYCLE.BIN.

Greg Askew
fuente
5

Dos interruptores de línea de comando que se utilizaron conducen a esto: /MIRy /ZB. Como se robocopy /???describe en la documentación ( ):

/ MIR :: MIRror un árbol de directorios (equivalente a / E plus / PURGE).
/ ZB :: usa el modo reiniciable; si se deniega el acceso, use el modo de copia de seguridad

Es la combinación que hizo: /MIReliminará (como se señaló cuando se ejecuta robocopysin argumentos) y el "Modo de copia de seguridad" anula la mayoría de los permisos para poder leer los archivos "normalmente" ilegibles para hacer copias de seguridad completas.

El "modo de copia de seguridad" no está definido en la descripción de "ayuda". Debe saber que la CreateFileAPI de Windows admite un indicador llamado FILE_FLAG_BACKUP_SEMANTICS, que en combinación con un cierto derecho de acceso SE_BACKUP_NAME(que se otorga al grupo Administrador de forma predeterminada , también el grupo Operadores de copia de seguridad, duh) omite la seguridad normal de los archivos.

¿No lo sabías? Entonces, es posible que no sepa que la robocopy no era originalmente parte de Windows en absoluto: era parte de un suplemento llamado "Kit de recursos de Windows" que fue utilizado principalmente por los programadores y los administradores de sistemas en el pasado, y aunque fue incluido en la distribución de Windows en Windows Server 2008, nunca ha recibido ninguna atención, excepto por las opciones de rendimiento adicionales, ¡woot! Particularmente, no hay atención de los administradores de programas dedicados a la interfaz de usuario o la usabilidad . Por lo tanto, es un poco de poder que se puede usar, ¡o perder! - bajo tu propio riesgo.

(Una buena regla general: no use las opciones de línea de comandos que realmente no comprende).

Información que le gustaría saber sobre el acceso al archivo "Modo de copia de seguridad":

https://isc.sans.edu/forums/diary/Use+The+Privilege/20483/

https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

https://docs.microsoft.com/en-us/windows/desktop/FileIO/file-security-and-access-rights

davidbak
fuente
1
Por cierto, no hay nada peligroso (AFAIK) sobre el /Z"modo reiniciable". Es lo Bque es problemático ...
davidbak
¿Se pueden copiar total y completamente las cuentas de dominio del servidor de archivos, con su propietario separado y los datos de seguridad en cada directorio de cuenta (/ COPYALL o / COPY: DATSOU) usando la cuenta de administrador, sin usar / B?
Dale Mahalko
@DaleMahalko - TBH no lo sé. Aunque he estado programando Windows durante un par de décadas, hay aspectos que evito, por lo que solo sé lo suficiente sobre la seguridad de Windows para que no me junten cuando sea necesario ... Soy el tipo de persona que siempre ha iniciado sesión como miembro del Administrador, entro en la Política de grupo y hago que todo se cumpla por completo, etc. ¿Quizás alguien más lo sabe?
davidbak
1

Estos son los resultados de seguimiento utilizando las otras respuestas proporcionadas y las pruebas con un destino deduplicado. ( Meta: no sé si debería incluir esto como una edición al final de mi pregunta original ) .

La línea de comando de Robocopy evolucionó para finalmente verse así:

robocopy \\OLD-SERVER\e$\ \\NEW-SERVER\e$\ /MIR /COPYALL /DCOPY:DAT /NP /Z /B /J /SL /MT:128 /R:1 /W:10 /LOG+:robocopy-log.txt /TEE /XD "Recycler" "Recycled" "$Recycle.bin" "System Volume Information" /XF "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Opciones y finalidad:

  • / MIR: duplica el origen en el destino y elimina archivos y directorios en el destino, si ya no están presentes en el origen
  • / COPYALL: copie toda la información del archivo: datos, atributos y marcas de tiempo, ACL de seguridad NTFS, información del propietario, información de auditoría (no todo está incluido por defecto)
  • / DCOPY: DAT: copia toda la información del directorio: datos, atributos, marcas de tiempo (la marca de tiempo de creación original no se copia por defecto; normalmente esto cambia a la fecha en que Robocopy lo copió)
  • / NP - No mostrar progreso
  • / Z: usa el modo reiniciable
  • / B - Copie archivos en modo Copia de seguridad (no sé si esto es necesario para los directorios de usuarios donde son propietarios exclusivos, excluyendo al administrador. Esta opción destruirá un volumen de destino deduplicado sin excluir "Información del volumen del sistema")
  • / J - Copiar usando E / S sin búfer (copia más rápida de archivos grandes de varios conciertos)
  • / SL - Copia enlaces simbólicos en lugar del objetivo
  • / MT: 128: utilice subprocesos de CPU máximos (mejor uso de Ethernet de 10 gigabits y muchos núcleos de CPU)
  • / R: 1: si se produce un error de acceso al archivo, vuelva a intentarlo 1 vez
  • / W: 10: si se produce un error de acceso al archivo, espere 10 segundos antes de volver a intentarlo
  • / LOG +: registra la salida en el archivo de texto, anexa si el archivo de registro ya existe
  • / TEE - Imprime resultados a la pantalla y al archivo de registro
  • / XD: excluye directorios y todo lo que contiene. Los nombres con espacios deben estar entre comillas: "Reciclador" "Reciclado" "$ Recycle.bin" "Información del volumen del sistema"
  • / XF - Excluir archivos: memoria virtual y archivos de hibernación si están presentes en la fuente: "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Repetición final:

            Total    Copied   Skipped  Mismatch    FAILED    Extras 
 Dirs :    158189    153466    158186         0         0         0
Files :   1116292         0   1116296         0         0         0
Bytes :   1.350 t         0   1.350 t         0         0         0
Times :   0:01:04   0:00:00                       0:00:00   0:01:04

Informe de desuplicación

,

Además, no conozco los canales adecuados para informar errores a Microsoft, pero he vinculado a esta discusión en la parte inferior de la documentación de deduplicación de Microsoft, en su sitio web de Windows IT Pro Center :

https://docs.microsoft.com/en-us/windows-server/storage/data-deduplication/overview

Dale Mahalko
fuente
/MT:128parece bastante alto; ¿descubriste que era realmente efectivo establecerlo tan alto (y no contraproducente pasar un valor más bajo)?
davidbak
1
PD: Me encanta trabajar en la línea de comando. Imagine el desagradable cuadro de diálogo con pestañas en el que tendría que trabajar lentamente para llegar a esta funcionalidad precisa. Y ninguna de esas IU tiene un modo de "guardar", ¡así que tendrías que hacerlo cada vez!
davidbak
No sé por qué se molestan en exponer el control de subprocesos al usuario final. Al final, atraviesa 1,5 TB de datos en un minuto y no muestra cambios, por lo que, independientemente del "impacto" que tenga el máximo de hilos, parece que no importa. Esta actuación es bastante aceptable para mí.
Dale Mahalko
@DaleMahalko: personalmente me pareció útil poder controlar el máximo de hilos. Si tengo que copiar 10 archivos, cada uno de los cuales lleva unas horas configurar MT: 2 me permite tener solo 2 subprocesos de copia de archivos para estar activo a la vez. En una infraestructura poco confiable o compleja donde ocurren interrupciones, MT: 2 asegurará que solo se abortarán 2 copias de archivos en lugar de 10 si tuviera MT: 10 (todos los archivos se copian al mismo tiempo). En este caso, si se produce una interrupción en los últimos 2 archivos de cada 10, solo será necesario reiniciarlos (con otros 8 ya copiados) en lugar de todos.
Rod
Ha pasado mucho tiempo desde la última vez que usé Robocopy, pero parece recordar que un número limitado de hilos no satura el enlace de red entre dos servidores, pero sí más hilos. Y esto realmente debería ser el foco. La especificación de subprocesos máximos no es útil, pero "agregar lentamente más subprocesos de copia hasta que se cruza el ancho de banda X, y si está por encima del umbral, no agregue más subprocesos cuando finalicen las copias" es realmente útil y satisfaría nuestras necesidades.
Dale Mahalko el
0

Creo que no sabes qué es robocopy / Robocopy: es un comando robusto de copia de archivos para la línea de comandos de Windows que te permite copiar archivos, directorios e incluso unidades de una ubicación a otra. Si desea más información, consulte este artículo https://rocketfiles.com/articles/what-is-robocopy-in-windows

ANTROGOR
fuente
2
No estoy seguro de que esta sea una respuesta clara a la pregunta. ¿Cómo se relaciona esta respuesta con el problema de deduplicación?
Todd Wilcox