Archive for the ‘linux’ Category

Sistema de Archivos Distribuidos: CODA

Miércoles, Julio 23rd, 2008

Los Sistemas de archivos distribuidos son muy útiles por la función que brindan que es: la compartición de archivos, y algunos además la compartición de software.
CODA que es un tipo de estos sistemas de archivos, y presenta varias características adicionales, es muy útil ya que los clientes al tener una memoria caché pueden guardar los archivos compartidos y usarlos, e incluso modificarlos y cuando se vuelvan a conectar con los demás nodos los datos se actualizan.
En este post queremos presentar ayuda de como configurar un servidor y cliente CODA, en el sistema operativo Linux: Centos4.4. Para que puedan leer sobre esta configuración con más detalle pueden descargarse y leer el archivo que está cargado a continuación, y además pueden ver un video que lo hemos preparado para mejor comprención del tema.

INFORME DE LA CONFIGURACIÓN CODA: Informe_CODAInforme_CODA
DIRECCIÓN DEL VIDEO: http://www.youtube.com/watch?v=X5xMwapxwOM

Los instaladores no los he podido subir, por su tamaño pero si los desean me pueden escribir a la siguiente dirección y yo se los envio: eeencalada@utpl.edu.ec.

Saludos!!!

CODA File Systems

Miércoles, Julio 16th, 2008

Coda es un sistema de ficheros distribuido, desarrollado en la Universidad Carnegie Mellon. Coda está basado en una arquitectura cliente/servidor, y ha sido diseñado para proporcionar funcionalidades no existentes en otros sistemas de ficheros distribuidos – por ejemplo NFS – como es el soporte para la movilidad de los clientes.

Las características principales de Coda (según describen los propios desarrolladores) son:

* Permite operar a los clientes offline, esto es, desconectados del sistema, de manera que pueden realizar cambios locales en los ficheros que se propagan a todo el sistema de ficheros una vez que el cliente en cuestión se reconecta al mismo.

* Facilita características para mejorar la resistencia a fallos en el sistema, mediante la posibilidad de incluir servidores con réplicas de los datos del sistema, y mecanismos para manejar conflictos entre servidores, para manejar fallos en la red, y para controlar la desconexión de los clientes y los posibles conflictos e inconsistencias que ello puede acarrear. También incorpora mecanismos de backup de los datos del sistema.

* Proporciona mejoras en el rendimiento, con respecto a otros sistemas de ficheros distribuidos, mediante la utilización de caches locales en los clientes y para la escritura de datos en los servidores.

* Incorpora características de seguridad basadas fundamentalmente en la autenticación de usuarios, mediante la utilización de listas de control de acceso (ACL’s).

* El código está disponible de forma libre.

De esta forma, el objetivo principal perseguido con Coda es obtener un sistema de ficheros distribuido con un rendimiento mejorado, menos sensible a posibles indisponibilidades en los servidores o a sobrecargas de la red. Relacionada con esta meta está la provisión de cierto grado de movilidad a los clientes del sistema.

Actualmente existen versiones de Coda para diferentes variantes de Unix (incluido Linux Debian y RedHat) y Windows 95/98 y XP.

Ubuntu 8.04 Hardy Heron

Viernes, Junio 27th, 2008

Ubuntu 8.04

Esta mejor que la versión 7.10 se las recomiendo… les dejo un videito para que puedan ver todo lo que es posible con Ubuntu 8.04.

Requerimientos para instalar linux UBUNTU

Miércoles, Mayo 28th, 2008

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
SISTEMAS OPERATIVOS
INTEGRANTES:
• John Paul Iñiguez Tapia
• Israel Rodríguez
• Leonardo Saldaña
REQUERIMIENTOS PARA INSTALAR UBUNTU
Para instalar UBUNTU los requerimientos son básicos:
Para utilizar solo lo básico de este sistema operativo necesitamos las características básicas de una Pentium tres como son:
• Disco duro de 40 gigabytes.
• Memoria RAM de 64 o 128 megabytes
• Procesador Pentium tres.
Por otro lado para instalar UBUNTU con todas sus aplicaciones completas necesitamos lo siguiente:
• Disco duro mínimo de 80 gigabytes.
• Memoria RAM 128 megabytes en adelante
• Procesador Pentium cuatro.
Pero también existen otras posibilidades de visualizar este Sistema Operativo como son con una maquina virtual y ejecutando un CD que al momento de utilizarlo es como estar trabando con este Sistema Operativo
Por último lo que las versiones de Ubuntu va presentando en sus nuevas versiones son:
Son la interfaz grafica, más aplicaciones, aumento de comandos.

