3.4 Discos y sistemas de archivos
21 marzo 2017
[ Estás en Unidades Didácticas / Unidad 3 – GNU Linux / 3.4 Discos y sistemas de archivos ]
El sistema de archivos (FS, file system) determina el modo en que se organizan los datos contenidos en un dispositivo de almacenamiento de datos, disco o partición. Se trata de un componente del sistema operativo y es determinante para la eficiencia global del sistema cuando se utilizan muchas operaciones con los datos almacenados en los discos.
Discos
Los discos permiten guardar de forma permanente datos que pueden representar documentos digitales (de texto, imágenes, sonidos…), aplicaciones, drivers… Están formados por un gran bloque de
Sistema de archivos
Linux es un sistema completamente orientado a archivos. Tanto los datos guardados en discos (documentos, imágenes, aplicaciones…) como los periféricos (pantalla, teclado, ratón, impresora, tarjeta de sonido…) o los medios de comunicación (sockets…) se gestionan como archivos.
Es un sistema jerárquico representado por un árbol cuya raíz, o root, se representa con el carácter /
. Con la instrucción ls /
verás los directorios que tiene tu sistema operativo en la raíz del disco sobre el que ejecutes la orden, algo parecido al gráfico siguiente.
Esta jerarquía estándar (FHS) nació en 1994 y es mantenida por la Linux Foundation. No todas las distribuciones linux usan esta misma estructura pero el hecho de ser estándar hace que todas se fijen en ella antes de hacer sus propias adaptaciones o mejoras.
Linux contiene directorios compartibles, cuyos ficheros pueden utilizarse desde otros dispositivos, y no compartibles, que sólo pueden utilizarse desde el dispositivo en el que se encuentran.
Esta jerarquía no se tiene que corresponder exactamente con la disposición física de los directorios en una unidad de almacenamiento (disco), en muchos casos se recurre a particiones físicas en las que alojar de un modo más eficiente algunos de estos directorios aunque, virtualmente, nosotros los veamos como descendientes del directorio raíz de nuestra unidad principal.
/bin
contiene binarios (ejecutables) para el usuario, entre los que encontramos los que permiten la ejecución de utilidades estándar de la terminal de Linux, concretamentecat
,cd
,cp
,echo
,grep
,gzip
,kill
,ls
,mv
,rm
,ping
,su
,ps
,tar
yvi
./sbin
contiene binarios para el sistema, arranque, reparación…/dev
guarda, en forma de archivo, información sobre cada uno de los dispositivos de almacenamiento conectados al sistema. Consudo fdisk -l
puedes comprobar la que tiene en estos momentos tu sistema. Haz pruebas insertando algún pendrive o dispositivo externo y ejecutando nuevamente la orden, comprenderás mejor esta información./etc
contiene archivos de configuración./home
contiene las carpetas personales de los usuarios con cuenta en este sistema./root
es la carpeta personal del usuario root (superusuario)./run
contiene archivos volátiles muy variables, usada por las aplicaciones de inicio del sistema./media
es una carpeta en la que se montan automáticamente las unidades temporales (USB…) cuya información se guarda en/dev
. Si queremos hacer acciones tales como formatear una partición desde la terminal, debemos “atacar” a/dev
, mientras que para acceder a la información y visualizarla en forma de directorios, accedemos mediante el volumen montado en/media
./mnt
es similar a/media
pero más orientada a que el usuario sea quien monte o desmonte las unidades./opt
carpeta complementaria a/usr
en que se guardan archivos de sólo lectura que forman parte de programas auto-contenidos./lib
contiene librerías (bibliotecas), guardarlas en una carpeta ayuda a no tener duplicados de librerías usadas por diferentes programas. En arquitecturas de 64 bits se guardan librerías también en/lib64
.
MS-Windows engaña al usuario haciéndole pensar que la extensión de un archivo es determinante para poder gestionar su contenido. Cuando intentas cambiar una extensión el sistema operativo te advierte que quizá ya no puedas utilizar el archivo, a pesar de que lo único que vas a hacer es cambiar su nombre (bueno, una parte de su nombre a la que llamamos extensión y que contiene los caracteres que hay tras el último punto del nombre del archivo). Realmente MS-Windows usa las extensiones para asociar un archivo a la(s) aplicación(es) con que se puede abrir/editar/imprimir/… y facilitar al usuario una tarea que, de otro modo, MS-Windows no sabría hacer.
Linux conoce el tipo de archivo sin necesidad de una extensión (que podría ser incorrecta), basta con que escribas file nombre-archivo
en la consola para que tú también conozcas el tipo de un archivo. Linux no se fía únicamente de la extensión que ha podido escribir un usuario, comprueba el contenido del archivo y detecta su formato (si lo tiene registrado, claro).
Prueba a cambiar un pdf
sustituyendo su extensión por txt
, comprueba que el archivo no ha cambiado y que ahora MS-Windows lo abre con el bloc de notas u otro editor de texto plano. En linux se abre con un lector de archivos tipo portable data file
, en macOS también porque tiene linux corriendo en su interior.
Ejercicios
- He buscado imágenes para colocar en esta página pero sólo encuentro una etiquetada con una licencia que me permita hacerlo sin pedir permisos. Busca imágenes que pueda colocar aquí y que muestren la jerarquía del sistema de archivos linux, o crea una y publícala con una licencia que pueda utilizar yo para documentar gráficamente este blog.
Fuentes
- Soporte de almacenamiento de datos (Wikipedia)
- FHS 3.0 (caché)
- Linux Filesystem Hierarchy
- Sistema de archivos (Wikipedia)
- El Árbol de Directorios de Linux al Detalle
- Directorio /run en linux