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/sdX1
vs 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?
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.
fuente
No sé cómo funciona en VMware, pero Redhat RHEV-M / RHEV-H es posible y es compatible con RHEL 4.8 a 5.X y al mismo tiempo para ganar 2k3 R2 y ganar 2k8. Para más información http://studyhat.blogspot.com/2010/05/rhev-for-servers-22-installation-and.html
fuente
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.
fuente
¿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, ejecuteresize2fs /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.
fuente