Fuente de Consulta al Ingeniero Juan Pablo Ureña.

LINUX VS MICROSOFT

Viernes, Mayo 16th, 2008

Lo que se ve para el futuro

Esta quizá sea la una de las batallas informáticas de nunca terminar, pero se ve un futuro prometedor para Linux.

En estos meses, Linux a sido el foco de informaciones, más allá del campo de la informática, para adentrarse, incluso, en una lucha de criterios ideológicos. Entre aquellos que se oponen al monopolio de Microsoft y el software libre representado por Linux.

Pero en cuanto a esta guerra veamos una breve descripción de lo que se ha hecho en estos últimos tiempos.

- Microsoft ha decidido comprar la licencia del sistema operativo Unix, propiedad de la   compañía SCO y rival de su propio sistema Windows. Con esta compra, Microsoft trata de evitar problemas en los tribunales.

- “El  pingüino perderá frente a Microsoft” sostienen una y otra vez, en los cinco continentes, los máximos ejecutivos de la compañía presidida por el multimillonario Bill Gates. El pingüino es el símbolo de Linux, principal competencia de Windows y que tiene en ascuas a la todavía monopólica empresa, creadora del popular sistema operativo (SO), que usan más de 350 millones de Pcs en todo el mundo. Fue IBM quien convirtió a Windows en el estándar de los  SO, cuando al lanzar el primer personal computer se decidió por el software (entonces DOS) de Microsoft, confiando en que la modesta empresa fundada por un inquieto Bill Gates, no supondría un problema para ellos. Craso error, el campo cedido por IBM se ha transformado a lo largo de la última década, en el mayor campo de batalla del software y un particular calvario para IBM.

- Así como Microsoft vive ese particular calvario con IBM debido a Linux, IBM ve venir las amenazas por parte de SCO (propietaria de Unix) que demandó al gigante azul por utilizar Linux en sus servidores. Según SCO, el código fuente de la creación de Torvalds contiene fragmentos copiados de Unix, por los que nadie pagó derechos.  Kieran O´Shaugnessy, alto ejecutivo de SCO sostiene que “Linux no existe, es simplemente una versión sin licencia de Unix. Nuestra compañía es víctima de una campaña de odio emprendida por los medios de comunicación e iniciada por IBM, como parte del litigio que enfrenta a nuestras compañías respecto del código fuente de Linux”.

- Varias cosas se han dicho para distorcionar la verdad, y para acabar con linux como:

-  MS descalifica Linux porque es un sistema operativo basado en Unix (sistema operativo con más de 30 años de historia) y no está diseñado “para soportar procesos paralelos simétricos, interfaces gráficos de usuario, entrada/salida asíncrona, y seguridad máxima”. Quizás convendría refrescar la memoria a alguno de los ingenieros de MS porque los primeros interfaces gráficos no provienen de MS, sino de Unix con el conocido sistema de ventanas X-Window. Es más, el primer intento de acercar los interfaces gráficos a los usuarios no técnicos proviene de Apple, con sus conocidos Mac, descaradamente copiados en las primeras versiones de Windows. En cuanto a los procesos paralelos, la mayoría de los super-ordenadores que trabajan con procesamiento paralelo, trabajan con sistemas operativos tipo-Unix. Y para cerrar, el tema de la seguridad. Provoca sorpresa que hablen de seguridad los creadores de los primeros sistemas operativos para los que los virus son el pan nuestro de cada día.

Ahora la dicisión la toma usted….

Por: Argenis Riofrío

COMANDOS BÁSICOS EN LINUX

Viernes, Mayo 16th, 2008

Cuando uno comienza a utilizar linux, por lo general no se sabe por donde comenzar, pues ahora espero que esto les sea de mucha ayuda para que ustedes tengan una breve pero muy buena ayuda para tener un buen comienzo.

1. hostname

