330 - Clonar y redimensionar particiones
Existen herramientas y distribuciones específicas para clonar y redimensionar particiones, pero también lo puedes hacer desde tu distribución.
En un episodio anterior del podcast te hablé sobre que le cambié un disco mecánico por un disco SSD en un ordenador, y que realmente había tenido bastantes problemas con ello. Me estaba dando problemas porque el disco original, del cual quería hacer el clonado tenía determinados sectores erróneos, lo cual dificultaba la operación. Finalmente conseguí hacerlo con una herramienta que está disponible en diferentes distribuciones entre ellas Ubuntu. Así que ¿porque recurrir a Clonezilla si puede hacer lo mismo desde una distribución que conozco como es Ubuntu? Y de la misma manera, ¿porque no clonar y redimensionar particiones directamente desde Ubuntu?
Clonando y redimensionando particiones
Sobre el clonado
Con esto que te he comentado del clonado no quiero decirte que Clonezilla sea una mala distribución ni que Ubuntu sea mucho mejor distribución, nada mas lejos de mi intención.
En ocasiones nos empeñamos en utilizar y hablar sobre nuevas o no tan nuevas distribuciones. Y esto en general es muy interesante porque te da una mayor amplitud de miras, pero hasta cierto punto, porque el problema es que no profundizamos en ninguna. Esta es una de las razones por las que me mantengo fiel a una única distribución, aunque puntualmente, y de forma muy ocasional, pruebo otras opciones.
Redimensionar particiones
Generalmente el tema de las particiones lo tengo muy claro. Para la partición raíz 50 GB
y el resto para /datos
. Sin embargo, en un minipc que adquirí hace algún tiempo, y que llevo un tiempo utilizando como equipo de pruebas, no lo hice así, no me preguntes la razón, pero así fue.
Si, yo tengo todos los datos en una partición externa que siempre llamo /datos
. Esto me permite montarla desde varios distribuciones en el caso de tener varias distribuciones en mi equipo, y tener siempre toda la información disponible donde vaya. En algún momento esto lo hice con /home
, pero me di cuenta que no era la mejor opción, por el simple hecho de que allí se guarda la configuración, y no siempre estaba manejando las mismas versiones.
La cuestión es que le dí 30 GB
, en general esto te puede parecer suficiente, sin embargo el problema es Docker
. Docker hace un uso intensivo del disco, utiliza mucho disco duro. Tanto que al final no tuve mas remedio que redimensionar la partición /
hasta los 50 GB.
¿Como redimensionar particiones? Existe una herramienta, disponible en la mayoría de distribuciones, en particular en Ubuntu, que te permite realizar esto de forma gráfica y muy sencillo. Se trata de gparted
.
gparted
es una herramienta muy sencilla, con interfaz gráfica que te permite trabajar con las particiones de forma muy fácil. Cierto es que lo tienes que hacer con un Live USB
, es decir, y como ya te puedes imaginar, no lo puedes hacer en caliente. No puedes redimensionar una partición que estás utilizando.
Así aprovechando que tenía un Live USB
con Ubuntu, que venía del clonado del disco duro que te comenté anteriormente, procedía a redimensionar la partición.
Fue un proceso mas largo y que me llevó mas tiempo del que me esperaba. Esto fue así porque necesité además de cambiar el tamaño mover las particiones y esto siempre lleva algo mas de tiempo. Además eliminé algunos restos de una partición existente de Windows, hice la partición /datos
mas pequeña y /
mas grande. En este segundo caso, tuve que mover la partición a la derecha, lo que me llevó mas tiempo.
Finalmente todo terminé con éxito, a pesar de que lo hice a lo loco, sin copia de seguridad. Si es que… a quien se le ocurre.
Traefik
Ya ha hablado sobre Traefik en otras ocasiones, pero por si las moscas. Traefik es un proxy inverso o algo mas, que te permite o facilita, tener varios servicios corriendo en la misma máquina y sirviéndose por los puertos 80
y 443
.
Además Traefik
se encarga de los certificados de Let's Encrypt
y alguna magia adicional que a mi me simplifica mucho la vida.
Traefik tuvo un fuerte empuje con la primera versión, sin embargo, el cambio a la segunda fue algo traumático. Y digo que fue traumático, porque como siempre pasa en la red, cohexisten la documentación de la primera y la segunda versión. Y como hay mucho usuario de copiar y pegar se monta mucho lío.
Evidentemente, yo no estoy exento de esto, y voy copiando las configuraciones de un contenedor a otro, lo que me lleva a arrastrar porquería de un sitio a otro sin ningún sentido, y de manera totalmente ineficiente.
De esta manera, durante los últimos días he estado revisando y actualizando la configuración de Traefik en uno de los VPS
, y ha quedado de la siguiente forma. La estructura es,
.
|____docker-compose.yml
|____data
| |____acme.json
| |____traefik.yml
El primer pasos es crear la estructura de archivo,
mkdir data
touch data/acme.json
El siguiente paso es crear el archivo docker-compose.yml
con el siguiente contenido,
version: '3'
services:
traefik:
image: traefik:v2.5.3
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- traefik.enable=true
- traefik.http.routers.traefik-secure.entrypoints=websecure
- traefik.http.routers.traefik-secure.rule=Host(`traefik.tuservidor.com`)
- traefik.http.routers.traefik-secure.middlewares=basicauth
- traefik.http.routers.traefik-secure.tls=true
- traefik.http.routers.traefik-secure.tls.certresolver=letsencrypt
- traefik.http.routers.traefik-secure.service=api@internal
networks:
proxy:
external: true
El siguiente paso es crear la parte estática de Traefik, el archivo data/traefik.yml
, con el siguiente contenido
api:
dashboard: true
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
permanent: true
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: proxy
certificatesResolvers:
letsencrypt:
acme:
email: tudirecciondecorreo@gmail.com
storage: acme.json
httpChallenge:
entryPoint: web
Y ya está. A partir de aquí tan solo tienes que levantar el contenedor y a correr. Simplemente,
docker-compose up -d
Un ejemplo
Para probarlo, puedes utilizar un contenedor para que veas lo sencillo que es. En mi caso, yo utilizo uno que comenté recientemente en un directo dockerizando Chistes
, gracias a una genial idea de Daniel Primo. El resultado es tan sencillo como,
version: '3'
services:
chiquito:
image: atareao/chiquito:v2.0
container_name: chiquito
restart: unless-stopped
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.services.chiquito.loadbalancer.server.port=8000
- traefik.http.routers.chiquito-secure.entrypoints=websecure
- traefik.http.routers.chiquito-secure.rule=Host(`chiquito.tuservidor.com`)
- traefik.http.routers.chiquito-secure.tls=true
- traefik.http.routers.chiquito-secure.tls.certresolver=letsencrypt
networks:
proxy:
external: true
Evidentemente tienes que cambiar tuservidor.com
por tu dominio
y tudirecciondecorreo@gmail.com
por tu dirección de correo.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Modestas Urbonas
Hola Lorenzo, probablemente ya lo sepas, pero por las dudas te digo como hago yo para indicarle a docker donde guardar las imagenes que descargo para que no ocupen lugar en la partición / que usa por defecto:
Creo (si ya no existe) el archivo /etc/docker/daemon.json y allí le indico el destino que deseo de ésta forma:
{
«data-root»: «/media/disco2t/docker/imagenes»
}
Ya solo resta reiniciar el servicio:
$ sudo service docker stop
$ sudo service docker start
Un abrazo desde Argentina!
Gracias Pollo por esta aportación y por supuesto también a Lorenzo por divulgar tanto conocimiento. Desconocía que se pudiera cambiar el destino de las imágenes. Además siempre me ha inquietado un poco no tener control sobre los datos que descarga Docker.