Mejores prácticas para servidores Linux de aprovisionamiento delgado (en VMware)

9

Tengo una configuración de aproximadamente 20 máquinas Linux, cada una con aproximadamente 30-150 gigabytes de datos de clientes. Probablemente el tamaño de los datos crecerá significativamente más rápido en algunas máquinas que en otras. Estas son máquinas virtuales en un clúster VMware vSphere. Las imágenes de disco se almacenan en un sistema SAN.

Estoy tratando de encontrar una solución que utilice el espacio en el disco con moderación, al tiempo que permita el crecimiento fácil de máquinas individuales.

En teoría, simplemente crearía discos grandes para cada máquina y usaría el aprovisionamiento delgado. Cada disco crecería según sea necesario. Sin embargo, parece que un sistema de archivos ext3 de 500 GB con solo 50 GB de datos y un número bastante bajo de escrituras todavía aumenta fácilmente la imagen del disco, por ejemplo. 250 GB a lo largo del tiempo. ¿O tal vez estoy haciendo algo mal aquí? (Me sorprendió lo poco que encontré sobre el tema con Google. Por cierto, incluso no hay una etiqueta de aprovisionamiento delgado en serverfault.com).

Actualmente estoy planeando crear discos grandes y de aprovisionamiento delgado, pero con un pequeño volumen LVM en ellos. Por ejemplo: un volumen de 100 GB en un disco de 500 GB. De esa manera, podría aumentar más fácilmente el volumen LVM y el tamaño del sistema de archivos según sea necesario, incluso en línea.

Ahora para la pregunta real:

¿Hay mejores formas de hacer esto? (es decir, aumentar el tamaño de los datos según sea necesario sin tiempo de inactividad).

Las posibles soluciones incluyen:

  • Usando un sistema de archivos amigable de aprovisionamiento delgado que intenta ocupar los mismos lugares una y otra vez, por lo tanto, no aumenta el tamaño de la imagen.

  • Encontrar un método fácil para recuperar espacio libre en la partición (¿volver a diluir?)

  • ¿Algo más?

Una pregunta adicional: si sigo con mi plan actual, ¿recomendaría crear particiones en los discos ( pvcreate /dev/sdX1vs pvcreate /dev/sdX)? Creo que es contrario a las convenciones usar discos sin formato sin particiones, pero facilitaría un poco el crecimiento de los discos, si es necesario. Todo esto es solo cuestión de gustos, ¿verdad?

tuomassalo
fuente

Respuestas:

7

Si entiendo correctamente el aprovisionamiento delgado, realmente podría causar problemas si no está monitoreando de cerca el crecimiento de sus sistemas de archivos VMFS y permite que sus VMDK llenen sus volúmenes VMFS. Ha visto en sus pruebas que los discos delgados aprovisionados tienden a crecer para llenar su espacio disponible rápidamente y que no pueden recuperar espacio que puede estar libre dentro del sistema operativo.

La otra opción es crear archivos VMDK de tamaño suficiente para manejar su uso actual y los picos de crecimiento esperados y simplemente agregar más archivos VMDK a medida que crece el uso de datos de su aplicación. Se pueden agregar nuevos archivos VMDK en vivo a una VM, solo tiene que volver a escanear (echo "- - -"> / sys / class / scsi_host / host? / Scan). Puede particionar el nuevo disco, agregarlo a su LVM y extender el sistema de archivos todo en vivo. De esta manera, siempre sabe cuánto espacio se asigna a cada una de las máquinas virtuales y no puede ejecutar accidentalmente su VMFS sin espacio desde el interior de un invitado.

En cuanto a si particionar o no si el disco solo va a ser utilizado por LVM, siempre particiono. Particionar el disco evita que surjan advertencias sobre tablas de partición falsas cuando la máquina arranca y deja en claro que el disco está asignado. Es un poco vudú, pero también me aseguro de iniciar la partición en 64 para ayudar a asegurar que la partición y el sistema de archivos estén alineados en bloque con el almacenamiento subyacente. Es difícil de detectar y categorizar, ya que generalmente no tiene algo con lo que comparar fácilmente, pero si el sistema de archivos del sistema operativo no está alineado correctamente con el almacenamiento subyacente, puede terminar con IOPS adicionales necesarios para atender las solicitudes que cruzan los límites del bloque en el almacenamiento subyacente