Imprime el nombre del local host en donde estás trabajando.

2. whoami

Imprime el nombre de usuario en la pantalla, y puede resultar extremandamente útil cuando se cambia de usuario con su.

3. id username
Imprime el UID del usuario y su GID, effective ID y grupos suplementarios.

4. date

Imprime o cambia la fecha y la hora del sistema operativo. También se podria utilizar un servidor ntp para tener todos los sistemas con el mismo horario cada vez que se encienden.

5. time

Determina la cantidad de tiempo que le toma a un proceso completarse + otra información. El ejemplo que se dá es:

  • time ls

Para ver el tiempo que toma hacer un listado con ls.

6. who
Determina los usuarios logueados en el sistema.

7. rwho -a

Determina todos los usuarios logueados en la red. El servicio debe estar activado para ejecutar el comando o se debe ser usuario root.

8. finger user_name
Información del sistema sobre un usuario.

9. last
Muestra un listado de los últimos usuarios logueados en el sistema.

10. history | more
Muestra los últimos ( 1000 aprox ) comandos ejecutados desde la línea de comandos. El “| more” hace que pare la salida por pantalla cada vez que se completa la salida. Redireccionar un comando hacia “more” resulta sumamente útil para diferentes propósitos, como se explica, para listados largos y para otras actividades corrientes en cualquier Gnu/Linux o Un*x.
11. ps uptime
Muestra el tiempo que pasó desde el último reboot.

12. ps
Lista los procesos actualmente ejecutados por un usuario.

13. ps axu | more

Lista todos los procesos actualmente corriendo, incluso aquellos que no son controlados por la terminal, junto con el nombre del usuario que es dueño del proceso.

Agrego a lo anterior:

  • ps aux | grep nombredelprograma
  • kill -9 PID ( el pid correspondiente al nombre del programa que se busca terminar )

Para que se reinicie un proceso, útil parar reiniciar un servicio y que éste lea otra vez su archivo de configuración:

  • kill -hup PID
  • killall nombredelprograma

Este último comando termina todas las instancias de un programa indicando su nombre. No siempre funciona, y a veces es necesario recurrir a ps y grep para obtener el pid.

14. top

Muestra una lista de los procesos que estan corriendo actualmente, listados en orden según su consumo del cpu. Muy útil.

15. uname -a

Información sobre el servidor local. Versión del kernel, de Linux si es un sistema Gnu/Linux, o lo mismo para otros Un*x o BSD, además de información sobre el procesador.

16. free
Información sobre la memoria ( en kb ), libre y consumida, además de datos sobre la swap.

17. df -h

Muestra el espacio libre en Mb de una partición. El formato es df -h /dev/hda1 si queremos saber la cantidad de espacio en Mb libre en /dev/hda1. Agrego yo:

  • du -h

Para saber, también en Mb, la cantidad de Mb que ocupa un directorio o un archivo.

18. du / -bh | more
Similar a lo anterior, pero mas específico y detallado. No tan útil como el df -h archivo o directorio.

19. cat /proc/cpuinfo

Para ver ( cat ) el contenido de la entrada cpuinfo del pseudofilesystem proc, en éste caso con información sobre el cpu.

20. cat /proc/interrupts
Lista las interrupciones en uso.

21. cat /proc/version
Lista la versión de Linux.

22. cat /proc/filesystems
Muestra los filesystem habilitados en el kernel. Muy útil.

23. cat /etc/printcap
Muestra la configuración de las impresoras.

24. lsmod
Muestra los módulos cargados en el sistema.

25. echo $PATH
Muestra el contenido de la variable $PATH.

26. mount -o loop imagen.iso directorio/

Para montar una imagen iso en un directorio sin necesidad de grabarla a CD o DVD. Deben ser root.

27. cp -rv directorio/ /otrodirectorio/

Copia un directorio entero manteniendo los permisos, dueños, links, y cualquier cualquier otra característica del directorio.

28. netstat -putan | grep aplicación

Información sobre el estado de una aplicación servidor o que trabaja con tráfico de red. También deberán ser root.

29. w

Muestra quien está logueado y qué está haciendo

30. comando > archivo

Redirecciona el contenido de un comando hacia archivo, por ejemplo:

