You are here: TWiki> Cimec Web>ClusterAdministration (2001-09-01, MarioStorti)

Warning: this is somewhat outdated, after the upgrading od RH 5.2 to RH 7.1

NAME
	 admin - Geronimo Cluster Upgrading HOW-TO

AUTHOR
	 Mario A. Storti 

SYNOPSIS
	 We describe here some basic aspects of the Geronimo Beowulf
	 administration.

DESCRIPTION
  Para agregar un nuevo nodo

	 1	Hacer un diskette de booteo para cada nodo

			  dd if=zImage.client of=/dev/fd0

	 2	Bootear el nodo y tomar nota del MAC ed la tarjeta del nodo. Para
		  esto hay que escuchar en el port correspondiente con

			  /usr/sbin/tcpdump rarp -i eth1

	 3	Agregar la linea corespondiente en el script '/root/crea_nodos' y
		  correrlo.

	 4	Agregar el nodo en /etc/hosts, /etc/hosts.equiv, /etc/hosts.allow y
		  en /usr/local/mpi/util/machines/machines.LINUX y en
		  ~mstorti/PETSC/proctable

	 5	Bootear todo el cluster de nuevo.

	 6	Si hay problemas:

		  *	Hacer ping al nuevo nodo

		  *	Verificar que se pueda hacer rsh hacia y desde el nuevo nodo a
				los otros.

		  *	Verificar que el nuevo nodo este en los /etc/hosts, hosts.equiv
				de los otros nodos y del server.

  Para recuperar el kernel del server

		 $ cp zImage.server /boot/zImage
		 $ lilo

  Para compilar el (los) kernel nuevamente

	 Para el kernel 2.0.36 (RH 5.2) hay que hacer basicamente dos cosas.

	 1	Para el driver 3c59x.c hay que agregar dos lineas diferentes
		  dependiendo de si es el server o el cliente. Esto puede cambiar en
		  un futuro si lo podemos hacer en forma modular.

				#ifdef  BEOWULF_SERVER_KERNEL	 /* for the server */

				#warning Compiling kernel for the SERVER
				static int options[8] = { -1, 4, -1, -1, -1, -1, -1, -1,};
				static int full_duplex[8] = {-1, 1, -1, -1, -1, -1, -1, -1};

				#elif  BEOWULF_NODE_KERNEL	 /* for the nodes */

				#warning Compiling kernel for the NODES
				static int options[8] = { 4, -1, -1, -1, -1, -1, -1, -1,};
				static int full_duplex[8] = { 1, -1, -1, -1, -1, -1, -1, -1};

				#else

				#error No compilation options BEOWULF_NODE_KERNEL or BEOWULF_SERVER_KERNEL were set.

				#endif

		  Estas lineas definen que para el server-kernel hay que inicializar
		  la tarjeta eth0 (la primera tarjeta, sobre la red del Ceride en la
		  configuracion actual) a 10BaseT (Ethernet (no Fast-Ethernet)) y la
		  segunda tarjeta a Fast-Ethernet (100BaseT) y full duplex. Para el
		  node-kernel (clientes) se inicializa a 100Baset/full-duplex la
		  primera tarjeta.

	 2	En las operaciones de configuracion del kernel (archivo .config en
		  el directorio /usr/src/linux).

		  *	Hay que configurar en las `Networking Options' el RARP para que
				responda cuando se le pregunta por el IP de un nodo, mientras
				que en los nodos se debe dejar desactivado ya que si no un nodo
				Y responde a un RARP request del nodo X entonces X tratara de
				cargar el kernel en Y, lo cual no es posible. Es decir, solo el
				server debe responder a los RARP request's.

		  *	En los nodos hay que configurar RARP en el rubro `Filesystems',
				mientras que en principio hay que dejar desactivado esto en el
				server.

		  Estas opciones se pueden cargar en el archivo
		  `/usr/src/linux/.config' de la siguiente forma

		  server-kernel:
						  CONFIG_INET_RARP=y
						  # CONFIG_ROOT_NFS is not set
						  # CONFIG_RNFS_RARP is not set

		  node-kernel:
						  # CONFIG_INET_RARP is not set
						  CONFIG_ROOT_NFS=y
						  CONFIG_RNFS_RARP=y

		  y entonces se hace `$make oldconfig' y se responde con el default
		  () a todas las preguntas.

  El script `make_kernels'

	 Para evitar tener que hacer todo esto manualmente se ha escrito un
	 script make_kernels.

	 *	La eleccion de los diferentes seteos para el driver 3c95x se hace
		  mediante macros del preprocesador `C' llamados
		  `BEOWULF_SERVER_KERNEL' y `BEOWULF_NODE_KERNEL'. Estos se pasan via
		  desde make_kernels invocando a make con algo del tipo

			 BEOWULF_KERNEL_TYPE=-DBEOWULF_SERVER_KERNEL make zImage

		  El Makefile del kernel fue modificado agregando una linea

			 CFLAGS += $(BEOWULF_KERNEL_TYPE)

	 *	La eleccion de las diferentes opciones de configuracion del kernel
		  se hace mediante preprocesamiento del archivo /usr/src/linux/.config
		  con ePerl. El archivo config.eperl contiene las dos versiones de
		  configuraciones mediante directivas `#if...#endif' de ePerl y la
		  version apropiada de .config es creada antes de compilar cada kernel
		  y ejecutando

			 $ yes "" | make oldconfig

  Como hacer para identificar que kernel contiene un diskette.

	 Para identificar que archivo hay en un diskette hacemos un 'md5sum' del
	 archivo y lo escribimos en la etiqueta del diskette, la cual puede
	 contener un texto como el que sigue

		 LINUX REDHAT 5.2 CLUSTER BOOT KERNEL

		 creation date: January 5, 2001

		 dd if=/dev/fd0 | md5sum:
				 cf20 f973 30a4 5d37 0097 682e 8be3 cdd6

	 Pero hay que tener cuidado porque al hacer un 'dd' del kernel al floppy,
	 como el kernel no ocupa todo el floopy puede quedar basura en el resto
	 del mismo. De manera que primero hacemos para el primer floppy

	  $ dd if=/dev/zero of=/dev/fd0				 # llena el floppy con 0's
	  $ dd if=zImage.client of=/dev/fd0			# copia el kernel en el floppy
	  $ dd if=/dev/fd0 of=zImage.client.dsk	  # guarda una copia en zImage.client.dsk
															  # para los otros floppies

	 y para los siguientes:

	  $ dd if=zImage.client.dsk  of=/dev/fd0
	  $ dd if=/dev/fd0 | md5sum

	 De esta forma el archivo `zImage.client.dsk' debe tener exactamente el
	 tama#o del floppy. Los comandos 'md5sum' deben dar todos iguales y esa
	 'signatura' debe incluirse en el etiqueta.

	 Mas adelante, cuando uno quiere verificar que un dado floppy contiene
	 exactamente el kernel que dice que contiene, entonces se puede verificar
	 con

	  $ dd if=/dev/fd0 | md5sum

	 y el numero que resulta debe coincidir con el de la etiqueta.


-- MarioStorti - 01 Sep 2001

Topic revision: r1 - 2001-09-01 - 15:15:38 - MarioStorti
 

TWIKI.NET
This site is powered by the TWiki collaboration platformCopyright � by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback