miércoles, 10 de enero de 2007

Sistema de Archivos - Linux

SISTEMA DE ARCHIVOS
INTRODUCCION
Todo disco duro se divide en sectores lógicos donde se guarda la información, esto sucede en todo sistema operativo y es inevitable. A su vez el disco se divide en ficheros. La primera vez que se almacena la información se realiza en forma secuencial; pero a medida que se extrae, borra y/o graba alguna parte de la misma se rompe con este orden ocurriendo la fragmentación de la información.
Por ello se cuenta con un encargado, por así decirlo, que mantiene actualizado un índice bastante complejo que le permite en cualquier momento encontrar la información específica que se requiere. Este encargado con su índice son el Sistema de Archivos.
Una de las grandes diferencias entre sistemas operativos, que hace una gran diferencia en cuanto a velocidad y confiabilidad, es el sistema de archivos.
Los sistemas FAT y NTFS se ven muy afectados por la fragmentación de archivos. Con el paso del tiempo el rendimiento del ordenador se degrada considerablemente y es necesario defragmentar el disco periódicamente, dependiendo del las condiciones de uso.
El sistema de archivos ext2 (Second Extended File System) fue lanzado en el año 1993 y ya en aquel entonces soportaba nombres de archivos de hasta 255 caracteres, atributos y permisos, y eliminaba el problema de la defragmentación.
FAT32 y NTFS no sólo todavía sufren la fragmentación sino que no son tan eficaces como ext2, y ni mencionar a ext3 con el agregado del "journaling" que garantiza recuperación instantánea en caso de perdidas de energía.

GLOSARIO

• Metadatos
Estructura interna de los datos de un sistema de archivos que garantiza el orden de la estructura y la disponibilidad de los datos del disco duro. En resumidas cuentas, se trata de los “datos sobre los datos”. Todo sistema de archivos posee su propia estructura de metadatos. Aquí es donde se encuentra en parte la causa de las diferencias en cuanto a rendimiento de los sistemas de archivos. Es extremadamente importante mantener intactos los metadatos, ya que de lo contrario se podría dañar todo el sistema de archivos.
• Inode
Los inodes contienen toda la información sobre un archivo: el nombre, el tamaño, el número de enlaces, la fecha, la hora en que fue creado, modificaciones, accesos como “señalador” (pointer) de los bloques del disco duro y dónde se encuentra grabado.
• Journal
En relación a un sistema de archivos, un journal o diario es una estructura interna del disco con un tipo de protocolo en el que el controlador del sistema de archivos introduce los (meta) datos del sistema de archivos que van a ser modificados. El “journaling” reduce enormemente el tiempo de elaboración de un sistema Linux, ya que de este modo el controlador del sistema de archivos no debe iniciar una búsqueda de los metadatos modificados en todo el disco. En vez de eso, basta con ver las entradas del diario.
DESARROLLO

SISTEMA DE ARCHIVOS

El “Sistema de Archivos” es la parte del sistema de administración del almacenamiento responsable, principalmente, de la administración de los archivos del almacenamiento secundario.
Es la parte del S. O. responsable de permitir “compartir controladamente” la información de los archivos.
El “Sistema de Archivos” es un componente importante de un S. O. y suele contener:
• “Métodos de acceso” relacionados con la manera de acceder a los datos almacenados en archivos.
• “Administración de archivos” referida a la provisión de mecanismos para que los archivos sean almacenados, referenciados, compartidos y asegurados.
• “Administración del almacenamiento auxiliar” para la asignación de espacio a los archivos en los dispositivos de almacenamiento secundario.
• “Integridad del archivo” para garantizar la integridad de la información del archivo.
El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco.
Una forma de organización de un sistema de archivos puede ser la siguiente:
• Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio raíz”.
• El “directorio raíz” apunta a los “directorios de usuarios”.
• Un “directorio de usuario” contiene una entrada para cada uno de los archivos del usuario.
• Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivo referenciado.
En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado como el “nombre de la trayectoria” del directorio raíz al archivo.