Por: Argenis Riofrío

Escribir en discos NTFS desde linux

Jueves, Mayo 8th, 2008

Navegando para aportar en el foro de sistemas operativos me encontré con esto me parece muy interesante, espero que les guste…

NTFS

NTFS-3G es un driver open source para el sistema de archivos NTFS en Linux el cual permite leer y escribir sobre las particiones que tengan este sistema de archivos. El driver ha lanzado su versión estable 1.0, por lo que ahora se puede escribir en particiones NTFS en forma transparente.

El propósito de este proyecto es brindar el soporte necesario para poder operar con dispositivos de hardware que utilizan NTFS como sistema de archivos.

Se puede descargar el código fuente desde el siguiente enlace : Descargar NTFS-3G y también encontrarás binarios disponibles para RedHat, Fedora, Gentoo, Ubuntu, Slackware, entre otros. También está disponible para Max OS X, FreeBSD, BeOS y Haiku.

Instalación

El proceso de instalación desde código fuente es bastante sencillo, sólo siga los siguientes pasos:

1. Descargue el código fuente del programa.
# wget -c http://www.ntfs-3g.org/ntfs-3g-1.0.tgz
2. Descomprimirlo
# tar -zxvf ntfs-3g-1.0.tgz
# cd ntfs-3g-1.0

3. Instalación (para el caso de ubuntu agregar sudo antes de cada comando):
# ./configure
# make
# make install

Cómo utilizarlo

Para poder utilizarlo sólo debe montarse la partición con NTFS:

4. Montar la partición:
# mount -t ntfs-3g /dev/hda1 /mnt/windows

Reemplazar hda1 con el nombre de la partición que tiene el sistema de archivos NTFS, /mnt/windows es un directorio que debe crear previamente.

fuente: ntfs-3g.org/

Sistema Operativo CentOS (linux)

Miércoles, Abril 16th, 2008

Dos de las partes más críticas de un kernel son el subsistema de memoria y el planificador. Esto es debido a que estas dos piezas influyen en el diseño y afectan al comportamiento de prácticamente todos los demás elementos del kernel y del sistema operativo. Esta es también la razón por la que es deseable que estas dos piezas tengan un funcionamiento absolutamente correcto y un comportamiento óptimo. El kernel de Linux se utiliza en todo tipo de máquinas, desde pequeños dispositivos empotrados hasta grandes ordenadores (mainframes).
Objetivos de la Planificación
El planificador de Linux intenta conseguir varios objetivos:
Ecuanimidad:
El planificador debería repartir la CPU entre todos los procesos de forma ecuánime. En el nuevo kernel se ha trabajado para garantizar un reparto imparcial del tiempo de CPU entre los procesos.

Volumen de producción y eficiencia:
El planificador debería intentar maximizar tanto el volumen de producción (throughput) como la eficiencia (utilización de la CPU). La forma habitual de incrementar la utilización de la CPU es incrementando el nivel de multiprogramación. Pero esto es beneficioso sólo hasta un cierto punto, a partir del cual se vuelve contraproducente.

Mínima Sobrecarga:
Un planificador debería estar en ejecución el menor tiempo posible. La latencia del planificador debería ser mínima. Pero esta es la parte peliaguda. Generalmente la planificación en sí se considera trabajo no útil. Ahora bien, si la planificación se hace de forma correcta aún a costa de consumir algo más de tiempo puede valer la pena. Pero ¿cómo decidimos cuál es el punto óptimo? La mayoría de los planificadores resuelven este problema utilizando políticas heurísticas.

Hacer cumplir una planificación basada en prioridades:
Planificación basada en prioridades significa que algunos procesos tienen precedencia sobre otros. Como mínimo, el planificador debe distinguir entre procesos limitados por E/S y procesos limitados por CPU. Además, debe implementarse algún mecanismo que tenga en cuenta la edad de los procesos para evitar que algunos no tengan acceso a la CPU (inanición). Linux respeta las prioridades y distingue entre varias categorías de procesos. El kernel de Linux distingue entre trabajos planificados vía batch y tareas interactivas. Todos ellos obtienen una cuota de CPU de acuerdo a sus prioridades. Probablemente alguien ha utilizado alguna vez el comando nice para cambiar la prioridad de un proceso.