mtinberg
fuente
1
Gracias por la idea de agregar nuevos archivos vmdk (en lugar de solo hacer crecer los existentes).
tuomassalo
3

La mejor sugerencia que se me ocurre es crear una configuración LVM con volúmenes físicos, grupos de volúmenes y volúmenes lógicos, luego montar esos volúmenes lógicos como el sistema de archivos de su VM a través de iSCSI .

Esto le permitirá cambiar el tamaño del volumen lógico y luego todo lo que tendrá que hacer después de eso es reiniciar el software iscsi daemon y la máquina virtual y verificar que tenga los nuevos parámetros de tamaño y luego cambiar el tamaño del sistema de archivos del invitado para que coincida.

La partición funcionaría como con un disco duro estándar, ya que así es como el LV le parecería al huésped de la máquina virtual.

Editar: no importa esto, tengo la falsa impresión de que estaba ejecutando vmware en linux, no linux en vmware.

Aaron Tate
fuente
1

Sugerencia diferente: configure un servidor de archivos que contendrá todos sus datos de usuario.

Ese servidor de archivos, por supuesto, debe administrarse con LVM para sus propósitos de administración de capacidad en línea.

Si lo desea, puede crear una configuración ha (drbd + heartbeat) con una copia de su servidor de archivos en la SAN y una segunda copia externa o similar. (para los paranoicos)

Dado que sus clientes están basados ​​en Linux, puede usar NFS, que se dice que es más rápido que Samba. Un FileServer le permitirá una estrategia de copia de seguridad centralizada, así como una supervisión centralizada del uso del almacenamiento. Y en términos de su pregunta de aprovisionamiento delgado:

Cree su configuración de LVM como lo deseaba (en su ejemplo, LV de 100 gb en un PV de 500 gb, simplemente cambie los números que coincidan con la suma de almacenamiento que necesitan sus máquinas virtuales). Expanda este LV cuando sea necesario, como planeaba hacer en cada VM por separado. Pero solo hazlo UNA VEZ en tu servidor de archivos. Cada vez que una VM reduce su uso de almacenamiento, ese espacio estará disponible para todas sus VM ;-)

Use cuotas en su servidor de archivos si es necesario o deseado para evitar que una sola VM llene su servidor de archivos.

Endros
fuente
1

¿Puede expandir un volumen sin apagar la máquina virtual que lo usa? Comúnmente hago esto, pero no sé cómo es su configuración de almacenamiento o cómo VMware podría complicar las cosas. Si puedes, lo que haría es esto

1) No reduzca la provisión. Haga que cada volumen tenga el tamaño que cree que necesita. 2) No use particiones. Haga que cada sistema de archivos tenga su propio volumen. 3) Monitoree el crecimiento del sistema de archivos para que pueda cambiar el tamaño de los volúmenes de manera proactiva.

Cuando llega el momento de hacer crecer un volumen

1) En su SAN o en VMware, haga lo que necesite para expandir el volumen. 2) En Linux, ejecute echo 1 > /sys/block/EXAMPLE/device/rescan, donde EJEMPLO son los nombres de dispositivo en / sys / block /. 3) En Linux, ejecute resize2fs /dev/EXAMPLE, donde EJEMPLO es el nombre del dispositivo en / dev.

Este enfoque está funcionando bien para mí. Consideré su enfoque con el aprovisionamiento delgado y LVM, y creo que funcionaría también.

Si decide seguir la ruta LVM, le recomiendo no particionar los discos. Como dijiste, no tener una tabla de particiones facilita el crecimiento del disco virtual. Sin una tabla de particiones, puede ejecutar pvresize y Linux reconocerá que el volumen físico ha crecido. Con una tabla de particiones, debe desmontar cualquier sistema de archivos, eliminar la tabla de particiones, volver a crear la tabla de particiones y luego ejecutar pvresize. Eso es mucho más trabajo y requiere tiempo de inactividad.

Sciurus
fuente