El documento describe varios sistemas de archivos comunes. Explica que un sistema de archivos es una estructura lógica que organiza y almacena datos e información en un disco duro. Luego resume brevemente los sistemas de archivos FAT usado en MS-DOS y versiones tempranas de Windows, el sistema NTFS usado en Windows NT y versiones posteriores, y varios sistemas de archivos comunes en UNIX como ext2, ext3 y JFS.
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Sistemas de archivos
1. º
INSTITUTO TECNOLOGICO DE TEHUACAN
CARRERA: INGENERIA EN SISTEMAS
COMPUTACIONALES
ALUMNO: MANUEL MIRANDA BUENABAD
DOCENTE: LIC.FRANCISCO VAZQUEZ
GUZMAN
MATERIA: ADMINISTRACION DE REDES
TEMA:SISTEMA DE ARCHIVOS
2. Sistemas de Archivos
Introducción
La estructura que alberga la información en los discos es conocida con el nombre de sistema de
ficheros (abreviadamente FS "File System"). Un sistema de ficheros es una estructura lógica que
se supone las más adecuada y eficiente para el manejo de datos en base a las características del
hardware disponible (discos) por esta razón, su estudio se mueve en la frontera entre el hardware y
el software.
El diseño del sistema de ficheros tiene una gran influencia en la eficacia (rendimiento), seguridad,
flexibilidad y capacidad de crecimiento de los almacenamientos en disco. Y por tanto, en el
rendimiento del propio Sistema Operativo. Una de cuyas funcionalidades más importantes es el
manejo de datos.
Nota: Precisamente el SO UNIX nació a partir de la idea de crear un sistema de ficheros que
permitiese a los usuarios de un sistema GE 635 [7] de los Laboratorios Bell de AT&T, trabajar
simultáneamente sin interferirse.
Naturalmente, las exigencias del Sistema dependen de su utilización. No son de esperar las
mismas necesidades en el sistema de ficheros de una computadora personal, con un SO tipo DOS
con un solo usuario ejecutando una sola tarea, que las de un sistema multiprograma en las que
distintos usuarios pueden ejecutar concurrentemente distintas tareas, quizás utilizando
simultáneamente ficheros alojados en máquinas remotas. En general, cada SO tiene su forma de
organizar y controlar el acceso a los datos en el disco duro que le es específica, e independiente
del medio físico (tipo de disco utilizado). Sin embargo, por razón de compatibilidad, y para mejor
adaptarse a las distintas circunstancias, algunos Sistemas Operativos pueden utilizar distintos
Sistemas de Ficheros (Linux es un caso paradigmático).
Datos y metadatos
Como veremos a continuación, existe un amplio repertorio de estos sistemas. Cada uno con una
orientación, diseño y pretensiones específicas, pero todos comparten un principio común: junto
con los datos propiamente dichos, el disco debe contener las estructuras que los organizan e
indexan. Estas estructuras son conocidas como metadatos o meta-estructuras (datos sobre los
datos). En realidad, el caballo de batalla del diseño de un sistemas de ficheros, se centra
precisamente en el diseño de sus meta-estructuras. Las bondades y cualidades del producto final,
dependen en gran medida del acierto y características de esta parte del diseño.
Una vez introducidos en el capítulo anterior los conceptos y vocabulario indispensables, daremos
un breve repaso a las características de los sistemas de ficheros de los Sistemas Operativos más
populares. Posteriormente nos centrarnos más detalladamente en el sistema FAT por ser quizás el
más extendido y en el sistema ext2 de Linux de importancia creciente en la informática actual.
§3 MS-DOS
Los sistemas MS-DOS ("MicroSoft Disc Opertating System"), PC-DOS y derivados, hasta el MS-
DOS v.6.22, utilizan un sistema de ficheros conocido como FAT. El nombre se debe a una de sus
estructuras principales, la tabla de situación de ficheros FAT ("File Allocation Table").
3. Como señala su propio nombre, el sistema utiliza una tabla donde se encuentran las direcciones
de los ficheros en el disco. Las tablas FAT están contenidas en el disco junto con el resto de
datos, aunque durante el funcionamiento normal se cargan en memoria. Dependiendo del espacio
asignado para escribir en ellas reciben diversos "apellidos": FAT12, FAT16 y FAT32, que utilizan
respectivamente 12, 16 y 32 bits para apuntar el número de cluster de un trozo de fichero (todas
las versiones de MS-DOS previas a la 7.x utilizaban FAT12/16).
Es un sistema de ficheros muy simple, aunque perfectamente adecuado a las pretensiones
iniciales. La más evidente para el usuario es la limitación de 8 caracteres para los nombres de
ficheros y de 3 para las extensiones. Fórmula conocida como 8+3.
El sistema de ficheros de MS-DOS, que se comercializó con los primeros PCs de IBM, que
carecían de disco duro (solo podían almacenar 160 KB de datos en su disco flexible), era en
realidad una derivación del sistema de ficheros de CP/M ("Control program for
microcomputers"). El sistema operativo de Gary Kildall, que había servido de inspiración
al QDOS ("Quick and Dirty Operating System") de Tim Patterson, el "Padre" del DOS de
Microsoft. El sistema era bastante ineficiente, ya que no estaba pensado para unidades
grandes. Por esta razón, cuando IBM comenzó a dotar a sus equipos con unidades de disco de
10MB, Microsoft desarrollo un nuevo sistema de ficheros para su DOS 1.x, inspirado en el
de UNIX (Microsoft había adquirido una licencia UNIX y había empezado a ofrecer una versión
denominada XENIX). La capacidad crear particiones haciendo que aparezcan como una unidad de
disco, fue añadida en el MS-DOS 3.2.
Sistemas Windows
El gigante de Redmond ha venido utilizando dos sistemas de ficheros para sus sistemas
Windows: FAT, en distintas versiones y NTFS .
Si empezamos por el principio, Windows 3.x no era realmente un sistema operativo; más bien una
interfaz gráfica sobre MS-DOS. La última versión: Windows 3.11 para trabajo en grupo, incluía una
mejora llamada "32-Bit File Access" que en realidad se trataba de una forma de acceso a disco
para rutinas de 32-bit en modo protegido, en vez de las rutinas normales DOS de 16 bits. De
forma que la estructura del sistema de archivos seguía siendo la DOS tradicional.
El Windows 95 inicial incluía un MS-DOS v.7.x que soportaba FAT16, mientras que una versión
posterior, denominada OSR2 ("OEM Service Release 2") o Windows 95b, soportaba
tambiénFAT32. El MS-DOS v.7.1 que venía con él también soporta FAT32.
Por su parte Windows NT fue diseñado desde el principio para ser un sistema operativo de red y
multitarea que rompiese definitivamente cualquier nexo con sus ancestros MS-DOS. Soporta dos
sistemas de fichero: su sistema "nativo", denominado NTFS ("New Technology File System") es un
sistema de ficheros estilo UNIX/DOS. El segundo es el tradicional FAT32, incluido meramente por
razones de compatibilidad y para permitir que los equipos puedan tener lo que se denomina
arranque dual ("dual boot"), que permite al usuario arrancar en Windows NT o en otro
sistema. Aunque Windows NT puede leer archivos NTFS y FAT32 (este último mediante una
utilidad denominada winimage), es absolutamente diferente e incompatible con los FAT [1],
aunque muy superior a ellos en todo.
UNIX
Este sistema es propio de máquinas grandes utilizadas generalmente por muchos usuarios. Nació
en entornos académicos y de investigación, por lo que dispone de mecanismos de protección y
4. cooperación entre grupos de trabajo muy desarrollados. Existen varios dialectos de UNIX, aunque
uno de ellos, Linux, se ha popularizado mucho en el mundo de la informática personal. Aunque la
arquitectura de su sistema de ficheros sirvió de inspiración para las últimas versiones de MS-DOS,
es totalmente incompatible con los sistemas FAT.
Aunque originarios de un tronco común (el Unix de AT&T), existen distintas variedades que, en lo
referente a su FS, se diferencian en cuestiones de detalle. Principalmente relacionadas con la
forma en que se heredan las propiedades de los nuevos ficheros en función de las propiedades del
directorio padre o del proceso que los crea.
Quizá las variedades más extendidas sean BSD ("Berkeley Software Distribution"), escrita en la
universidad de California en Berkeley por el CSRG ("Computer Science Research Group") y el
UNIXSystrem V. A partir de ellas se ha creado toda una familia de versiones "open source", entre
las que se encuentran NetBSD; FreeBSD, y OpenBSD. Son, en cierta medida, comparables al
popular Linux, cada una con sus virtudes y defectos.
Linux
Este sorprendente sistema, fue desarrollado inicialmente por un estudiante (Linux Benedict
Thorwald) según un diseño inspirado en Minix (un dialecto simplificado de UNIX diseñado por
Andrew S. Tanenbaum). Posteriormente fue convertido por su creador en un SO "freeware" y
rápidamente "adoptado" por la comunidad informática internacional, que le ha ido añadiendo
infinidad de opciones, utilidades y mejoras. Es rápido, fiable y muy optimizado. El sistema de
archivos Linux es distinto de los sistemas FAT, aunque dispone de una utilidad
denominada mtools que da soporte a FAT32.
Con el tiempo se le ha dotado de distintos sistemas de ficheros, de forma que sus usuarios pueden
elegir entre una amplia variedad de opciones y tener acceso (en ocasiones restringido) a una
enorme cantidad de formatos. El sistema es muy flexible, permitiendo incluso montar un sistema
de ficheros de raíz única, que comprenda unidades físicas con sistemas distintos entre sí
(unidades con formatos distintos). Entre los sistemas de fichero que Linux puede utilizar o
"entender" se
encuentran: bfs; minix; ext; ext2; ext3; xia; xfs; msdos; umsdos; vfat; jfs; reiserfs; nfs; is
o9660; hpfs; sysv; smb y ncpfs. A continuación se comentan brevemente las características de
los más usados:
ext: Es una extensión del sistema de ficheros Minix (de ahí su nombre), aunque más
elaborada. Su desarrollo fue suspendido en favor de ext2. A partil de la versión 2.1.21 ya
no se incluye en el kernel de Linux.
ext2: Puede decirse que actualmente (2005) esta segunda "extensión" del sistema Minix,
es el modelo "oficial" y más extendido en el mundo Linux. Es un sistema de ficheros de
alto rendimiento que, en términos de velocidad y consumo de UCP, presenta las mejores
prestaciones de entre los sistemas soportados por Linux, aunque no está exento de
inconvenientes. Está dotado de una estructura estática y con relativamente poco espacio
para anotar particiones excepcionalmente grandes o con gran número de ficheros en cada
directorio. Aunque en honor a la verdad, estos límites son enormes: 32,768 subdirectorios
en cada directorio; de 10,000 a 15,000 ficheros por directorio, y 4 Terabytes de
capacidad. Sin embargo, quizás la principal limitación es que su estructura de listas
encadenadas (similar a las FAT 8.1.2a1) no es especialmente adecuada para
volúmenes muy grandes (desde luego, el concepto actual -2005- de "muy grande", no es el
mismo que el de hace 10 años).
ext3: Es una versión "journaling" del anterior. Es decir, un sistema capaz de anotar las
"transacciones" (operaciones) realizadas, y en caso necesario, disponer de cierta
capacidad de rehacer los últimos cambios. El journaling garantiza la consistencia de los
5. ficheros, ya que las operaciones de escritura/borrado de disco suponen distintos accesos y
actualizaciones; sobre los datos y sobre los metadatos (tablas FAT por ejemplo . En caso
de accidente. Por ejemplo, un apagado súbito, algunas operaciones pueden quedar sin
realizar, produciendo inconsistencias en el sistema de ficheros. En estos casos, el sistema
tradicional consiste en recurrir al empleo de utilidades (como fsck en Linux; fdisk en
Windows, o el patético recover del DOS) que verifican la estructura lógica e intentan
reparar los desperfectos (al menos evitar que sean origen de nuevos estropicios). El
problema es que con frecuencia tales utilidades no resuelven el problema. Además, las
rutinas necesarias después del "crash" de un gran sistema pueden requerir horas o incluso
días de proceso. En cambio los sistemas journaling pueden rehacer la actualización que
quedó incompleta (o anularla totalmente) en cuestión de minutos. El resultado es que
estos sistemas son mucho más rápidos en el rearranque después de una incidencia. Algo
que es especialmente valorado en determinados entornos de explotación (pensemos por
ejemplo, en un gran banco).
hpfs: Es el "High Performance File System" utilizado por OS/2 de IBM . Aunque, debido a
la ausencia de documentación al respecto, Linux solo ofrece capacidad de lectura (importar
sus datos) desde estos sistemas de fichero.
iso9660: Es el sistema de ficheros utilizados en los CD-ROMs. Es un estándar para
grabar ficheros de datos en los dispositivos ópticos como CDs y DVDs implementado en
todos los sistemas que montan estos dispositivos. Esta es la razón por la que los CDs y
DVDs son medios realmente universales para difusión de información digital. Como no
podía ser menos, Linux soporta las dos versiones del estándar: High Sierra y Rock Ridge.
jfs: Al igual que ext3, jfs es un sistema de ficheros "journalista". Desarrollado inicialmente
por IBM para sus sistema OS/2 Warp , su código fue donado al Open Source Consortium a
principios del 2000 y portado a Linux poco después. Se incluye en los kernel a partir de la
versión 2.5.6, aunque puede instalarse como un parche en las versiones 2.4.x. Es un
sistema muy adecuado para entornos empresariales que permite volúmenes muy grandes
y utiliza técnicas avanzadas para mejorar el rendimiento. Una de sus características es
que utiliza un sistema de asignación dinámica para los "inodes" que asigna o libera el
espacio según las necesidades. La ventaja es que, al contrario que en otros sistemas. Por
ejemplo,ext2 , no es necesaria una estimación previa del espacio que se reservará a los
inodes al crear el sistema de ficheros .
minix: Es el sistema de ficheros nativo del SO de igual nombre. Fue el primero de los
disponibles para Linux, ya que como hemos indicado, el desarrollo original de éste se basó
en aquel. Aunque adolece de importantes limitaciones (Minix es más un sistema pensado
para la enseñanza que para explotación comercial , se sigue utilizando en disquetes y en
unidades de disco RAM.
msdos: Es la versión Linux del sistema de ficheros DOS tradicionalmente usado por los
PCs IBM, Windows y PS/2. La versión Linux adolece de las mismas limitaciones que el
DOS original.
umsdos: Una extensión Linux del anterior que elimina alguna de sus limitaciones, como la
de nombres cortos (8+2). Al tiempo que añade algunas capacidades nuevas. Por ejemplo,
la designación de dispositivos de E/S como ficheros (algo muy común en el mundo
Unix); posibilidad de definir tuberías ("pipelines") para utilizar la salida de un comando
como entrada de otro. etc.
nfs: Es el sistema de ficheros de red ("Network File System") que permite acceder ficheros
situados en ordenadores remotos.
ncpfs: Un sistema de ficheros de red que soporta el protocolo NCP ("NetWare Core
Protocol") de Novell . Permite acceder y manejar los recursos de un servidor NetWare
desde Linux.
reiserfs: Otro sistema de ficheros "journalista" de código abierto y disponible en la
mayoría de distribuciones de Linux, diseñado por Hans Reiser y colaboradores en
Namesys. Aunque presenta unas excelentes prestaciones en el manejo de ficheros
grandes, una de sus características distintivas es su adecuación para manejar infinidad de
ficheros pequeños. Su filosofía es que los ficheros pequeños estimulan la sencillez del
código. ¡En lugar de utilizar una base de datos para manejar su información, utilice el
6. sistema de ficheros!
reiserfs resulta de 8 a 15 veces más rápido que ext2 en el manejo de ficheros de menos
de 1 KB, y con la configuración adecuada, puede almacenar un 6% más de datos que
aquel en el mismo dispositivo. En lugar de manejar clusters de tamaño fijo, su diseño le
permite utilizar el espacio exactamente a medida de la necesidad. Los metadatos están
orgnizados en una estructura de árbol ordenado bastante sofisticada (B+Tree , que
además de gestionar los metadatos, almacena y comprime los despuntes (trozos de
fichero que no alcanzan a ocupar un cluster).
smb: Otro sistema de ficheros de red, que soporta SMB ("Server Message Block"), un
protocolo utilizado por Windows para trabajo en grupo (Windows 3.1); Windows NT, y Lan
Manager de IBM. Permite compartir ficheros; impresoras; puertos serie y otras
abstracciones utilizadas para comunicación entre ordenadores, como tuberías y buzones
de correo.
sysv: Es una implementación Linux del sistema de ficheros SystemV de Unix. Soporta las
variedades Xenix FS (versión Microsoft de Unix); SystemV/Coherent; SystemV/386 y
Coherent FS.
xfs: En concordancia con la política de apoyo a Linux emprendida por algunas grandes
compañías, Silicon Graphics, más conocida como SGI, ha distribuido una versión Linux de
su sistema de ficheros XFS, diseñado originariamente para sus sistemas IRIX. En
concordancia con sus orígenes, se trata de un sistema "journalista" de altas prestaciones,
que soporta bitácora o registro de las transacciones con los metadatos [3], así como
"granjas" de discos ("disk farms") extremadamente grandes. Uno de estos sistemas es
15
capaz de gestionar 18,000 Petabytes (10 bytes y un solo fichero puede alcanzar 9,000
Petabytes.
xiafs: Fue otra extensión del sistema de ficheros inicial (Minix) con intención de mejorar
sus conocidas deficiencias. Su desarrollo y mantenimiento fueron abandonados a partir de
la versión 2.1.21 del kernel.
squashfs: un sistema de ficheros de solo-lectura altamente comprimido, implementado
como un módulo del kernel bajo VFS ("Virtual File System"). Puede ser útil en aplicaciones
embebidas que requieran gestionar gran cantidad de datos de forma eficiente.
El seudo-fichero /proc/filesystems contiene información sobre los módulos cargados por el kernel
de Linux. Puede utilizar el comando cat /proc/filesystems para inspeccionar su contenido. Si
ejecuta el comando, seguramente verá (entre otras) las siguientes líneas:
ext2
minix
iso9660
vfat
OS/2
Este sistema operativo de IBM también fue popular dentro de ciertos círculos del mundo
PC. Principalmente clientes corporativos de la compañía. Utiliza un sistema de archivos específico
denominado HPFS ("High Performance File System") que permite nombres de ficheros de hasta
254 caracteres y soporta la coexistencia de varios sistemas de fichero en el mismo equipo
utilizando distintos dispositivos. En especial unidades FAT12 y FAT16. Su utilidad de formateo
permitía seleccionar entre el modo FAT y el HPFS vernáculo.
Las versiones 1 y 2 se denominaron OS/2, mientras que la 3 apareció bajo el nombre OS/2
Wrap. Aparte de los programas escritos específicamente para él, el sistema permitía ejecutar
programas DOS y Windows. Desde luego era superior técnicamente a los Windows de la
época. Resultaba casi imposible "colgarlo", cosa que distaba mucho de ocurrir con aquellas
versiones de Windows, famosas por sus pantallas azules BSoD ("Blue Screen of Death"), y podía
7. instalarse sobre una máquina DOS, Windows 3.1/3.11, o Windows for Workgroups 3.1/3.11, sin
perder la posibilidad de ejecutar las aplicaciones de estos sistemas. Disponía incluso de un
sistema de carga dual que permitía arrancar en OS/2 o en DOS. Incluía un "BonusPack" que, ya
en 1994 (entre otras) incluía IBM Internet Connection, una utilidad que permitía: "enviar correos
electrónicos, acceder a tablones de anuncios, buscar información, conectar con otros sistemas y
transferir archivos a su sistema" .
Nota: recordemos que solo cuatro años antes, en Noviembre de 1990, Tim Berners-Lee había
publicado la primera página Web de la historia, y que seguramente el "BonusPack" es anterior
a 1994. Me he basado en la documentación escrita que conservo al respecto. Pero
seguramente cuando pude hacerme con él ya circulaba desde algún tiempo atrás.
A diferencia de los sistemas FAT, HPFS ordena su información en base a los nombres de fichero,
al tiempo que utiliza una estructura más eficiente para organizar sus directorios. Como
consecuencia, se consigue un acceso más rápido y un mejor aprovechamiento del espacio que en
aquellos. Su unidad de almacenamiento es el sector, y para controlar cuales han sido utilizados y
cuales no, divide el espacio del volumen en bancos de 8 MB que contienen 2 KB de metadatos
("allocation bitmaps") entre ellos. Esta organización mejora el rendimiento disminuyendo los
movimientos ("seeking") de cabezas. Ya que estas no necesitan volver a la pista cero cada vez
que el SO necesita informarse del espacio disponible o de la situación de un fichero.
Nota: En realidad OS/2 ("Operating System 2") comenzó siendo desarrollado por Microsoft,
por encargo de IBM, como sustituto (versión gráfica) de los sistemas IBM/MS-DOS, así que
debía poder leer los ficheros anteriores. Posteriormente ambas empresas cancelaron estos
acuerdos. IBM terminó utilizando OS/2 en sus clientes corporativos (tuvo muy pequeña
aceptación entre el gran público), y Microsoft siguió un camino independiente desarrollando su
primer propio sistema al que denominó Windows.
Macintosh
El sistema de la manzana utiliza para organizar datos en discos duros y disquetes es un sistema
de archivos denominado HFS ("Hierarchical File System").
Netware
Este Sistema operativo de Novell utiliza un sistema de ficheros denominado NFS ("Netware File
System"), que fue diseñado específicamente para servidores de red.
[1] Este es quizás el único punto en contra, razón por la cual no era tan utilizado como los
sistemas FAT hasta que Microsoft empezó a utilizarlo como sistema por defecto en algunas
versiones avanzadas de Windows.
[3] En estos casos, la literatura inglesa suele utilizar el término "jorunalism", cuya traducción literal
al español es periodismo. Sin embargo hemos preferido utilizar los términos "registro" o "bitácora"
porque reflejan más exactamente la actividad realizada por estos sistemas.
[4] Este espacio determina el número máximo de directorios y ficheros podrá contener la unidad
posteriormente.
8. Naturalmente, igual que en la actualidad (2005), la conexión exigía un proveedor de servicios de
Internet PSI. El problema era que en estas fechas, los escasísimos proveedores de tales servicios
solo eran accesibles (al menos para mí) mediante módem y llamadas a larga distancia.
"As most of you know, for me MINIX is a hobby, something that I do in the evening when I get bored
writing books and there are no major wars, revolutions, or senate hearings being televised live on
CNN. My real job is a professor and researcher in the area of operating systems"...
..."I think the real issue is something else. I've been repeatedly offered virtual memory, paging,
symbolic links, window systems, and all manner of features. I have usually declined because I am
still trying to keep the system simple enough for students to understand". Andrew S. Tanenbaum
en "Linus vs. Tanenbaum"
Una máquina de General Electric con palabra de 32 bits y direcciones de 18 bits, que alrededor de
1965 era competencia de los modelos de la IBM. Pertenecía a lo que entonces se consideraban
ordenadores para "aplicaciones científicas", ya que las destinadas a "aplicaciones de gestión"
simplemente no existían. Lo más avanzado eran unos artilugios electro-mecánicos con el
pomposo nombre de "facturadoras-contables" que mantenían la contabilidad en cartulinas de papel
con un registro impreso y otro electrónico en una banda magnética lateral (algo parecido a las
libretas de ahorro de algunas entidades bancarias actuales).