Tiempo de turnaround, tiempo de espera:
El tiempo de turnaround es la suma del tiempo de servicio y el tiempo de espera en la cola de ejecución (ready). El planificador intenta reducir ambos.


Tiempo de respuesta y variabilidad:

El tiempo de respuesta de un programa debería ser lo menor posible. Además, otro factor importante, que a menudo se olvida, es la variabilidad entre los tiempos de respuesta. No es aceptable que el tiempo de respuesta medio sea bajo pero que algún usuario obtenga ocasionalmente un retraso de, digamos, diez segundos ejecutando un programa interactivo.

Miscelánea:

El planificador intenta también cumplir otros objetivos como la predictibilidad. El comportamiento del planificador debería ser predecible para un conjunto dado de procesos con prioridades asignadas. El rendimiento del planificador debe decaer suavemente al aumentar la carga. Esto es especialmente importante en el caso de Linux al ser muy popular como servidor, ya que los servidores tienden a resultar sobrecargados durante los picos de mayor tráfico.
Linux está basado en la planificación tradicional de Unix añadiendo 2 clases de prioridad para procesos de tiempo real flexibles. Las tres clases de prioridad de Linux son las siguientes:

SCHED_FIFO: hilos de tiempo real con planificación FIFO.

SCHED_RR: hilos de tiempo real con planificación por turno rotatorio.

SCHED_OTHER: hilos que no son de tiempo real y otros.

Dentro de cada clase se utilizan múltiples prioridades, siendo las prioridades de las clases de tiempo real mayores que la de la clase SCHED_OTHER. Para los hilos FIFO, se aplican las siguientes reglas:

1. El sistema no interrumpe la ejecución de un hilo FIFO, excepto en los siguientes casos:

a) Pasa a estar listo otro hilo FIFO de mayor prioridad.

b) El hilo FIFO en ejecución se bloquea a la espera de un evento, como una E/S.

c) El hilo FIFO en ejecución abandona el procesador como resultado de la ejecución de la primitiva sched_yield.

2. Cuando se interrumpe un hilo FIFO en ejecución, pasa a la cola asociada a su prioridad.
3. Cuando un hilo FIFO pasa a listo y tiene mayor prioridad que el hilo que está en ejecución, se expulsa al hilo en ejecución y pasa a ejecutar el hilo de mayor prioridad. Si más de un hilo tiene esta mayor prioridad, se escoge al que lleva más tiempo esperado.

La política SCHED_RR es similar a la SCHED_FIFO, excepto por el uso de un cuanto de tiempo asociada a cada hilo. Cuando un hilo SCHED_RR ha consumido su cuanto de tiempo, pasa a suspendido y se escoge un hilo de tiempo real con una prioridad igual o mayor.

El planificador de Linux necesita un tiempo constante para planificar los procesos de la cola de ejecución (ready). En consecuencia, decimos que tiene complejidad O(1) . No importa cuál sea el número de procesos activos en el sistema Linux, el planificador siempre tarda un tiempo constante para planificar su ejecución. Todas las “partes” - activación, selección del siguiente proceso a ejecutar, conmutación del contexto y sobrecarga de la interrupción del temporizador - del kernel de Linux actual tienen complejidad O(1). Por lo tanto, el nuevo planificador en su conjunto tiene complejidad O(1).

Mejor Soporte para SMP y más escalable
Como hemos mencionado en la introducción, el kernel de Linux puede ejecutarse en casi cualquier cosa desde relojes de pulsera a superordenadores. Los planificadores anteriores presentaban algunos problemas de escalabilidad. Algunos de estos problemas se resolvieron modificando el kernel específicamente para la aplicación y la arquitectura objetivos. Sin embargo, el diseño central del planificador no era muy escalable. El nuevo planificador es mucho más escalable y adecuado para SMP (Symmetric Multi-Processing: Multi-Procesamiento Simétrico). Ahora, el planificador se comporta mucho mejor que antes en sistemas SMP. Uno de los objetivos establecidos por Ingo Molnar, autor del planificador O(1), es que en SMP los procesadores no deberían estar inactivos cuando haya trabajo por hacer. Asimismo, se debería tener cuidado de que los procesos no se planifiquen para ejecución en procesadores diferentes ocasionalmente. De esta forma se evita la sobrecarga debida al relleno de la cache con los datos necesarios cada vez.

