SharePoint Latin Rotating Header Image

16080

Sin capacidad de almacenamiento suficiente durante proceso de Exportacion/Importacion en SharePoint

En esta semana nos encontramos con un escenario muy particular relacionado con comandos Import/Export SPWeb en SharePoint 2010. Al correr Export-SPWeb o Import-SPWeb el proceso en algún punto marcaba error y la razón fue porque la unidad C: llegaba a su capacidad máxima de almacenamiento.

Es increíble, ya que es bien sabido que debemos contar con volúmenes de disco duro adicionales para guardar los LOGS de SharePoint y en el caso de la base de datos los LOGS y MDFs de SQL. Además, la unidad C: solo es para guardar los archivos del sistema y debemos tener libre el doble equivalente de memoria RAM en capacidad de almacenamiento en disco duro. En otras palabras, si tengo 8GB de RAM, siempre debería tener por lo menos 16GB de espacio almacenamiento libre en C:

Entonces si tengo el almacenamiento de mi servidor de aplicaciones debidamente configurado con diversos volúmenes e incluso con cierto nivel de RAID, ¿porque se llena el disco duro al ejecutar comandos Import-SPWeb y Export-SPWeb?

Resulta que estos comandos son la alternativa disponible para mover sitios web de SharePoint entre colecciones de sitio, son capaces de mover permisos, contenido, versiones, workflows, etc. En estos tiempos donde muchas empresas carecen de gobernabilidad y planeación de un servicio SharePoint es común ver sitios web de SharePoint realmente grandes con una jerarquía de sitios muy profunda y desde la perspectiva de almacenamiento realmente enormes y esto tiene una implicación importante a considerar cuando trabajamos con Import-SPweb y Export-SPWeb.  En realidad y de forma interna estos comandos hacen uso de una funcionalidad pre-construida en SharePoint llamada Content Deployment.

Content Deployment ofrece una alternativa para mover contenido de un lugar a otro y cuenta con todo un proceso para realizarlo. Este proceso es invocado tanto por los comandos Import-SPWeb, Export-SPWeb, Content Deployment del Central Administracion, los respaldos granulares y el modelo de objetos de SharePoint entre otros. En primer instancia este proceso requiere de varios atributos como tipo de exportación (full o incremental), sitios o contenido que será incluido, rutas y paths de archivos donde se exporta el contenido y los logs de los procesos, entre otras opciones de configuración. El caso es que en algún punto, este proceso construye un archivo XML que describe todas las instrucciones detalladas de exportación o importación que proceso deberá seguir y por consiguiente si el sitio a exportar es muy grande, este archivo y algunos otros temporales que genera lo será también. Y bueno, ¿En dónde crees que estos archivos tras bambalinas se almacenan de forma temporal? Pues en el TEMP del usuario firmado y ¿En dónde se almacena el TEMP del usuario firmado? Pues en el disco duro C: y he ahí la razón.

Una alternativa de solución a esto es modificar la variable de entorno TEMP para que su ruta de almacenamiento apunte a una unidad que si tenga la capacidad de almacenamiento necesaria para soportar nuestros procesos de importación y exportación.

clip_image001

También si estás trabajando con PowerShell puedes usar $env:temp para obtener la ruta del TEMP y modificarla usando set-item -path env:temp -value "F:\TEMP".

Cosas de la vida! Saludos

UPDATE: Existe el switch NoFileCompression que podemos utilizar para evitar que de forma temporal se generen los archivos adicionales que se comentaron durante el post. Por default, NoFileCompression es False y esto genera en la carpeta TEMP los archivos temporales previos a los que genera el proceso. Este switch lo deberas especificar tanto en Export-SPWeb como Import-SPWeb.

Respaldo y restauración granular de un sitio de equipo en SharePoint 2010

A continuación los pasos para realizar un procedimiento de respaldo y restauración granular de un sitio SharePoint 2010.

Accedemos a la herramienta central de administración SharePoint y seleccionamos Backup and Restore y después la opción de Export a site or list. Esta opción nos permite hacer un respaldo de sitios y/o elementos como listas o bibliotecas de forma granular, esta opción básicamente hace uso de Content Deployment para empaquetar en un archivo .cmp un sitio o lista el cual posteriormente podremos restaurar.

clip_image002

Ya dentro de Export a Site or List elegimos la colección de sitios de donde se encuentra el sitio que requerimos, buscamos de la lista el sitio en particular que necesitamos respaldar. Como se puede observar podemos llegar a un nivel mayor “lista” de respaldo granular. Es muy importante especificar la ruta en donde se depositaran los archivos de nuestra exportación, en este caso el servidor es splapp y la carpeta backup, es importante asegurarse que la carpeta esta compartida y con los permisos necesarios para que la cuenta del sistema SharePoint pueda crear archivos dentro de dicha carpeta.

clip_image004

En caso de requerir exportar los permisos específicos que se tienen entonces elegimos Export Full Security y así mismo elegimos el esquema de versiones que deseamos exportar, el exportador se puede llevar todas las versiones de un documento. Estas opciones son las mismas que especificamos programáticamente cuando utilizamos el modelo de objetos SharePoint para hacer Content Deployment. Damos clic en el botón Star Export.

Esto inicia el proceso de exportación, dependiendo del contenido del sitio o lista que deseas exportar es el tiempo que durara el proceso, este proceso si es un poco lento.

clip_image006

Sin embargo, la misma página constantemente se está refrescando para poder visualizar el estatus del proceso que se está ejecutando.

clip_image008

Una vez que termina el proceso de exportación, tendremos en nuestra carpeta un par de archivos.

clip_image010

El archivo demo.cmp básicamente es el resultado de nuestro proceso de exportación y contiene el contenido e instrucciones necesarias para poder ser importado más adelante. Así mismo, se agrega un archivo en formato texto con la bitácora de exportación. Esta bitácora muestra los elementos que fueron incluidos en la exportación, desde permisos, carpetas, paginas maestras, características. Te recomiendo analizar el archivo pero si tienes prisa lo más importante es validar que no se tengan errores al final del archivo.

clip_image012

Y para montar nuestro respaldo granular debemos de asegurarnos que el sitio o lista que deseamos restaurar sea del mismo tipo de plantilla de sitio de donde se respaldó, en caso de que difiera la plantilla el proceso de restauración generara un error.

Para restaurar el respaldo simplemente cargamos Microsoft SharePoint 2010 Management Shell de PowerShell. Después ejecutamos el siguiente script donde especificamos claramente la ruta del sitio donde estaremos restaurando y la ruta del archivo de respaldo.

clip_image014

El restado del proceso es un archivo de bitácora de importación que nos ofrece información de los elementos aprovionados. De la misma manera hay que validar al final del archivo que no se tenga errores.

clip_image015