El sistema de archivos LINUX está caracterizado por:
• Una estructura jerárquica.
• Un tratamiento consistente de la información de los archivos.
• Protección de los archivos.
Funciones del Sistema de Archivos
Los usuarios deben poder crear, modificar y borrar archivos. Se deben poder compartir los archivos de una manera cuidadosamente controlada.
El mecanismo encargado de compartir los archivos debe proporcionar varios tipos de acceso controlado:
• Ej.: “Acceso de Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”, varias combinaciones de estos, etc.
Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.
Los usuarios deben poder ordenar la transferencia de información entre archivos.
Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse contra:
• La pérdida accidental de información.
• La destrucción maliciosa de información.
Se debe poder referenciar a los archivos mediante “Nombres Simbólicos”, brindando “Independencia de Dispositivos”.
En ambientes sensibles, el sistema de archivos debe proporcionar posibilidades de “Cifrado” y “Descifrado”.
El sistema de archivos debe brindar una interfase favorable al usuario:
• Debe suministrar una “visión lógica” de los datos y de las funciones que serán ejecutadas, en vez de una “visión física”.
• El usuario no debe tener que preocuparse por:
o Los dispositivos particulares.
o Dónde serán almacenados los datos.
o El formato de los datos en los dispositivos.
o Los medios físicos de la transferencia de datos hacia y desde los dispositivos.







TIPOS
A partir de la versión 2.4, el kernel ofrece una gran selección de sistemas de archivos. A continuación le mostramos un resumen de las funciones básicas de estos sistemas de archivos y sus ventajas.
1. ReiserFS
ReiserFS es producto de la labor de Hans Reiser y del equipo de desarrollo Namesys. ReiserFS se ha perfilado como una alternativa poderosa a Ext2. Sus grandes ventajas son: una mejor administración de la memoria del disco duro, un rendimiento optimizado del acceso al disco y una recuperación más rápida después de una caída del sistema. No obstante, ReiserFS concede mucha importancia a los metadatos pero no a los datos en sí. La próxima generación de ReiserFS incluirá data-journaling (se escribirán tanto datos como metadatos en el diario) así como accesos de escritura (véase data=ordered en Ext3). A continuación se describen con detalle las principales ventajas de ReiserFS:
Mejor administración de la memoria del disco duro
En ReiserFS, todos los datos se organizan en una estructura llamada B*-balanced tree. La estructura de árbol contribuye a una mejor administración de la memoria del disco duro, ya que los archivos pequeños se pueden guardar directamente en las hojas del B*tree (árbol), en lugar de guardarlos en otro lugar y luego tener que administrar el puntero (pointer) para que apunte al sitio indicado. Además, la memoria no se asignará en unidades de 1 a 4 Kb, sino en la unidad exactamente necesaria. Otra ventaja es el proceso dinámico de inodes.