Planificación batch de trabajos

Esta no es exactamente una característica nueva, pero hay algunos parches que se pueden aplicar para añadir soporte de planificación batch. Los kernels anteriores también soportaban planificación batch en alguna medida. En la actualidad, la planificación batch se realiza utilizando niveles de prioridad. El kernel de Linux utiliza unos cuarenta niveles nice (si bien todos ellos son agrupados en unos cinco niveles de prioridad). Normalmente, los procesos planificados batch hacen uso de la CPU cuando no hay en ejecución muchos procesos interactivos ni procesos limitados por CPU, los cuales tienen mayor prioridad. Los procesos planificados batch obtienen cuantos temporales más largos que los procesos normales. De esta forma también se minimiza el efecto del intercambio frecuente de datos hacia y desde la cache, mejorando, por tanto, el comportamiento de los trabajos batch.

Mejor comportamiento de los trabajos interactivos
Entre los mayores avances del nuevo planificador se encuentran la detección de tareas interactivas y la mejora de su comportamiento. La detección de los trabajos interactivos se realiza en fragmentos de código desacoplados de los que realizan otras tareas de planificación como la gestión de los cuantos temporales. Los trabajos interactivos se detectan con la ayuda de estadísticas de uso. Esto significa que las tareas interactivas tienen buenos tiempos de respuesta bajo cargas de trabajo pesadas, y que los procesos ávidos de CPU no pueden monopolizar el tiempo de CPU. El nuevo planificador detecta las tareas interactivas y les otorga mayor precedencia que a otras tareas. Aún así, una tarea interactiva es planificada con otras tareas interactivas utilizando planificación Round-Robin. Esto es muy adecuado para usuarios de estaciones de trabajo ya que no apreciarán incrementos en los tiempos de respuesta cuando arrancan un trabajo con gran consumo de CPU como, por ejemplo, la codificación de canciones en formato ogg. Hay planes para combinar código O(1) y código expropiativo para mejorar los tiempos de respuesta de las tareas interactivas.

Mayor escalabilidad y soporte para más arquitecturas
Gracias al rediseño a que ha sido sometido, el nuevo planificador es más fácilmente escalable a otras arquitecturas como NUMA (Non-Uniform Memory Access: Acceso a Memoria No-Uniforme) y SMT. La arquitectura NUMA se utiliza en algunos servidores de altas prestaciones y supercomputadores. También se está trabajando en SMT (Symmetric Multi-Threading). SMT es conocido también por un nombre más popular: HyperThreading. Una de las razones es que ahora cada CPU tiene su propia cola de ejecución. Sólo la sub-parte de balanceo de carga tiene una visión “global” del sistema. De esta forma, las modificaciones para una arquitectura determinada tienen que hacerse, principalmente, en la sub-parte de balanceo de carga. También se ha publicado un parche para NUMA recientemente. De hecho, se ha incorporado en Linux 2.5.59. Los procesadores SMT implementan dos (o más) CPUs virtuales en el mismo procesador físico - un procesador “lógico” puede ejecutar código mientras el otro espera por acceso a memoria. Puede interpretarse SMT como una clase de sistema NUMA, puesto que los procesadores hermanos comparten la cache y, por lo tanto, acceden más rápidamente a aquellas direcciones de memoria a las que han accedido recientemente cualquiera de los otros. Se está trabajando también en SMT, pero el nuevo planificador O(1) maneja SMT bastante bien incluso sin ninguna modificación. Recientemente se ha liberado un parche para SMT. Aunque la arquitectura NUMA muestra cierto parecido con la arquitectura SMT, el planificador Linux los trata de forma diferente.

Miscelánea
El planificador da mayor prioridad a los hijos generados con fork() que al padre que los ha generado. Potencialmente, los servidores que utilizan la llamada fork para dar servicio a las peticiones podrían beneficiarse de esta característica. También podría ser útil para las aplicaciones GUI. También hay disponible en el kernel algo de planificación de tiempo real (basada en prioridades).

INTEGRANTES

CABRERA KARLA
PULLA CINTHIA
RAMOS JAMMIL