Prólogo
Han pasado ya 2 días desde que salió la nueva versión del sistema operativo CentOS, concretamente CentOS 8. Y hasta ahora hay bastante poca información en Internet sobre cómo hacer ciertas cosas en él, así que decidí llenar este vacío. Además, no solo hablaré de cómo instalar un par de programas, sino también de cómo veo en general la instalación de Linux en un entorno virtual en el mundo moderno para tareas típicas, incluyendo la partición de discos y demás.
Pero antes quiero hablar brevemente sobre por qué vale la pena hacer la transición a esta versión desde todas las anteriores, y hay dos razones para ello:
- php7! En la versión anterior de CentOS se instalaba el "clásico" php5.4...
Bueno, siendo un poco más serios, muchos paquetes han saltado varias versiones a la vez. Nosotros (los aficionados a los sistemas tipo redhat) finalmente hemos llegado, si no al futuro, al menos al presente. Y los partidarios de Ubuntu ya no se reirán de nosotros ni nos señalarán, bueno... al menos por un tiempo ;).
- Transición de yum a dnf. La principal diferencia es que ahora se admite oficialmente el trabajo con varias versiones de paquetes a la vez. Hasta ahora, en la versión ocho no me ha sido necesario, pero suena prometedor.
Creación de una máquina virtual
Los hipervisores son variados y no tengo la intención de centrar al lector en uno específico, así que hablaré de los principios generales.
Memoria
Primero... Para instalar el sistema CentOS desde la versión 7, al menos, y creo que también en la 6 era así ("pero no estoy seguro"), es necesario un mínimo de 2 GB de RAM. Así que recomiendo asignar al menos eso al principio.
Pero, si es necesario, después de la instalación se puede reducir la cantidad de memoria. Con 1 GB, el sistema básico funciona bastante bien, lo he comprobado.
Disco
Para una instalación normal, se debe crear un disco virtual de 20-30 GB. Con eso es suficiente para el sistema. Y un segundo disco para datos. Se puede añadir tanto en la etapa de creación de la máquina virtual como después. Generalmente, yo lo añado después.
Procesador
Con un solo núcleo, el sistema básico no se ralentiza. Y dado que los recursos se pueden escalar libremente, no veo sentido en asignar más durante la instalación (a menos que se conozcan perfectamente los requisitos y no quiera perder tiempo en la configuración).
El resto generalmente se puede dejar por defecto.
En realidad, la instalación
Así que... Iniciamos el instalador... Personalmente, hace tiempo que solo instalo este tipo de servicios en máquinas virtuales, por lo que no describiré el proceso de grabar la distribución en una memoria USB; simplemente monto el ISO como un CD en mi hipervisor favorito, arranco y vamos.
La instalación básica es bastante típica, me detendré solo en algunos puntos.
Selección de fuente
Desde el lanzamiento de la versión ocho, el espejo de Yandex ha estado fuera de servicio varios días. Bueno, es decir, sube periódicamente y luego vuelve a mostrar error. Estoy seguro de que se debe a la carga excesiva en el servicio. Por eso, para indicar la fuente, tuve que ir en lugar de ingresar la dirección habitual, , elegir un espejo que me gusta y escribir manualmente la dirección en la ventana del instalador. Aquí es importante recordar que se debe indicar la ruta a la carpeta donde se encuentra el directorio repodata. Por ejemplo, .
Particionado del disco
Esta pregunta es más bien religiosa en mi opinión. Cada administrador tiene su propia posición al respecto. Pero aún así, compartiré mi punto de vista sobre el tema.
Sí, en principio, se puede dedicar todo el espacio a la raíz y funcionará, a menudo incluso bastante bien. ¿Por qué entonces complicar las cosas con diferentes particiones? — Creo que hay dos razones principales para ello: cuotas y portabilidad.
Por ejemplo, si algo sale mal y surgen errores en la partición principal de datos, es deseable poder cargar el sistema y realizar actividades de recuperación. Por eso, personalmente destino una partición separada para /boot. Ahí se encuentra el núcleo y el cargador de arranque. Por lo general, 500 megabytes son suficientes, pero en raras ocasiones puede necesitarse más, y considerando que ya estamos acostumbrados a medir espacio en terabytes, destino 2 GB para esta partición. Y es importante que no se haga LVM.
Luego viene la raíz del sistema. Para una instalación normal, nunca me ha hecho falta más de 4 GB específicamente para el sistema, pero durante las actividades planificadas suelo utilizar el directorio /tmp para descomprimir distribuciones, y no veo sentido en dedicarlo a una partición separada; en los sistemas modernos se limpia automáticamente, por lo que no se llena. Así que para la raíz destinaré 8 GB.
Swap… En términos generales, tiene poca utilidad práctica. Si su servidor comienza a utilizar swap, hoy en día esto significa simplemente que el servidor necesita más memoria RAM. De lo contrario, los problemas de rendimiento están garantizados (o algún programa tiene una fuga de memoria). Por lo tanto, esta sección solo es necesaria para diagnóstico. Así que 2 GB es una cifra excelente. Sí, independientemente de cuánta memoria haya en el servidor. Sí, he leído todos esos artículos que hablan sobre la relación entre el volumen de memoria y el volumen de swap... En mi opinión, están desactualizados. En 10 años de práctica, nunca me han sido útiles. Hace 15 años los usaba, sí.
Si se debe o no asignar /home a una partición separada, en mi opinión, cada uno puede decidir por sí mismo. Si alguien va a usar activamente ese directorio en el servidor, es mejor asignarle una partición. Si no, no es necesario.
A continuación, /var. A mi parecer, debe ser asignado sin falta. Para empezar, se puede limitar a 4 GB, y luego ver cómo va. Y sí, con "cómo va" quiero decir que
- Primero, siempre se puede montar otro disco en el subdirectorio /var (lo que mostraré a continuación con un ejemplo)
- En segundo lugar, tenemos LVM — siempre se puede agregar espacio. Y normalmente hay que agregar cuando demasiados logs comienzan a acumularse allí. Pero nunca he podido predecir de antemano cuánta será esa cifra, así que empiezo con 2 GB y luego miro.
El espacio no asignado quedará libre en el grupo de volúmenes y siempre se puede utilizar más tarde.
LVM
Todos las particiones, excepto /boot, tiene sentido hacerlas en LVM. Sí, incluyendo swap. Sí, según todos los consejos, swap debería estar al principio del disco, y en el caso de LVM, su ubicación no se puede determinar en principio. Pero como ya mencioné antes, su sistema no debería usar swap en absoluto. Por lo tanto, no importa dónde se encuentre. ¡No estamos viviendo en 1995, honestamente!
Además, en LVM hay varias entidades básicas con las que hay que saber convivir:
- volumen físico
- grupo de volúmenes
- volumen lógico
Los volúmenes físicos se agrupan en grupos, y cada volumen físico puede estar en un solo grupo, mientras que un grupo puede estar presente en varios volúmenes físicos.
Y los volúmenes lógicos se encuentran cada uno en un grupo.
Pero... estamos, maldita sea, en el siglo XXI. Y los servidores son virtuales. No tiene sentido aplicar los mismos mecanismos que se usaban para los físicos. Y para los virtuales es importante tener los datos por separado del sistema. ¡Esto es muy importante especialmente para la posibilidad de cambiar rápidamente los datos a otra máquina virtual (por ejemplo, al cambiar a un nuevo sistema operativo) y, en general, para todo tipo de ventajas útiles (copias de seguridad separadas por partes a través de las herramientas del hipervisor, por ejemplo). Por lo tanto, un grupo de volúmenes se utiliza para el sistema y necesariamente otro se utiliza para los datos. ¡Esta separación lógica ayuda mucho en la práctica!
Si al crear una máquina virtual solo has creado un disco duro virtual, la configuración termina ahí. Y si tienes dos, simplemente no particiones aún el segundo.
Comenzamos la instalación.
Postinstalación
Así que, por fin ha arrancado el nuevo sistema instalado. Lo primero que hay que comprobar es la conexión a Internet.
ping ya.ru ¿Hay respuesta? - Excelente, pulsamos Ctrl-C.
Si no la hay, ve a configurar la red, sin eso no hay vida, pero este artículo no trata de eso.
Ahora, si aún no estamos como root, accedemos como root, porque teclear tanta cantidad de comandos con sudo, personalmente me da pereza (y que me perdonen los administradores paranoicos):
sudo -iAhora, lo primero que tecleamos es
dnf -y updateY si estás leyendo este artículo en 2019, probablemente no sucederá nada, pero valió la pena intentarlo.
Ahora configuraremos el disco restante
Supongamos que la partición con el sistema fue xvda, entonces el disco de datos será xvdb. Está bien.
La mayoría de los consejos comenzarán con las palabras 'Ejecuta fdisk y crea una partición...'
Así que, eso es incorrecto!
Lo repetiré de nuevo porque es importante. En este caso, trabajar con LVM en un disco virtual completo creando particiones en él es perjudicial. Cada palabra en esta frase es importante. Si trabajamos sin LVM, es necesario. Si tenemos en el disco, digamos, sistema y datos, es necesario. Si necesitamos dejar la mitad del disco vacía por alguna razón, también es necesario. Pero en general, todas estas suposiciones son puramente teóricas. Porque si decidimos añadir espacio a la partición existente, lo más fácil será hacerlo precisamente con esta configuración. Y la comodidad en la administración supera con creces muchas cosas, que nos lleva intencionadamente a esta configuración.
La ventaja es que si deseas ampliar la partición de datos, simplemente añades espacio a la partición virtual, luego amplías el grupo usando vgextend y ¡listo! En raras ocasiones puede ser necesario hacer algo más, pero al menos no tendrás que ampliar al principio el volumen lógico, lo cual ya es un alivio. Para ampliar dicho volumen, se recomienda primero eliminar el existente y luego crear uno nuevo encima… Lo cual no es muy atractivo y no se puede hacer mientras está en operación, mientras que la expansión según el escenario que mencioné se puede realizar "en caliente" sin desmontar la partición.
Así que, creamos un volumen físico, luego un grupo de volúmenes que lo incluya y después una partición para nuestro servidor:
pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www
Aquí puedes en lugar de usar la letra mayúscula "L" (y el tamaño en GB) indicar una minúscula y entonces en lugar del tamaño absoluto, indicar el relativo, por ejemplo, para usar la mitad del espacio libre en ese momento en el grupo de volúmenes, debes indicar "-l +50%FREE".
El último comando formatea la partición en el sistema de archivos ext4 (que hasta ahora en mi experiencia muestra la mayor estabilidad en caso de que algo falle, por lo que prefiero usarlo).
Ahora montamos la partición en el lugar correcto. Para ello, añadimos la línea correcta en /etc/fstab:
/dev/mapper/data-www /var/www ext4 defaults 1 2Y escribimos
mount /var/www¡Si aparece un error, hay que alertarse! Porque eso significa que tenemos un error en /etc/fstab. Y que en el próximo reinicio tendremos grandes problemas. El sistema puede ni siquiera iniciar, lo cual es bastante lamentable para los servicios en la nube. Por eso, hay que o bien corregir urgentemente la última línea escrita, o eliminarla completamente. ¡Precisamente por eso no escribimos el comando de montaje manualmente — entonces no hubiéramos obtenido la magnífica oportunidad de verificar la configuración justo ahora!
Ahora, en realidad, instalamos todo lo que queríamos y abrimos los puertos para la web:
dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent
Si lo deseas, también puedes instalar la base de datos aquí, aunque personalmente prefiero mantenerla separada del servidor web. Aunque tenerla cerca es más rápido, sí. La velocidad de los adaptadores de red virtuales suele estar alrededor de un giga, y al trabajar en la misma máquina, las solicitudes se realizan casi instantáneamente. Pero es menos seguro. Aquí depende de lo que cada uno considere más importante.
Ahora añadimos el parámetro al archivo de configuración (creamos uno nuevo, la moderna ideología de CentOS es así)
echo "vm.overcommit_memory = 1" > /etc/sysctl.d/98-sysctl.conf Reiniciamos el servidor.
En los comentarios me criticaron por recomendar desactivar SeLinux, así que me corregiré y escribiré sobre que después de esto no se debe olvidar configurar SeLinux.
¡En realidad, hay beneficio! 🙂
Fuente: habr.com