Mejor rendimiento del acceso al disco duro
Se habrá dado cuenta de que en los archivos pequeños, tanto los datos del archivo como la información (inode) de “stat_data” se guardan uno al lado del otro. Basta con un único acceso al disco duro para suministrar toda la información necesaria.
Rápida recuperación tras una caída del sistema
Desde el contenido de un diario al seguimiento de las pequeñas modificaciones de metadatos, la comprobación del sistema de archivos se reduce a unos pocos segundos incluso en sistemas de archivos grandes.
2. Ext2
El origen de Ext2 se remonta a los primeros días de Linux. Su antecesor, el Extended File System fue implementado en abril de 1992 e integrado en Linux 0.96c. Este sufrió una serie de modificaciones y durante años se le conoció como Ext2 a la vez que se le consideró el sistema de archivos más popular de Linux. Con la introducción del sistema Journaling File y de su tiempo de elaboración tan sorprendentemente corto, Ext2 perdió importancia.
Estabilidad
Con el correr del tiempo, Ext2 ha sufrido muchas mejoras que le han hecho ganarse la reputación de ser “sólido como una roca”. En caso de una caída del sistema en la que el sistema de archivos no puede desmontarse adecuadamente, e2fsck inicia un análisis de los datos del sistema de archivos. Los metadatos se reconstruyen y los archivos o bloques de datos que quedan sueltos se guardan en un directorio denominado lost+found. En contraposición a (la mayoría) de los sistemas de archivos transaccionales o journaling, e2fsck analiza todo el sistema de archivos y no sólo los bits de metadatos modificados. Esto lleva más tiempo que la comprobación de los datos de protocolo de un sistema journaling. Dependiendo del tamaño del sistema de archivos, puede llegar a durar más de media hora. Por esta razón, Ext2 no se escoge para ningún servidor que deba tener un alto rendimiento. Debido a que Ext2 no debe hacerse cargo de ningún diario y a la vez necesita poca memoria, a menudo es más rápido que otros sistemas de archivos.
Fácil actualización
Tomando como base la fortaleza de Ext2, Ext3 podría llegar a convertirse en el sistema de archivos de la próxima generación. Su fiabilidad y estabilidad se complementarían perfectamente con las ventajas de los sistemas de archivos journaling.
3. Ext3
Ext3 fue concebido por Stephen Tweedie. A diferencia del resto de los sistemas de archivos de “última generación”, no está basado en un nuevo diseño, sino en Ext2. Ambos sistemas de archivos están estrechamente vinculados. Un sistema de archivos Ext3 se puede montar fácilmente sobre un sistema Ext2. La diferencia fundamental entre ambos radica en que Ext3 también soporta journaling.
Estas son brevemente las tres ventajas de Ext3:
Actualización sencilla y muy fiable de Ext2
Ya que Ext3 se basa en el código de Ext2, a la vez que comparten formato tanto para el disco como para los metadatos, las actualizaciones no son complicadas. Incluso se pueden llevar a cabo mientras el sistema de archivos Ext2 está montado. El proceso de cambio a otro sistema de archivos journaling, como por ejemplo ReiserFS, JFS, o XFS, puede llegar a ser muy trabajoso debido a que se deben realizar copias de seguridad de todo el sistema de archivos y después instalarlo desde cero. Sin embargo, el cambio a Ext3 puede ser una cuestión de minutos. Además es muy seguro, ya que resulta difícil que la reelaboración de todo un sistema de archivos desde cero no tenga errores. Si se tiene en cuenta la cantidad de sistemas Ext2 disponibles que esperan una actualización a un sistema de archivos journaling, se puede imaginar fácilmente el significado de Ext3 para muchos administradores de sistemas. El pasar de Ext3 a Ext2 es tan fácil como la actualización en sentido contrario. Tan solo se tiene que desmontar el sistema Ext3 y montarlo como Ext2.
Fiabilidad y rendimiento
Todos los sistemas de archivos journaling siguen el principio journaling de “sólo metadatos” (metadata-only). Esto significa que los metadatos permanecen en un estado coherente, lo que sin embargo no puede garantizarse automáticamente para los datos del sistema de archivos. Ext3 tiene capacidad para cuidar tanto de los metadatos como de los datos mismos. Se puede configurar individualmente el detalle con el que Ext3 debe ocuparse de los datos y metadatos. El grado más alto de seguridad (es decir, integridad de los datos) se consigue al arrancar Ext3 en modo data=journal; esto puede hacer que el sistema sea más lento, ya que se guardarán en el diario tanto los datos como los metadatos. Una posibilidad relativamente nueva consiste en la utilización del modo data=ordered, que garantiza la integridad tanto de los datos como de los metadatos a pesar de que sólo realiza journaling para los metadatos. El controlador del sistema de archivos reúne todos los bloques de datos relacionados con la actualización de los metadatos. Estos bloques quedan agrupados como “transacción” en los discos antes de que los metadatos sean actualizados. Con esto se consigue la coherencia de datos y metadatos sin pérdida de rendimiento. Un tercer tipo de modo es data=writeback. De esta forma se puede escribir datos en el sistema de archivos principal después de que los metadatos hayan pasado al diario. Para muchos, esta opción es la mejor configuración en cuanto a rendimiento. Sin embargo, con esta opción puede ocurrir que aparezcan viejos datos en los archivos después de haberse producido una caída del sistema mientras se garantiza la integridad del sistema de archivos. Mientras no se indique otra opción, Ext3 arrancará con la opción predeterminada data=ordered.
4. JFS
JFS, “Journaling File System”, fue desarrollado por IBM para AIX. La primera versión beta de JFS portada a Linux llegó al entorno Linux en el verano del año 2000. La versión 1.0.0 salió a la luz en el año 2001. JFS está diseñado para cumplir las exigencias del entorno de un servidor de alto rendimiento. Al ser un sistema de archivos de 64 bits, JFS soporta archivos grandes y particiones LFS (Large File Support), lo cual es una ventaja más para los entornos de servidor.
Un vistazo más detallado a JFS muestra por qué este sistema de archivos es una buena elección para su servidor Linux:
Journaling eficaz
Al igual que ReiserFS, JFS sigue el principio de “metadata only”. En vez de una comprobación completa, sólo se tienen en cuenta las modificaciones en los metadatos provocadas por las actividades del sistema. Esto ahorra una gran cantidad de tiempo en la fase de recuperación del sistema tras una caída. Las actividades simultáneas que requieren más entradas de protocolo se pueden unir en un grupo en el que la pérdida de rendimiento del sistema de archivos se reduce en gran medida gracias a múltiples procesos de escritura.
Eficiente administración de directorios
JFS abarca diversas estructuras de directorios. En pequeños directorios se permite el almacenamiento directo del contenido del directorio en su inode. En directorios más grandes se utilizan B+trees, que facilitan considerablemente la administración del directorio.
Mejor utilización de la memoria mediante la asignación dinámica de inodes
En Ext2 es necesario indicar el grosor del inode (la memoria ocupada por la información de administración) por adelantado. Con ello se limita la cantidad máxima de archivos o directorios de su sistema de archivos. Esto no es necesario en JFS, puesto que asigna la memoria inode de forma dinámica y la pone a disposición del sistema cuando no se está utilizando.
5. XFS
Pensado originariamente como sistema de archivos para sistemas operativos IRIX, SGI comenzó el desarrollo de XFS ya a principios de la década de los noventa. Con XFS consigue un sistema de archivos journaling de 64 bits de gran rendimiento adaptado a las necesidades extremas de hoy en día. XFS también está indicado para el trabajo con archivos grandes y ofrece un buen rendimiento en hardware de última generación. Sin embargo XFS, al igual que ReiserFS, tiene la desventaja de conceder mucha importancia a la integridad de los metadatos y muy poca a la de los datos:
Un breve resumen de las funciones clave de XFS aclarará por qué puede llegar a convertirse en un fuerte competidor de otros sistemas de archivos journaling en el tratamiento de datos.
Manejo de “grupos de asignación” (allocation groups)
En el momento de la creación de un sistema de archivos XFS, el dispositivo de bloque (block-device) que sirve de base al sistema de archivos se divide en ocho o más campos lineales de igual tamaño denominados grupos de asignación. Cada grupo de asignación administra inodes así como memoria libre. Se puede considerar a estos grupos prácticamente como sistemas de archivos dentro de sistemas de archivos. Puesto que estos grupos de asignación son bastante independientes, el kernel puede dirigirse a más de uno simultáneamente. Este concepto de grupos de asignación independientes satisface los requisitos de los sistemas con varios procesadores.
Alto rendimiento con eficiente administración de la memoria del disco
B+trees administran la memoria libre y los inodes dentro de los grupos de asignación. El manejo de B+trees contribuye al gran rendimiento de XFS. Una función única y característica de XFS es la llamada asignación retardada. XFS realiza la asignación de la memoria mediante la división en dos de los procesos. Una transacción “en suspenso” queda guardada en RAM y el espacio en la memoria queda reservado. XFS aún no decide dónde exactamente (en qué bloque del sistema de archivos) se almacenan los datos. Esta decisión se retrasará hasta el último momento. Con esto, algunos datos temporales no quedan nunca almacenados en el disco, ya que cuando llegue el momento de decidir el lugar de almacenamiento ya estarán obsoletos. Así, XFS aumenta el rendimiento y disminuye la fragmentación del sistema de archivos. Debido a que una asignación retardada tiene como consecuencia menos procesos de escritura que en otros sistemas de archivos, es probable que la pérdida de datos tras una caída del sistema durante el proceso de escritura sea mayor.
Preasignación para evitar la fragmentación del sistema de archivos
Antes de la escritura de los datos en el sistema de archivos, XFS reserva el espacio de memoria necesario para un archivo que vaya a ser asignado. De esta forma se reduce enormemente la fragmentación del sistema de archivos y el rendimiento aumenta, ya que el contenido de los archivos no queda dividido por todo el sistema de archivos.
Otros sistemas de archivos soportados
Principalmente se soportan para garantizar la compatibilidad y el intercambio de datos entre distintos medios o sistemas operativos.
cramfs Compressed ROM file system: un sistema de archivos comprimido con permiso de lectura para ROMs.
hpfs High Performance File System: el sistema de archivos estándar de IBM OS/2 — sólo se soporta en modo de lectura.
iso9660 sistema de archivos estándar en CD-ROMs.
ncpfs para montar volúmenes Novell a través de una red.
nfs Network File System: posibilita el almacenamiento de datos en el ordenador que se elija dentro de una red y permite garantizar el acceso a través de la red.
smbfs Server Message Block: utilizado por productos como por ejemplo Windows para el acceso de archivos a través de una red.
sysv Utilizado en SCO UNIX, Xenix y Coherent (sistemas UNIX comerciales para PCs).
ufs Utilizado en BSD, SunOS y NeXTstep. Sólo se soporta en modo de lectura.
umsdos UNIX on MSDOS: sistema de archivos basado en fat que emula las características de Unix (derechos, enlaces, nombres de archivo largos) mediante archivos especiales.
vfat Virtual FAT: extensión del sistema de archivos fat (soporta nombres de archivo largos).
ntfs Windows NT file system, sólo permiso de lectura.

