• Manejo de Sistemas Operativos

    Módulo Profesional

  • Sistemas Operativos Monousuario

    Unidad 1

  • Sistemas Operativos Multiusuario

    Unidad 2

jueves, 27 de octubre de 2016

2.2 Asignación de sistemas de archivos

Todos los archivos y los directorios, excepto el directorio raíz de cada unidad deben tener un nombre. A continuación se resumen las reglas para nombrar a los archivos y directorios:

  •  Pueden tener un máximo de ocho caracteres. Además, pueden incluir una extensión de hasta tres caracteres de longitud.
  • No se distingue entre mayúsculas y minúsculas. Es decir que, al escribir un nombre, no importa si usa letras mayúsculas o minúsculas.
  • Sólo pueden tener letras de la A a la Z, números del 0 al 9 y los carac teres especiales siguientes: carácter de subrayado (_), símbolo de intercalación (^), símbolo de moneda ($), tilde (~), signo de admiración (!), signo de número (#), signo de porcentaje (%), símbolo de unión (&), guión (-), llaves ({}), arroba (@), comilla sencilla (`), apóstrofo (‘) y paréntesis (). No se acepta ningún otro carácter.
  • No pueden contener espacios, comas, barras diagonales inversas o puntos (excepto el punto que separa el nombre de la extensión)
  • No pueden tener el mismo nombre que otro archivo o subdirectorio del mismo directorio

2.2 Formatear discos

Los discos se pueden formatear, crear o cambiar de tamaño con toda comodidad a golpe de ratón desde programas como Gparted, pero en ocasiones puedes necesitar hacerlo desde la consola. Ya sea porque tienes que administrar el equipo de forma remota, porque el sistema se ha ido al traste o porque eres un friki consolero.

En este pequeño tutorial vamos a ver como particionar, formatear y montar un disco, desde la consola.


Lo primero, es tener muy claro que todo esto debemos hacerlo como root, puesto que vamos a realizar operaciones administrativas. Puedes liarte a poner sudo antes de cada orden o puedes convertirte en el usuario root poniendo

·                     sudo su



Ahora que acabamos de convertirnos en el rey de la creación dentro de nuestro Linux, vamos a comprobar que discos hay instalados en el sistema. Uno de ellos será el objetivo de nuestro trabajo.

·                     fdisk -l



Cuidado en este paso, tenemos que fijarnos muy bien en cuál es el disco con el que queremos trabajar. No hay nada peor que darte cuenta de que estas trabajando con el disco donde guardas tus fotos justo cuando acabas de eliminar la partición o de formatearlo. Debemos fijarnos en el tamaño del disco, en la etiqueta, en si ya tiene particiones...

Voy a suponer que el disco es sdb. Primero porque sé que el espacio coincide con los 5 Gb que yo sabía que tiene el nuevo disco, y segundo, porque carece de particiones. Aunque lo normal es que el disco venga formateado son algún sistema propio de los chicos de Microsoft, como NTFS o Fat32.

Como el disco no tiene partición, es imposible que este montado. Pero puede pasar que si la tuviera y Linux lo haya montado y esté listo para usar. Por si acaso, lo que voy ha hacer es desmontarlo. Si no estaba montado recibiré un mensaje de error, pero no importa

·                     umount /dev/sdb



Y vamos a ponernos al trabajo. Vamos a abrir fdisk

·                     fdisk /dev/sdb

Nos pregunta que deseamos hacer. Nosotros queremos primero crear una partición, así que escribiremos N (de New) y pulsaremos Intro. Nos pregunta que tipo de partición. SeleccionamosP (primary) para una partición primaria y pulsamos Intro. Y cuando nos pida el número de partición, como no hay ninguna, seleccionamos 1.




Ahora nos va a preguntar dónde empieza y donde termina la partición que estamos creando. En mi caso, vamos a utilizar todo el disco, así que voy a tomar los valores por defecto que me ofrecen fdisk. Si no quieres ocupar todo el disco, tendrás que decir donde empieza y donde acaba. Lo recomendable es que empiece en el valor predeterminado, para que no quede espacio vacío antes de la partición y que como segundo valor introduzcas el tamaño que quieres obtener, en kbytes, megas o gigas.




Ya tenemos determinado el tamaño de la partición, pero habrá que decir que tipo de partición es. Para ello escribimos T, pulsamos Intro, tecleamos 83 y volvemos a pulsar Intro.  Con esto indicamos que queremos una partición tipo 83, que es la de Linux. Puedes ver todos los tipos posibles pulsando L.




Y ya que hemos definido nuestra partición, llega el momento de llevarla a la realidad. Escribimos W, pulsamos Intro y todo lo que hemos definido se escribirá en el disco.


Ya hemos creado la partición, pero vacía. Es como si hubiéramos creado un armario, pero sin estantes ni cajones. El siguiente paso, formatearla. Es decir, vamos a crear las estanterías y los cajones

Podemos darle muchos formatos, por ejemplo NTFS. Pero lo lógico sería usar un formato propio de Linux, que nos dé el máximo rendimiento y seguridad, por lo que yo usaré EXT4.

·                     mkfs.ext4 /dev/sdb1



Ya tenemos nuestro disco listo para usar. Solo nos queda decidir “donde lo vamos a colocar”. Yo por ejemplo, voy a crear una carpeta que se llame /media/datos para colocar alli el disco

·                     mkdir /media/datos

Y finalmente, lo colocaremos allí
·                     mount /dev/sdb1 /media/datos

Y está listo para usar. Si se quiere, se puede editar el fichero /etc/fstab para que se monte automáticamente cada vez que inicies el equipo. Copia la siguiente linea al finalmente:


/dev/sdb1 /media/datos ext4 defaults 1 2

2.2 Particiones del disco duro

Particionar un disco es como dividirlo en discos más pequeños contenidos dentro de la misma carcasa.

Las particiones pueden ser de dos tipos: primarias ó lógicas, las particiones lógicas se crean dentro de una partición primaria especial llamada extendida.

Como mínimo en un disco debe de haber una partición primaria y como máximo puede haber cuatro particiones primarias o tres primarias y una extendida, no puede haber más de una partición extendida en un mismo disco duro.

Dentro de una partición extendida puede haber todas las particiones lógicas que queramos. Cada partición puede contener un sistema de archivos diferentes.

Un sistema de archivos establece los mecanismos para acceder a los datos que contiene y permite o no el acceso a dichos datos en determinadas circunstancias y en caso de alguna inconsistencia posibilita medios para su restauración.

Existen diferentes sistemas de archivos y cada sistema operativo soporta diferentes sistemas de ficheros, algunos de ellos son los siguientes:

  • Ext2 el primer sistema de archivos diseñado expresamente para Linux.
  • Ext3 versión mejorada de Ext2, ampliamente utilizada en distribuciones Linux
  • Ext4nuevo sistema de ficheros para Linux evolucionado de Ext3 algunas de sus ventajas con respecto a este último son: 
  • Aumento del tamaño del sistema de ficheros a 1 Exabay = 2^20 Terabyte y del tamaño máximo por archivo (16 Tb).
  •  Número ilimitado de directorios frente a los 32.000 de Ext3
  • Mayor velocidad en la creación y borrado de ficheros
  • XFS Implementado para sistemas Unix, rápido acceso para grandes cantidades de datos y altas velocidades, pero lento en ficheros pequeños. Se utiliza en grandes servidores y donde se maneje mucha información.
  • ReiserFS  Sistema de archivos diseñado e implementado por la empresa Namesys, liderado por Hans Reiser. Es soportado por Linux y otros sistemas operativos (algunos a través de implementaciones muy inestables).
  • Fat16/Fat32 Sistemas Dos/Windows 95, Windows 98, este sistema de archivos produce una gran fragmentación del disco.
  • NTFS sistema de archivos implementado para los sistemas operativos  Windows Xp/2000/2003 server y Vista.


A la acción de crear un sistema de ficheros dentro de una partición se le llama también formatear la partición.

La nomenclatura para identificar las particiones es diferente en Windows y en Linux. En Windows las unidades se identifican con letras, por ejemplo:

Primer disco duro (IDE, SCSI ó SATA)

C: (primera partición del primer disco duro IDE)
D: (segunda partición del primer disco duro IDE)

Segundo disco duro (IDE ó SCSI ó SATA)

E: (primera partición del segundo disco duro IDE)
F: (segunda partición del segundo disco duro IDE)

En Linux se representan de la siguiente manera:

  • hda (primer disco duro IDE).
  • hda1 (primera partición del primer disco duro IDE).
  • hda2 (segunda partición del primer disco duro IDE).
  • hda5 (primera partición lógica de una partición extendida del primer disco duro IDE)
  • hdb (segundo disco duro IDE).
  • hdb1 (primera partición del segundo disco duro IDE).
  • hdb2 (segunda partición del segundo disco duro IDE).
  • hdb5 (primera partición lógica de una partición extendida del segundo disco duro IDE)


Discos SCSI ó SATA.

  • sda (primer disco duro SCSI)
  • sda1 (primera partición del primer disco SCSI).
  • sda2 (segunda partición del primer disco SCSI).
  • sda5 (primera partición lógica del primer disco duro SCSI)
  • sdb (segundo disco duro SCSI)



GParted es un editor de particiones para Linux con el que podemos crear, borrar y redimensionar particiones. También podemos crear el sistema de ficheros que tendrá cada partición. Con la versión actual de Gparted 0.4.3 podemos crear los siguientes sistemas de ficheros:

GParted Es muy fácil e intuitivo de usar, muchas distribuciones Linux lo incluyen en su live CD, entre ellas Ubuntu.

Una vez que tenemos creadas nuestras particiones en nuestro disco y formateadas con el sistema de archivos que van a utilizar, para poder utilizar dichas particiones en Linux, tenemos que hacer un paso más, que es crear como mínimo el punto de montaje para el directorio raíz (/). Linux utiliza una estructura de directorios jerarquizada en forma de árbol invertido en donde todo es tratado como si fuera un archivo y para poder acceder a él debe estar acoplado (montado) dentro de esa estructura de directorios encabezada por el directorio raíz.

La interfaz gráfica de instalación de cualquier “distro” de linux nos permite montar el directorio raíz del sistema donde se instalarán los archivos más importantes del sistema operativo, pero también podemos crear otros puntos de montaje como /home (que es como la carpeta  Mis documentos de Windows pero mucho más potente) en otra partición diferente, de esta manera si formateamos la partición donde está el sistema operativo, mis documentos (tú /home) quedará a salvo y tus datos no se perderán

2.2 El archivo de configuración: fstab

Fstab significa: File System Table (Tabla de Sistemas de ficheros). Se encuentra en el directorio /etc/fstab.

Cuando encendemos nuestro PC con Linux, el sistema operativo se inicia, en primer lugar montando modo solo lectura el sistema de ficheros raíz ( / ), para los procesos estándar, y luego comprueba consistencia; luego, en segundo lugar los desmonta y vuelve a montar, pero esta vez en modo lectura escritura, y empieza a verificar la existencia y consistencia de todos los demás sistemas de ficheros usaran.

La lista de sistemas de ficheros disponibles en nuestro Pc, está contenida en el fichero /etc/fstab.

El archivo /etc/fstab

Para definir montajes automáticos de unidades al arranque o definir de forma permanente cuál será el punto de montaje asociado a determinada unidad/partición utilizaremos las entradas de el archivo fstab el cual, al ser un archivo de configuración global, se encuentra en el directorio /etc
En este archivo se crea una linea (entrada) por cada punto de montaje/unidad-partición a definir en las cuales se deben especificar seis datos

Unidad<Partición>
Punto_de_montaje
Sistema de archivos
Opciones del sistema de archivo
Manejo de errores
Chequeos

Ejemplo /dev/hda1 / reiserfs defaults,notail 0 1

  •   /dev/hda1: Es el dispositivo o partición donde se encuentra el medio de datos físico
  • /: El punto de montaje, en este caso es la raíz, pero podría ser cualquier directorio dentro de esta, o dentro de otro punto de montaje inclusive.
  • reiserfs: Es el sistema de archivos. En este caso, reiser, aunque podría ser ext2, ext3, xfs, smbfs, jfs, ufs, iso9660 (cdrom y dvd), vfat y ntfs (para hasefroch), y en general cualquier sistema que soporte nuestro núcleo.
  • defaults, notail: Las opciones del sistema de archivos, hay muchas.
  • 0: Los errores en tiempo de montaje que ha reportado el sistema de archivos. Este dato no lo manipulamos nosotros, sino que lo pone el sistema. Por defecto, manualmente deberemos poner 0
  • 1: Las "pasadas" o checks sufridas para comprobar su integridad al desmontar incorrectamente o después de X montajes. Tiene la misma política que el anterior


Algunas de las opciones típicas a la hora de montar son las siguientes:

  • defaults: Opciones pre-designadas, como por ejemplo "rw"
  •  rw: Read-Write, montar la partición para que sea posible escribir en ella
  • ro: Read-Only, lo propio pero para que no se pueda escribir
  • sw: Cuando una partición actuará de intercambio (Swap), se deja esto
  • noexec: Impide la ejecución de cualquier archivo contenido en ese sistema de archivos, es útil por ejemplo si tenemos varios usuarios y no queremos que ejecuten sus "cosas"
  • nodev: Para impedir que puedan usarse nodos de dispositivo en el sistema de archivos
  • username=: Generalmente, para smbfs (Samba), para enviar el nombre de usuario correspondiente al servidor donde esté la "unidad" compartida
  • password=: El complementario del anterior.
  • auto: Se montará la partición al arrancar
  • noauto: No se montará al arrancar. Típico para cdroms y demás, que no necesitan ser montados al iniciar el sistema
  • nosuid: No permitir el uso del bit "suid".
  • user: Permitir a un usuario común montar o desmontar el dispositivo. Útil para cdroms, disquetes, etc
  • uid=X (o gid=X): El UID o GID del usuario y/o grupo que tendrá el control sobre los archivos
  • usrquota, grpquota: Las quotas de espacio de las que dispondrán los usuarios, ver man quotatool


Existen muchas más opciones, para más información podemos recurrir al manual de fstab (man fstab).

Al añadir una partición a fstab ya no será necesario dar como argumento su punto de montaje al momento de usar mount

Así, si en fstab definimos a /mnt/disco como de montaje de /dev/sdb1 ahora se podrá montar con mount /dev/sdb1


Además, si esta establecida la opción auto el disco se montará automáticamente en cada arranque.

2.2 Los comandos: mount y umount

El comando mount

El comando mount monta unidades para lo cual ser debe especificar el dispositivo (y la partición a montar si corresponde) y su punto de montaje:

mount dispositivo punto_de_montaje


Ejemplo_1: Montaje de la primera partición de un disco sata

#mount /dev/sda1 /mnt

Ejemplo_1: Montaje de la primera partición del disco ide esclavo para utilizarlo como directorio /home

#mount /dev/hdb1 /home

Normalmente el tipo de sistema de archivo de la partición a montar es reconocido automaticamente, si no ocurre asi se le debe señalar como opción.

mount -t tipo_de_sistema_de_archivos /dev/unidad<partición> /punto_de_montaje

El comando mount también tiene una muy interesante funcionalidad, que es el acceso a unidades a imágenes de disco. Así por ejemplo si tenemos un archivo llamado de imagen de CD o DVD llamado imagen.iso y queremos acceder a su contenido sin tener que grabar un disco, entonces basta que lo montemos con mount y las siguientes opciones:

mount -o loop imagen.iso /punto_de_montaje

Nota: Si la carpeta que utilizamos como punto de montaje tiene contenido antes de montar la unidad, este no se eliminará, pero permanecerá inaccesible hasta que desmontemos la unidad montada en ella.


Existen muchisimas más opciones, para más información podemos recurrir al manual de mount (man mount)

2.2 Manejo del sistema de archivos, discos y otros dispositivos


Linux soporta una gran cantidad de tipos diferentes de sistemas de archivos. Para nuestros propósitos los más importantes son:

Minix

El más antiguo y supuestamente el más fiable, pero muy limitado en características (algunas marcas de tiempo se pierden, 30 caracteres de longitud máxima para los nombres de los archivos) y restringido en capacidad (como mucho 64 MB de tamaño por sistema de archivos).

Xia

Una versión modificada del sistema de archivos minix que eleva los límites de nombres de archivos y tamaño del sistema de archivos, pero por otro lado no introduce características nuevas. No es muy popular, pero se ha verificado que funciona muy bien.

ext3

El sistema de archivos ext3 posee todas las propiedades del sistema de archivos ext2. La diferencia es que se ha añadido una bitácora (journaling). Esto mejora el rendimiento y el tiempo de recuperación en el caso de una caída del sistema. Se ha vuelto más popular que el ext2.

ext2

El más sistema de archivos nativo Linux que posee la mayor cantidad de características. Está diseñado para ser compatible con diseños futuros, así que las nuevas versiones del código del sistema de archivos no necesitará rehacer los sistemas de archivos existentes.

ext

Una versión antigua de ext2 que no es compatible en el futuro. Casi nunca se utiliza en instalaciones nuevas, y la mayoría de la gente que lo utilizaba han migrado sus sistemas de archivos al tipo ext2.

reiserfs

Un sistema de archivos más robusto. Se utiliza una bitácora que provoca que la pérdida de datos sea menos frecuente. La bitácora es un mecanismo que lleva un registro por cada transacción que se va a realizar, o que ha sido realizada. Esto permite al sistema de archivos reconstruirse por sí sólo fácilmente tras un daño ocasionado, por ejemplo, por cierres del sistema inadecuados.

Adicionalmente, existe soporte para sistemas de archivos adicionales ajenos, para facilitar el intercambio de archivos con otros sistemas operativos. Estos sistemas de archivos ajenos funcionan exactamente como los propios, excepto que pueden carecer de características usuales UNIX , o tienen curiosas limitaciones, u otros inconvenientes.


msdos

Compatibilidad con el sistema de archivos FAT de MS-DOS (y OS/2 y Windows NT).

umsdos

Extiende el dispositivo de sistema de archivos msdos en Linux para obtener nombres de archivo largos, propietarios, permisos, enlaces, y archivos de dispositivo. Esto permite que un sistema de archivos msdos normal pueda utilizarse como si fuera de Linux, eliminando por tanto la necesidad de una partición independiente para Linux.

vfat

Esta es una extensión del sistema de archivos FAT conocida como FAT32. Soporta tamaños de discos mayores que FAT. La mayoría de discos con MS Windows son vfat.

iso9660

El sistema de archivos estándar del CD-ROM; la extensión popular Rock Ridge del estándar del CD-ROM que permite nombres de archivo más largos se soporta de forma automática.

nfs

Un sistema de archivos de red que permite compartir un sistema de archivos entre varios ordenadores para permitir fácil acceso a los archivos de todos ellos.

smbfs

Un sistema de archivos que permite compartir un sistema de archivos con un ordenador MS Windows. Es compatible con los protocolos para compartir archivos de Windows.

hpfs

El sistema de archivos de OS/2.

sysv

EL sistema de archivos de Xenix, Coherent y SystemV/386..

La elección del sistema de archivos a utilizar depende de la situación. Si la compatibilidad o alguna otra razón hacen necesario uno de los sistemas de archivos no nativos, entonces hay que utilizar ése. Si se puede elegir libremente, entonces lo más inteligente sería utilizar ext3, puesto que tiene todas las características de ext2, y es un sistema de archivos con bitácora.

Existe también el sistema de archivos proc, generalmente accesible desde el directorio /proc, que en realidad no es un sistema de archivos, aun cuando lo parece. El sistema de archivos proc facilita acceder a ciertas estructura de datos del núcleo, como la lista de procesos (de ahí el nombre). Hace que estas estructuras de datos parezcan un sistema de archivos, y que el sistema de archivos pueda ser manipulado con las herramientas de archivos habituales. Por ejemplo, para obtener una lista de todos los procesos se puede utilizar el comando

$ ls -l /proc
total 0
dr-xr-xr-x         4 root              root                 0 Jan 31 20:37 1
dr-xr-xr-x         4 liw               users              0 Jan 31 20:37 63
dr-xr-xr-x         4 liw               users              0 Jan 31 20:37 94
dr-xr-xr-x         4 liw               users              0 Jan 31 20:37 95
dr-xr-xr-x         4 root              users              0 Jan 31 20:37 98
dr-xr-xr-x         4 liw               users              0 Jan 31 20:37 99
-r--r--r--           1 root              root                 0 Jan 31 20:37 devices
-r--r--r--           1 root              root                 0 Jan 31 20:37 dma
-r--r--r--           1 root              root                 0 Jan 31 20:37 filesystems
-r--r--r--           1 root              root                 0 Jan 31 20:37 interrupts
-r--------           1 root              root                 8654848 Jan 31 20:37 kcore
-r--r--r--           1 root              root                 0 Jan 31 11:50 kmsg
-r--r--r--           1 root              root                 0 Jan 31 20:37 ksyms
-r--r--r--           1 root              root                 0 Jan 31 11:51 loadavg
-r--r--r--           1 root              root                 0 Jan 31 20:37 meminfo
-r--r--r--           1 root              root                 0 Jan 31 20:37 modules
dr-xr-xr-x         2 root              root                 0 Jan 31 20:37 net
dr-xr-xr-x         4 root              root                 0 Jan 31 20:37 self
-r--r--r--           1 root              root                 0 Jan 31 20:37 stat
-r--r--r--           1 root              root                 0 Jan 31 20:37 uptime
-r--r--r--           1 root              root                 0 Jan 31 20:37
version
$

(Puede haber no obstante algunos archivos adicionales que no correspondan con ningún proceso. El ejemplo anterior se ha recortado.)


Tenga en cuenta que aunque se llame sistema de archivos, ninguna parte del sistema de archivos proc toca el disco. Existe tan sólo en la imaginación del núcleo. Cuando alguien intenta echar un vistazo a alguna parte del sistema de archivos proc, el núcleo hace que parezca como si esa parte existiera en alguna parte, aunque no lo haga. Así, aunque exista un archivo /proc/kcore de muchos megabytes, no quita espacio del disco.

2.2 Tareas programadas

Linux tiene un demonio cron que normalmente se ejecuta en el arranque de linux. Este demonio despierta cada minuto, mira si tiene que ejecutar alguna tarea, la ejecuta y se duerme. Si queremos que algún comando o tarea se ejecute automáticamente cada cierto tiempo, la forma de hacerlo es indicándole a este demonio que lo haga.

Hay varios ficheros en el sistema operativo y para cada ususario en el que este demonio busca tareas para ejecutar. Uno de ellos es /etc/crontab. El formato de este fichero es minuto hora dia_del_mes mes dia_de_la_semana usuario comando
Donde minuto, hora, dia_del_mes, mes y dia_de_la_semana son lo que parecen, a qué hora, minut, etc se debe ejecutar el comando. En estos campos se pueden poner comodines y hay varios formatos. Por ejemplo:

un * en minuto es en todos los minutos.
* 4 * * *    significa todos los minutos de las cuatro de la madrugada, todos los días, todos los meses. Es decir, se ejecuta 60 veces a las 4:00 am, 4:01 am, ... 4:59 am y ya no más hasta el día siguiente.

También se pueden poner rangos o valores discretos, así


10,20,30 * * * * significa todos los días a todas las horas en los minutos 10, 20 y 30, es decir, a las 0:10 am, 0:20 am, 0:30 am, 1:10 am, 1:20 am,  etc, etc.
*/15 10-14 * * * significa cada 15 minutos entre las 10 am y las 2 pm (las 14).
y así un largo etcétera.

Un ejemplo concreto de lo que puede haber en un crontab

0 0 * * 6 root rm -rf /home/usuario/temp borraría todos los sábados (día 6) a las 0:00 horas el directorio /home/usuario/tmp.

Un usuario puede crear sus propias tareas y añadirlas a cron. Para ello, en cualquier ubicación crea un fichero similar a crontab con el nombre que quiera y sin poner el usuario. Por ejemplo

0 11 * * 1-5 avisameParaElCafe.sh ejecutaría todos los días de lunes a viernes (1-5) a las 11:00 am el comando "avisameParaElCafe.h". Si este fichero se llama mi_cron, entonces para añadir estas tareas al demonio de cron hay que ejecutar el comando


crontab mi_cron por supuesto, suponiendo que el usuario tiene permisos para hacer esto.