Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
servidores:general:actualizando_etch_a_wheezy [2013/05/19 18:35] fmolinuevo [Inconvenientes no relacionados con la migración] |
servidores:general:actualizando_etch_a_wheezy [2013/05/23 10:21] (actual) fmolinuevo [Bibliografía] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== Actualizando Debian Etch a Wheezy ====== | + | ====== Actualizando Debian Etch a Wheezy y otras aventuras ====== |
===== Introducción ===== | ===== Introducción ===== | ||
Línea 107: | Línea 107: | ||
===== Inconvenientes no relacionados con la migración ===== | ===== Inconvenientes no relacionados con la migración ===== | ||
- | En la unidad md3 (usr) se encontraron fallas en el sistema de archivos, por lo que se ejecutó: | + | En la unidad md3 (usr) se encontraron fallas en el sistema de archivos, por lo que, empleando [[http://www.sysresccd.org/|SystemRescueCD]] se procedió a la resolución de las mismas: |
reiserfsck /dev/md3 | reiserfsck /dev/md3 | ||
Línea 114: | Línea 114: | ||
El --rebuild-tree finalizó luego de largo rato con un error, debido a que uno de los discos se apagó por completo, y terminó de destruir el sistema de archivos, generando también la salida de servicio del disco en el resto de las unidades RAID. | El --rebuild-tree finalizó luego de largo rato con un error, debido a que uno de los discos se apagó por completo, y terminó de destruir el sistema de archivos, generando también la salida de servicio del disco en el resto de las unidades RAID. | ||
- | Se cambiaron dos discos, sospechados de estar funcionando mal, reemplazándolos por discos idénticos nuevos. Uno de ellos, aún funcionando, fue copiado con dd_rescue a uno de los nuevos. Mientras que con el otro disco no fue posible. | + | Se **cambiaron dos discos**, sospechados de estar funcionando mal, reemplazándolos por discos idénticos nuevos. Uno de ellos, aún funcionando, fue copiado con dd_rescue a uno de los nuevos. Mientras que con el otro disco no fue posible. |
- | Para toda esta parte del trabajo, lenta, tediosa y estresante se siguieron los [[https://doc.fmsistemas.com/servidores:raid|procedimientos de recuperación de desastres RAID]]. | + | Para toda esta parte del trabajo, lenta, tediosa y aburridísima de explicar, se siguieron los [[https://doc.fmsistemas.com/servidores:raid|procedimientos de recuperación de desastres RAID]]. Y siempre utilizando [[http://www.sysresccd.org/|SystemRescueCD]]. |
- | ===== Listado de paquetes a reconfigurar ===== | + | |
+ | Hecho el recambio de discos, hubo que reconstruir el árbol de directorios y archivos de la unidad md3, correspondiente a /usr | ||
+ | |||
+ | Para ello, se copió todo /usr de Squeeze existente en otro servidor en el directorio /usr del servidor dañado, y se reinstalaron todos los paquetes en éste. Siempre desde un SystemRescueCD se trabajó dentro de un chroot: | ||
+ | |||
+ | dpkg -S /usr > reinstalar | ||
+ | sed -i -e"s/,//g" reinstalar | ||
+ | sed -i -e"s/: \/usr//g" reinstalar | ||
+ | for i in `cat reinstalar` ; do echo "---> $i " 2>&1 >> reinstallog.log ; apt-get install --reinstall $i 2>&1 >> reinstallog.log ; done | ||
+ | | ||
+ | La primer línea busca en la base de datos de APT todos los paquetes que han grabado archivos en /usr y los almacena en un archivo "reinstalar". Las dos siguientes preparan ese archivo sacando las comas y otros caracteres no deseados, para que esté listo para ser usado en el for. Se contó la cantidad de paquetes con "wc -w reinstalar" dando unos 787. | ||
+ | |||
+ | Este tedioso procedimiento deberá ser monitoreado con un tail, y cada vez que aparezca un error, se deberá resolverlo. Por ejemplo, al reinstalar Samba, faltaron las librerías libwbclient.so.0 y libtalloc.so.2. | ||
+ | |||
+ | Con dpkg -S libwbclient.so.0 se podrá ver a qué paquete corresponde, y reinstalarlo antes del paquete samba: | ||
+ | |||
+ | apt-get install --reinstall libwbclient0 libtalloc2 | ||
+ | | ||
+ | Así ocurrió otras veces. Esto se debe a que los paquetes instalados en el servidor desde donde se tomó /usr no son exactamente los mismos que los que estaban instalados en el servidor que se está reparando. | ||
+ | |||
+ | ==== Otra unidad MD dañada ==== | ||
+ | |||
+ | A lo largo del trabajo, se descubrió que también la unidad md4, montada en /var y con 68GB de datos, tenía errores graves del sistemas de archivos, por lo que se ejecutó otro --rebuild-tree en runlevel 1: | ||
+ | |||
+ | reiserfsck --rebuild-tree /dev/md4 | ||
+ | | ||
+ | Esto reconstruyó perfectamente el árbol de archivos, pero varios nodos quedaron conectados a lost+found, especialmente archivos relacionados con la base de datos de archivos de APT. Por ello, al trabajar con apt-get ocurrían algunos errores de "falta de información sobre algún paquete, por lo que se considera no instalado". Para resolverlo, se reinstalaron los paquetes en cuestión: | ||
+ | |||
+ | aptitude reinstall python-debian cpio insserv lzop ispell libtasn1-3-bin unrar libgnome2-common pppconfig gconf2-common perl-modules libtie-ixhash-perl debianutils | ||
+ | | ||
+ | Y se realizó otro chequeo de disco: | ||
+ | |||
+ | reiserfsck /dev/md4 | ||
+ | | ||
+ | que ya no arrojó errores. El reinstall resolvió los inconvenientes en la base de datos de paquetes, y de entonces en adelante el servidor quedó operacional. | ||
+ | ===== Actualización a Wheezy ===== | ||
+ | |||
+ | Una vez que se revisó que todo funcione correctamente, que fueron sincronizados las unidades RAID, y que se eliminaron paquetes innecesarios y errores varios, se procedió a actualizar a Wheezy siguiendo el procedimiento estándar. | ||
+ | |||
+ | sed -i -e"s/squeeze/wheezy/g" /etc/apt/sources.list | ||
+ | apt-get update | ||
+ | apt-get install apt dpkg aptitude -V | ||
+ | apt-get dist-upgrade -V | ||
+ | |||
+ | El procedimiento de actualización también incluye eliminar kernels viejos, revisar archivos de configuración cambiados, y eliminar paquetes obsoletos, tareas ya documentadas en otros instructivos. | ||
+ | ===== Cyrus no funciona ===== | ||
+ | |||
+ | Al actualizar Cyrus apareció un nuevo error, por lo que debemos reconstruir las bases de datos de Cyrus: | ||
+ | |||
+ | su - cyrus | ||
+ | cd /var/lib/cyrus | ||
+ | rm db/* | ||
+ | rm db.backup?/* | ||
+ | rm deliver.db | ||
+ | rm tls_sessions.db | ||
+ | /usr/lib/cyrus/bin/ctl_mboxlist -d > mailboxes.txt | ||
+ | mv mailboxes.db mailboxes.db.old | ||
+ | /usr/lib/cyrus/bin/ctl_mboxlist -u < mailboxes.txt | ||
+ | | ||
+ | |||
+ | ===== Listado de paquetes y scripts a reconfigurar ===== | ||
+ | |||
+ | El siguiente listado muestra aquellos componentes cuya configuración tuvo que ser revisada por diversos inconvenientes. En parte se debe a las diferencias de configuración entre los paquetes de Etch y los de Wheezy, y en parte al daño ocurrido en los sistemas de archivos | ||
- samba | - samba | ||
Línea 125: | Línea 186: | ||
- apache2 | - apache2 | ||
- php5 | - php5 | ||
+ | - cyrus | ||
+ | - postfix | ||
+ | - backups varios (sole, discovery) | ||
+ | |||
+ | ===== Conclusiones ===== | ||
+ | |||
+ | Finalmente no hubo tiempo de migrar de arquitectura, así que el servidor quedó con i386. Ello no es un inconveniente grave en este caso, por lo que quedará para otra ocasión. | ||
+ | |||
+ | Lo interesante de destacar es la facilidad con que Linux, y en particular Debian, permite recuperar los desastres más terribles. No hay otro sistema operativo que brinde semejante comodidad al administrador. | ||
+ | También es de destacar, respecto a Debian, la consistencia entre las distintas versiones, lo cual permite que los equipos sean migrados con mínimos inconvenientes entre una versión y otra, y queden perfectamente funcionales otra vez en poco tiempo. | ||
+ | En esta ocasión el proceso llevó mucho más tiempo del esperado debido a los errores en discos, y en especial a los daños en las unidades RAID. Pero también es de agradecer la potencia y confiabilidad de mdadm, que permite restaurar unidades de una u otra forma, a pesar de las fallas aparentemente terribles en el hardware. | ||
===== Bibliografía ===== | ===== Bibliografía ===== | ||
* https://doc.fmsistemas.com/servidores:general:actualizando_lenny_a_squeeze | * https://doc.fmsistemas.com/servidores:general:actualizando_lenny_a_squeeze | ||
+ | * https://doc.fmsistemas.com/servidores:raid | ||
* https://doc.fmsistemas.com/servidores:general:wheezy_cambiando_arquitectura | * https://doc.fmsistemas.com/servidores:general:wheezy_cambiando_arquitectura | ||