Soporte de archivos grandes en Linux
Al principio, Linux sólo soportaba archivos con un tamaño máximo de 2 Gb. Debido a la creciente utilización de Linux por ejemplo en la administración de bases de datos o en la edición de datos de audio y vídeo, se ha hecho necesario el modificar el kernel y la librería GNU C (glibc) para que soporten archivos mayores de 2 Gb y se han introducido nuevas interfaces que pueden ser utilizadas por las aplicaciones. Hoy en día (casi) todos los sistemas de archivos importantes soportan LFS (Large File System – sistema de archivos grandes), lo que permite la edición de datos de gama alta.


Sist. de archivos Tamaño máx. archivo [Byte] Tamaño máx.sist.arch.[Byte]
Ext2 o Ext3 (1 kB tamaño bloque) 234 (16 GB) 241 (2 TB)
Ext2 o Ext3 (2 kB tamaño bloque) 238 (256 GB) 243 (8 TB)
Ext2 o Ext3 (4 kB tamaño bloque) 241 (2 TB) 244 (16 TB)
Ext2 o Ext3 (8 kB tamaño bloque) (sistema con páginas de 8 kB (como Alpha)) 246 (64 TB) 245 (32 TB)
ReiserFS 3.5 232 (4 GB) 244 (16 TB)
ReiserFS 3.6 (desde Linux 2.4) 260 (1 EB) 244 (16 TB)
XFS 263 (8 EB) 263 (8 EB)
JFS (512 Bytes tamaño bloque) 263 (8 EB) 249 (512 TB)
JFS (4 kB tamaño bloque) 263 (8 EB) 252 (4 PB)
NFSv2 (lado del cliente) 231 (2 GB) 263 (8 EB)
NFSv3 (lado del cliente) 263 (8 EB) 263 (8 EB)

