% Linux Installation and Getting Started    -*- TeX -*-
% filesystem.tex 
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Este fichero es de distribuci\'on libre, pero debe mantenerse esta 
% informaci\'on de Copyright en todas las copias, y debe distribuirse solo como
% parte de "Instalaci\'on y Primeros Pasos en Linux". El uso de este fichero esta
% cubierto por el Copyright del documento completo, en el fichero "copyright.tex"
% Copyright (c) 1995 por Gerardo Izquierdo para la versi\'on al Castellano
% $Log: filesystem.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:12  rcamus
% Primera beta publica
%
%


\section{Gestionando Sistemas de Ficheros}\label{sec-manage-fs}
\index{sistemas de ficheros|(}
Otra tarea del administrador de sistemas es el cuidado de los sistemas de
ficheros. Mucho de \'este trabajo se basa en comprobaciones peri\'odicas del
sistema de ficheros en busca de ficheros da\~nados o corrompidos; muchos
sistemas comprueban autom\'aticamente los sistemas de ficheros en tiempo de
arranque.

\subsection{Montando sistemas de ficheros}
\index{sistemas de ficheros!montando|(}
Para empezar, algunos conceptos acerca de sistemas de ficheros. Antes de que un
sistema de ficheros sea accesible al sistema, debe ser {\bf montado} en 
alg\'un directorio. Por ejemplo, si se tiene un sistema de ficheros en un 
disquete, se debe montar bajo alg\'un directorio, digamos {\tt /mnt}, para poder
acceder a los ficheros que contiene (v\'ease la secci\'on~\ref{sec-floppy}).
Tras montar el sistema de ficheros, todos los ficheros en dicho sistema
aparecen en ese directorio. Tras desmontar el sistema de ficheros, el 
directorio (en este caso, {\tt /mnt}) estar\'a vac\'\i o.

Lo mismo es v\'alido para los sistemas de ficheros del disco duro. El sistema
monta autom\'aticamente los sistemas de ficheros del disco duro en tiempo de
arranque. El as\'{\i} llamado ``sistema de ficheros ra\'\i z'' es montado 
en el directorio {\tt /}. Si se tiene un sistema de ficheros separado para 
{\tt /usr}, por ejemplo, se monta en {\tt /usr}. Si s\'olo se tiene un
sistema de ficheros ra\'\i z, todos los ficheros (incluyendo los de {\tt 
/usr}) existen en ese sistema de ficheros.

\index{mount@{\tt mount}}
El comando {\tt mount} se utiliza para montar un sistema de ficheros. El
comando
\begin{tscreen}
mount -av
\end{tscreen}
se ejecuta desde el fichero {\tt /etc/rc} (que es el fichero de 
inicializaci\'on del sistema, ejecutado en tiempo de arranque; v\'ease la 
secci\'on~\ref{sec-rc}). El comando {\tt mount -av} obtiene informaci\'on de
los sistemas de ficheros y puntos de montaje del fichero {\tt /etc/fstab}.
Este es un ejemplo de fichero {\tt fstab}:
\index{sistemas de ficheros!/etc/fstab@{\tt /etc/fstab}}
\index{/etc/fstab@{\tt /etc/fstab}}
\begin{tscreen}\begin{verbatim}
# dispositivo  directorio     tipo     opciones
/dev/hda2       /             ext2     defaults
/dev/hda3       /usr          ext2     defaults
/dev/hda4       none          swap     sw
/proc           /proc         proc     none
\end{verbatim}\end{tscreen}

El primer campo es el dispositivo ---el nombre de la partici\'on a montar. El
segundo campo es el punto de montaje. El tercero es el tipo de sistema de
ficheros ---como puede ser {\tt ext2} (para ext2fs) o {\tt minix} (para
sistemas de ficheros Minix). La~tabla~\ref{table-fs-types} lista los 
distintos tipos de sistemas de ficheros disponibles en Linux.\footnote{Esta 
tabla es v\'alida a la versi\'on de n\'ucleo 1.1.37.} Puede que no todos 
\'estos 
tipos de sistemas de ficheros est\'en disponibles en su sistema; el 
n\'ucleo debe tener soporte para ellos compilado en \'el. V\'ease 
secci\'on~\ref{sec-sysadm-upgrade} para informaci\'on sobre c\'omo 
construir un n\'ucleo.
\begin{table}[ht]\begin{center}
\small\begin{tabular}{lll}
\hline
Sistema de ficheros     & Nombre de tipo &  Comentarios \\
\hline
Second Extended Filesystem & {\tt ext2} & Sistema de ficheros mas com\'un en Linux. \\
Extended Filesystem     & {\tt ext}     & Reemplazado por {\tt ext2}.\\
Minix Filesystem        & {\tt minix}   & Sistema de ficheros Minix original; raras veces utilizado.\\
Xia Filesystem          & {\tt xia}     & Como {\tt ext2}, pero raras veces utilizado.\\
UMSDOS Filesystem       & {\tt umsdos}  & Utilizado para instalar Linux en una partici\'on MS-DOS.\\
MS-DOS Filesystem       & {\tt msdos}   & Utilizado para acceder a ficheros MS-DOS. \\
{\tt /proc} Filesystem  & {\tt proc}    & Suministra informaci\'on de proceso para {\tt ps}, etc.\\
ISO 9660 Filesystem     & {\tt iso9660} & Formato utilizado por muchos CD-ROMs.\\
Xenix Filesystem        & {\tt xenix}   & Sistema de ficheros de Xenix.\\
System V Filesystem     & {\tt sysv}    & Variantes del System V para el x86.\\
Coherent Filesystem     & {\tt coherent} & Acceso a ficheros de Coherent.\\
HPFS Filesystem         & {\tt hpfs} & Acceso en lectura a particiones HPFS (DoubleSpace).\\
\end{tabular}\normalsize\rm
\caption{Tipos de Sistemas de Ficheros en Linux}
\label{table-fs-types}
\end{center}\end{table}

El \'ultimo campo del fichero {\tt fstab} contiene las opciones del comando
{\tt mount} ---normalmente, est\'a puesto a ``{\tt defaults}'' (defecto).

\index{partici\'on de intercambio!en /etc/fstab@en {\tt /etc/fstab}}
\index{swapon@{\tt swapon}}
Como se puede ver, las particiones de intercambio est\'an incluidas en
{\tt /etc/fstab} tambi\'en. Tienen un punto de montaje de {\tt none} y tipo
{\tt swap}. El comando {\tt swapon -a}, que se ejecuta tambi\'en desde
{\tt /etc/rc}, se utiliza para activar el intercambio en todos los 
dispositivos de intercambio listados en {\tt /etc/fstab}.

\index{/proc@{\tt /proc}!montaje de}
El fichero {\tt fstab} contiene una entrada especial ---para el sistema de 
ficheros {\tt /proc}. Tal y como se mencion\'o en la 
secci\'on~\ref{sec-processes}, el sistema de ficheros {\tt /proc} se 
utiliza para almacenar informaci\'on acerca de los procesos del sistema, 
memoria disponible, y otros datos del mismo tipo. Si {\tt /proc} no 
est\'a montado, no funcionar\'an comandos como {\tt ps}.

\blackdiamond El comando {\tt mount} s\'olo puede ser utilizado por root. 
Esto es as\'{\i} para garantizar la seguridad del sistema; no es deseable 
que usuarios normales est\'en montando y desmontando sistemas de ficheros a 
su antojo. Existen varios paquetes disponibles que permiten a los 
usuarios normales montar y desmontar sistemas de ficheros (disquetes en 
particular) sin comprometer la seguridad del sistema.

El comando {\tt mount -av} realmente monta todos los sistemas de ficheros
excepto el sistema de ficheros ra\'\i z (en la tabla anterior, {\tt 
/dev/hda2}). El sistema de ficheros ra\'\i z es montado autom\'aticamente 
en tiempo de arranque por el n\'ucleo.

En vez de utilizar el comando {\tt mount -av}, se puede montar un sistema de
ficheros a mano. El comando
\begin{tscreen}
\# {\em mount -t ext2 /dev/hda3 /usr}
\end{tscreen}
es equivalente a montar el sistema de ficheros con la entrada {\tt /dev/hda3} 
del ejemplo de fichero {\tt fstab} anterior.

\index{sistemas de ficheros!desmontando!con shutdown o halt@desmontando con {\tt shutdown} o {\tt halt}}
\index{desmontando sistemas de ficheros}
En general, nunca se debe montar o desmontar sistemas de ficheros a mano. El
comando {\tt mount -av} en {\tt /etc/rc} se encarga de montar los sistemas de
ficheros en tiempo de arranque. Los sistemas de ficheros son desmontados por
los comandos {\tt shutdown} o {\tt halt} antes de cerrar el sistema.
\index{sistemas de ficheros!montando|)}

\subsection{Comprobando sistemas de ficheros}
\index{sistemas de ficheros!comprobando}
Normalmente es una buena idea el comprobar de vez en cuando los sistemas de 
ficheros en busca de ficheros da\~nados o corrompidos. Algunos sistemas 
comprueban autom\'aticamente sus sistemas de ficheros en tiempo de arranque
(con los comandos apropiados en {\tt /etc/rc}).

\index{e2fsck@{\tt e2fsck}}
El comando utilizado para comprobar un sistema de ficheros depende del 
tipo de sistema de ficheros en cuesti\'on. Para sistemas de ficheros 
ext2fs (el tipo m\'as utilizado normalmente), el comando es {\tt e2fsck}. 
Por ejemplo, el comando 
\begin{tscreen}
\# {\em e2fsck -av /dev/hda2}
\end{tscreen}
comprobar\'a el sistema de ficheros ext2fs de {\tt /dev/hda2} y corregir\'a 
autom\'aticamente cualquier error.

\index{umount@{\tt umount}}
\index{sistemas de ficheros!desmontando}
\index{desmontando sistemas de ficheros}
Normalmente es una buena idea el desmontar un sistema de ficheros antes de
comprobarlo. Por ejemplo, el comando
\begin{tscreen}
\# {\em umount /dev/hda2}
\end{tscreen}
desmontar\'a el sistema de ficheros en {\tt /dev/hda2}, tras lo cual podr\'a ser
comprobado. La \'unica excepci\'on es que no se puede desmontar el sistema de 
ficheros ra\'\i z. Para poder comprobar el sistema de ficheros ra\'\i z cuando est\'a
desmontado, se debe utilizar un disquete de arranque/ra\'\i z (v\'ease la 
secci\'on~\ref{sec-maint-diskette}). Tampoco se puede desmontar un sistema de
ficheros si alguno de sus ficheros est\'a ``ocupado'' ---esto es, siendo 
utilizado por un proceso en ejecuci\'on. Por ejemplo, no se puede desmontar un
sistema de ficheros si el directorio de trabajo de alg\'un usuario est\'a en ese
sistema de ficheros. Se recibir\'a un error ``{\tt Device busy}'' (dispositivo 
ocupado) si se intenta desmontar un sistema de ficheros que est\'e en uso.

\index{efsck@{\tt efsck}}
\index{xfsck@{\tt xfsck}}
\index{fsck@{\tt fsck}}
Otros tipos de sistemas de ficheros utilizan formas diferentes del comando
{\tt e2fsck}, como pueda ser {\tt efsck} y {\tt xfsck}. En algunos sistemas,
se puede utilizar el comando {\tt fsck}, que determina el tipo de sistema de
ficheros y ejecuta el comando apropiado.

\blackdiamond Es importante que se reinicialice el sistema inmediatamente 
despu\'es de comprobar un sistema de ficheros montado, si es que se hizo 
alguna correcci\'on al sistema de ficheros. (Sin embargo, en general, no 
se deben comprobar sistemas de ficheros que est\'en montados.) Por 
ejemplo, si {\tt e2fsck} informa que ha corregido alg\'un error en el 
sistema de ficheros, se debe apagar el sistema con {\tt shutdown -r} para 
rearrancarlo. Esto permite al sistema resincronizar su informaci\'on 
acerca del sistema de ficheros cuando {\tt e2fsck} lo modifica.

El sistema de ficheros {\tt /proc} no necesita nunca ser comprobado de esta
forma. {\tt /proc} es un sistema de ficheros en memoria, gestionado 
directamente por el n\'ucleo.
\index{sistemas de ficheros|)}
