Código fuente de Mke2fs
Un sistema de archivos es un software de sistema que se utiliza para administrar y organizar datos almacenados en unidades de disco para garantizar la integridad de los datos, es decir, para garantizar que los datos escritos en el disco sean consistentes con el contenido leído posteriormente. Además de almacenar datos almacenados como archivos, los sistemas de archivos también almacenan y administran información importante sobre los archivos y el propio sistema de archivos (como fecha y hora, propiedad, derechos de acceso, tamaño del archivo y ubicación de almacenamiento, etc.). Generalmente se llama metadatos.
Para evitar el efecto de cuello de botella del acceso al disco, la mayoría de los sistemas de archivos funcionan en modo asíncrono, por lo que si las operaciones del disco se interrumpen repentinamente, se pueden perder datos. Por ejemplo, ¿qué pasaría si sucede esto: estás procesando un documento en el sistema de archivos ext2 de Linux y de repente falla?
Hay varias posibilidades:
*El sistema falló al guardar el archivo. Este es el mejor de los casos y no perderá ninguna información. Simplemente reinicie su computadora y continúe trabajando.
*El sistema falló antes de que pudieras guardar el archivo. Perderás todo tu trabajo, pero la versión anterior del documento seguirá ahí.
*El sistema falló mientras se escribía en el disco un documento guardado. Este es el peor de los casos: la nueva versión del archivo sobrescribe la versión anterior. De esta forma, sólo queda una parte en el disco, la parte nueva y el archivo antiguo. Si el archivo es un archivo binario, no se puede abrir porque su formato de archivo es diferente al que espera la aplicación.
En este último caso, la situación podría ser peor si el sistema falla mientras el disco está escribiendo metadatos. En este punto, el sistema de archivos está dañado y es posible que pierda todo el directorio o la partición del disco.
El sistema de archivos estándar de Linux (ext2fs) intentará recuperar la información de metadatos dañados llamando a la herramienta de escaneo de archivos fsck al reiniciar. Debido a que el sistema de archivos ext2 conserva copias de seguridad redundantes de información de metadatos críticos, generalmente es poco probable que se pierdan datos por completo. El sistema calcula la ubicación de los datos corruptos y restaura la información de metadatos redundantes o elimina los archivos corruptos o dañados directamente.
Obviamente, cuanto más grande sea el sistema de archivos a detectar, más tardará el proceso de detección. Para docenas de particiones de tamaño g, puede llevar mucho tiempo detectarlas. A medida que Linux se ha utilizado en aplicaciones cada vez más importantes en servidores grandes, el tiempo de inactividad a largo plazo se ha vuelto cada vez más intolerable. Esto requiere un sistema de archivos más complejo y sofisticado para reemplazar ext2.
Por lo tanto, la aparición de los sistemas de archivos de registro satisface esta necesidad.
¿Qué es un sistema de archivos de registro?
Esta es solo una breve descripción del sistema de archivos de registro. Si necesita información más detallada, consulte el artículo Sistema de archivos con diario o Introducción a los sistemas de archivos con diario.
La mayoría de los sistemas de archivos modernos utilizan tecnología de registro desarrollada a partir de sistemas de bases de datos para mejorar la recuperación ante fallos. Antes de que las transacciones del disco se escriban realmente en su ubicación final en el disco, primero se escriben de manera secuencial en ubicaciones específicas en el área de registro (o área de registro) del disco.
Dependiendo de las diferentes tecnologías de implementación del sistema de archivos de registro, la información escrita en el área de registro no es exactamente la misma. Algunas implementaciones solo escriben en los metadatos del sistema de archivos, mientras que otras registran todas las escrituras.
Ahora, si se produce un fallo antes de escribir el contenido del registro, los datos originales seguirán en el disco y solo se perderán las últimas actualizaciones. Si el bloqueo ocurre durante una operación de escritura real (es decir, el contenido del registro se actualizó), el contenido del registro del sistema de archivos de registro mostrará qué operaciones se han realizado. Por lo tanto, cuando el sistema se reinicia, puede recuperar fácilmente las actualizaciones corruptas según el contenido del registro.
En cualquier caso se obtendrán datos completos y no habrá daños en la partición. Debido a que el proceso de recuperación se basa en registros, todo el proceso es muy rápido y solo toma unos segundos.
Cabe señalar que utilizar un sistema de archivos de registro no significa que no sea necesario utilizar la herramienta de análisis de archivos fsck. Los errores aleatorios de software y hardware del sistema de archivos no se pueden recuperar según los registros y se debe utilizar la herramienta fsck.
El sistema de archivos de registro actual en el entorno Linux
A continuación, analizaremos tres sistemas de archivos de registro: el primero es ext3, desarrollado por Stephen Tweedie del kernel de Linux. Ext3 se implementa agregando la función de registro al sistema de archivos ext2. El sistema de archivos ext 2 es actualmente el sistema de archivos predeterminado de redhat7.2. Se puede descargar el sistema de archivos de registro ReiserFs desarrollado por Namesys. Mandrake8.1 utiliza actualmente este sistema de archivos de registro. SGI lanzó el sistema de archivos de diario XFS en marzo de 2006. Se puede descargar en oss.sgi.com/projects/xfs/. Se utilizarán diferentes herramientas para instrumentar y probar el rendimiento de estos tres sistemas de archivos de diario.
Instalación de ext3
Consulte los artículos y entrevistas del Dr. Stephen Tweedie sobre la tecnología del sistema de archivos ext3. El sistema de archivos de diario Ext3 proviene directamente de su antecesor, el sistema de archivos ext2. Tiene la característica clave de ser totalmente compatible con versiones anteriores. De hecho, simplemente agrega la funcionalidad de registro en diario al sistema de archivos de registro en diario ext2. Su mayor desventaja es que no tiene el alto rendimiento de los sistemas de archivos modernos para mejorar la velocidad de procesamiento y descompresión de los datos de los archivos.
Ext3 está disponible como parche desde el 2.2.19. Si desea agregar soporte para el sistema de archivos ext3 al kernel, necesita usar un parche, que puede obtener. * * *Se requieren los siguientes archivos:
* ext3-0.0.7a.tar.bz2: parche del kernel
* e 2 fsprogs-1.21-WIP-0601 tar bz2. e 2 El conjunto de programas fsprogs admite ext3.
Copia linux-2.2.19.tar.bz2 y ext3-0.0.7a.tar.bz2 al directorio /usr/src y extráelos:
mv Linux Linux-old
tar-Ixvf Linux-2 2 . /p>
cat../ext3-0 . 7 a/Linux-2 2 . 0 . 7 a/Linux-2 . 2 . 19 . ext3 diff | patch-sp 1
El primero es agregar el parche del depurador del kernel kdb de SGI y el segundo es el sistema de archivos ext3. parche. A continuación, debe configurar el kernel y responder sí a "Habilitar el código de desarrollo fs de la segunda extensión" en la sección del sistema de archivos. Luego compila.
Después de compilar e instalar el kernel, debe instalar el paquete de software e2fsprogs:
tar-Ixvf e 2 fsprogs-1.21-WIP-0601 tar bz2
.cd e2fsprogs-1.21
. /Configurar
Hacer
Verificar
Instalar
Lo siguiente que debe hacer es crear un sistema de archivos ext3 en la partición y reinícielo con un nuevo kernel. En este punto, tiene dos opciones: crear un nuevo sistema de archivos con diario o actualizar el sistema de archivos ext2 existente a un sistema de archivos con diario ext3.
En el caso de crear un nuevo sistema de archivos ext3, solo puede crear un nuevo sistema de archivos ext3 usando el comando mke2fs más el parámetro -f del paquete e2fsprogs instalado:
mke2fs -j /dev/xxx
Aquí /dev/xxx es la nueva partición donde desea crear el sistema de archivos ext3. El parámetro j indica que se crea un sistema de archivos ext3 en lugar de un sistema de archivos ext2. Puede utilizar el parámetro "-Jsize=" para especificar el tamaño del área de registro deseado (n en m).
Para actualizar ext2 existente, simplemente use tune2fs:
tune2fs -j /dev/xxx
Puede actualizar los sistemas de archivos que están cargando y no cargando el sistema de archivos. Archivo si se está cargando el sistema de archivos actual. El registro se creará en el directorio donde se encuentra el punto de montaje del sistema de archivos. Si está actualizando un sistema de archivos que no está montado en ese momento, utilizará el inodo implícito del sistema para iniciar sesión. En este punto, todo el contenido del sistema de archivos se conservará y no se destruirá.
Puedes utilizar el siguiente comando para montar el sistema de archivos ext3:
mount -t text3 /dev/xxx /mount_dir
Dado que ext3 es en realidad un registro sistema de archivos sistema de archivos ext2, por lo que un sistema de archivos ext3 se puede montar como ext2.
Instalación del sistema de archivos XFS
Si necesita comprender el sistema de archivos XFS desde una perspectiva técnica, consulte el sistema de archivos XFS de SGI y las páginas de información de SGI. También puede consultar las preguntas frecuentes.
XFS es un sistema de archivos de registro desarrollado por SGI en el entorno Linux. Es una tecnología madura que se utilizó originalmente como sistema de archivos en sistemas IRIX. XFS sigue la declaración de derechos de autor de GPL. La última versión del sistema de archivos xfs es actualmente la 1.02. Descargue el kernel que admite el parche para el sistema de archivos kernel xfs o descargue el paquete RPM directamente. A continuación explicaremos cómo utilizar xfs con el kernel 2.4.14 aplicando un parche. Primero descargue el siguiente
Patch-2.4.14-xfs-1.0.2.bz2
Patch-2.4.14-xfs-1.0 .
Copie el kernel de Linux linux-2.4.2.tar.bz2 al directorio /usr/src, modifique el nombre del directorio del kernel anterior y luego descomprima el nuevo kernel:
mv Linux Linux-old
tar -Ixf inux-2.4.2.tar.bz2
Copie cada parche en el directorio fuente del kernel (por ejemplo: /usr/src/linux) y parcheelo:
parche zcat-2 .14-xfs-1 . 2-kdb . bz2 |patch-p1
Luego configure el kernel y abra la opción del kernel en la sección del sistema de archivos: "soporte del sistema de archivos xfs" (config_xfs_fs) y "soporte de búfer de página" (config_page_buf). ). Al mismo tiempo, debe actualizar las siguientes herramientas del sistema a las siguientes versiones o superiores:
módulo-2.4.0
autoconf-2.13
e 2 fsprogs-devel -1.18
Instale el nuevo kernel y reinicie el servidor.
Luego descarga la herramienta xfs. Este paquete incluye los siguientes comandos para manejar sistemas de archivos.
Instale el paquete usando el siguiente comando:
tar-zxf xfs progs-1 2 0 src . p >Configurar
Crear
Instalar
Después de instalar estos comandos, puede crear un nuevo sistema de archivos XFS:
mkfs - t xfs /dev/xxx
Si xxx es un sistema de archivos existente, debe usar el parámetro "-f" para crear una nueva partición, pero recuerde que esto destruirá todos los datos.
mkfs -t xfs -f /dev/xxx
Después de la creación, puede utilizar el siguiente comando para montar el nuevo sistema de archivos:
mount -t xfs / dev/xxx /mount_dir
Instalar el sistema de archivos ReiserFS
Si desea obtener más información sobre el sistema de archivos reiserFS desde una perspectiva técnica, consulte NAMESYS y Preguntas frecuentes.
El sistema de archivos ReiserFS es oficialmente compatible con el kernel de Linux a partir de 2.4.1-pre4. Para utilizar el sistema de archivos reiserfs, primero debe instalar herramientas de soporte del sistema de archivos en el sistema (como la herramienta mkreiserfs utilizada para crear sistemas de archivos reiserFS). La última versión del sistema de archivos ReiserFS se puede agregar como parche al kernel 2.2.x o 2.4.x. Aquí tomamos 2.2.19 como ejemplo:
El primer paso es descargar el código fuente del kernel y el parche 2.2.19 del sistema de archivos ReiserFS. La última versión del parche es Linux-2 2 . 19-Reiserfs-3 5 . .
Luego extraiga el código fuente del kernel y el paquete de parches en /usr/src:
tar-Ixf Linux-2 2 . bzcat Linux-2 2 . 19-reiserfs-3 . 34-patch . Luego instale el software de la herramienta del sistema de archivos:
CD/usr/src/Linux/fs/reiserfs/utils
Fabricación
Instalar
Instale el nuevo kernel y reinicie. Ahora puedes crear un nuevo sistema de archivos reiserfs y montarlo:
mkreiserfs /dev/xxxx
mount -t reiserfs/dev/XXX/mount _ dir
Prueba de rendimiento del sistema de archivos
El entorno informático utilizado en el entorno de prueba es el siguiente: Pentium III-16 Mb RAM-2 Gb HD, el sistema operativo es RedHat6.2, todos los sistemas de archivos pueden funcionar normalmente. por lo que se realizan pruebas comparativas, analizan y comparan su desempeño. Primero, desconecté la alimentación del sistema directamente, simulé un corte de energía del sistema y probé el proceso de recuperación del sistema de archivos de registro. Todos los sistemas de archivos pasaron con éxito la fase de detección del escaneo de archivos y después de unos segundos el sistema fue escaneado y luego se inició normalmente.
El siguiente paso es realizar la prueba utilizando el programa de prueba de rendimiento de Bonnie. Este programa accede a archivos de tipo base de datos, creando, leyendo y eliminando archivos pequeños. Estas operaciones son más comunes para los programas de servidor de correo en formato Squid, INN o Maildir (qmail).
El comando de prueba de rendimiento es:
bonnie - d/work 1-s 10-R4-u0
Prueba el sistema de archivos cargado en el directorio /work1 a 10Mb (-s10) . Por lo tanto, antes de realizar la prueba, se debe crear un sistema de archivos apropiado y cargarlo en el directorio /work1. Otros parámetros especifican el número de m en el tamaño de la memoria (-r4) y ejecutan el programa de prueba como root. Los resultados de la prueba son los siguientes:
Cada prueba tiene dos conjuntos de datos: velocidad del sistema de archivos (K/seg) y utilización de la CPU (CPU). Cuanto mayor sea la velocidad, mejor será el sistema de archivos. Para la velocidad de la CPU, cuanto menor sea el número, mejor será el rendimiento. Se puede ver que el sistema de archivos Reiserfs tiene el mejor rendimiento en operaciones de archivos (creación secuencial y creación aleatoria), que es 10 veces mayor que otros sistemas de archivos. En otros aspectos (salida secuencial y entrada secuencial) está a la par con otros sistemas de archivos. Para otros sistemas de archivos, no hay diferencias notables. El rendimiento de XFS está cerca del sistema de archivos ext2, mientras que el sistema de archivos ext3 es ligeramente más lento que ext2 (porque el registro requiere algo de tiempo adicional). Finalmente, use mongo (obtenido de un programa de prueba de rendimiento) y modifíquelo para probar los tres sistemas de archivos de diario. Aquí, los comandos para cargar los sistemas de archivos xfs y ext3 se agregan al programa mongo.pl, se formatean y luego comienza el análisis de la prueba de rendimiento. El formato del script se divide en /dev/xxxx, y cada etapa carga y ejecuta una cantidad específica de procesos: creación, copia, procesamiento de enlaces simbólicos, lectura, visualización de información sobre el estado del archivo, cambio de nombre y eliminación de archivos. Al mismo tiempo, el programa calculará la fragmentación tras las fases de creación y copia.
Fragmo = número de fragmentos/número de archivos
Puedes obtener los mismos resultados de comparación de pruebas en el archivo de resultados:
Registrar resultados sin procesar
log .TBL - Salida del programa de comparación.
log_table: resultados en formato tabular.
Pruebe con el siguiente comando:
mongo . pl ext3/dev/hda 3/work 1 logext 3 1
Si desea probar otros sistemas de archivos , debe cambiar el cambio ext3 anterior en los parámetros del comando a reiserfs o xfs. Otros parámetros son la partición a cargar, la ruta de carga, el nombre del archivo para guardar los resultados de la prueba y la cantidad de procesos a iniciar.
La siguiente tabla muestra los resultados de las pruebas. La unidad de datos es segundos. Cuanto menor sea el valor, mejor será el rendimiento. El tamaño del bloque de datos utilizado en la primera tabla de prueba fue de 100 bytes, la segunda tabla fue de 1000 bytes y la última tabla fue de 10000 bytes.
Como se puede ver en la tabla anterior, ext3 funciona mejor al eliminar y cambiar el nombre de estados, mientras que el sistema de archivos ReiserFS funciona mejor al crear y copiar archivos. Al mismo tiempo, también podemos ver que reiserFS, como se menciona en su documentación técnica, tiene un rendimiento excelente en el procesamiento de archivos pequeños.
Conclusión
Actualmente, Linux tiene al menos dos sistemas de archivos de registro robustos y confiables para elegir (XFS y reiserFS), los cuales son ampliamente utilizados. Por ejemplo, Mandrake8.1 admite el sistema de archivos reiserFS de forma predeterminada.
Se puede ver en los resultados de las pruebas de rendimiento que reiserFS es la mejor opción.