La tabla describe los límites del formato en disco. El tamaño máximo de un archivo y un sistema de archivos para que puedan ser procesados correctamente por el kernel no ha de superar los siguientes límites (en el kernel 2.6):
• Tamaño de los archivos: en los sistemas de 32 bits, los archivos no pueden ser mayores de 2 TB (241 bytes).
• Tamaño de los sistemas de archivos: los sistemas de archivos pueden tener un tamaño de hasta 273 bytes, si bien todavía no existe ningún hardware que llegue hasta este límite.

Conversión de un sistema de archivos Ext2 a Ext3
Crear el diario (journal):
Ejecute el comando tune2fs -j como usuario root. tune2fs se encarga de crear el diario Ext3 con parámetros estándar. Si por el contrario prefiere definir usted mismo con qué tamaño y en qué dispositivo debe crearse el diario, ejecute tune2fs -J con los parámetros size= y device=. Puede obtener información adicional sobre tune2fs en las páginas del manual.
Determinar el tipo de sistema de archivos en /etc/fstab
Para que el sistema de archivos Ext3 sea detectado como tal, abra el archivo /etc/fstab y cambie el tipo de sistema de archivos de la partición correspondiente de ext2 a ext3. La modificación se aplicará tras reiniciar el sistema.
Ext3 para el sistema de archivos raíz root
Para arrancar el sistema de archivos raíz (root) en ext3, hace falta integrar adicionalmente los módulos ext3 y jbd en el RAM disk inicial initrd. A continuación introduzca estos dos módulos en el archivo /etc/sysconfig/kernel bajo INITRD_MODULES. Posteriormente ejecute el comando mk_initrd.

1 comentario:

Rashinban dijo...

HOLA!!! estoy muy confundida...^_*.
Yo descargue una pelicula que esta dividida en 4 partes y su extension es JFS.
Yo como sistema operativo uso el windows XP, y hasta ahora no he podido unir ni abrir los archivos.
¿Esta peli la pueden ver solamente los usuarios de Linux o tengo que tener un conversor de formato?
¿que hago? ¿me olvido de la pirateria y voy al BLOCKBUSTER? XD !!!
Esperando tu respuesta te saluda atte. Fernanda