GNU/Linux >> Tutoriales Linux >  >> Linux

Todo lo que necesita saber sobre el sistema de archivos de Linux

Los archivos y su manipulación se encuentran en el centro de la informática moderna. Incluso uno de los principios básicos de todos los sistemas similares a Unix es describir todo en el sistema como archivos. Se mantiene para prácticamente todos los sistemas Linux. Desde directorios hasta dispositivos, su distribución de Linux trata todo en su sistema como archivos. Ahora, los sistemas también deben incorporar un medio para almacenar y administrar estos archivos. Aquí es donde entran en juego los sistemas de archivos de Linux. Dado que Linux es compatible con numerosos sistemas de archivos e implementa varias operaciones para ellos, creemos que es necesario proporcionar a nuestros lectores algunos conocimientos sobre cómo funcionan los sistemas de archivos en Linux.

Fundamentos del sistema de archivos de Linux

El sistema de archivos de Linux es responsable de almacenar los datos de su sistema y administrarlos. Un sistema de archivos se puede definir como el mecanismo detrás del almacenamiento y recuperación de datos. Los sistemas de archivos generalmente se componen de varias capas, incluida una capa lógica que proporciona interacción con el usuario, API para diferentes operaciones de archivos, etc.

Es posible que haya notado que toda su instalación de Linux se resuelve alrededor de / punto. Se llama la raíz del sistema de archivos y es esencialmente el punto de partida de su sistema. Contiene varios directorios, la mayoría con algún significado histórico. Discutiremos la jerarquía del sistema de archivos de Linux y otros Unix más adelante en esta guía.

Puede conectar componentes adicionales a esta jerarquía del sistema de archivos montándolos en un punto de montaje. Una vez montado, los usuarios pueden atravesar nuevos sistemas de archivos usando este punto. Le mostraremos cómo hacer esto en las siguientes secciones. Ahora bien, ¿cómo realiza el sistema un seguimiento de estos sistemas de archivos? En resumen, utiliza tablas de partición predefinidas para determinar los inodos (puntos de partida), los límites, los nombres y otra información para hacer esto.

Al definir tablas de particiones usando administradores de particiones de Linux, es posible que haya notado que hay varios tipos de sistemas de archivos. Algunos ejemplos comunes son NTFS, FAT y EXT. Linux admite una amplia gama de tipos de sistemas de archivos, como verá más adelante.

Descubrimiento de la estructura del sistema de archivos de Linux

El sistema de archivos de Linux tiene un parecido significativo con el sistema de archivos original de Unix. Aunque las innovaciones informáticas modernas han ayudado en el aumento de las tendencias más nuevas, la jerarquía del sistema de archivos sigue siendo casi la misma debido a su importancia histórica. Hemos esbozado esta jerarquía usando ejemplos apropiados en esta sección. Suponemos que está familiarizado con el intérprete de línea de comandos, también conocido como shells de Linux.

De forma predeterminada, al usuario se le presenta el /home/USER directorio en cada inicio de sesión. Puede confirmar esto escribiendo pwd en la terminal. Usaremos tree, una de las utilidades de facto para visualizar jerarquías de directorios en Linux. Puede obtener esto en Ubuntu emitiendo sudo apt install tree.

- -

Si ejecuta tree en su directorio actual, es probable que se encuentre en una estructura compleja y críptica. Sucede porque el árbol atraviesa cada elemento en esta ubicación (es decir, imágenes, documentos, descargas, etc.) de forma recursiva y crea la estructura final combinándolos. Sin embargo, puede agregar el -L bandera para especificar la profundidad de este comando.

$ tree -L 1

Ejecutar este comando le dará una estructura sencilla similar a un árbol que consiste solo en los componentes de primer nivel de su punto de partida. Puede aumentar este valor para obtener una visualización más transparente y robusta. Puede usar el comando cd para cambiar ubicaciones dentro de su sistema de archivos. Ahora, hemos discutido anteriormente que todo en Linux es un archivo. Entonces, un directorio debe ser un archivo. De hecho lo es.

Los directorios son solo archivos especiales que contienen el nombre de otros archivos (también conocidos como elementos secundarios). Las nuevas instalaciones de Linux vienen con algunos directorios integrados. Los discutiremos a continuación. Le ayudará a comprender mucho mejor su sistema.

Primero, vaya a la raíz de su sistema usando cd / y ejecute ls. Esto le mostrará todos estos directorios predeterminados. Continúe leyendo para descubrir su propósito.

/bin

Contiene los archivos binarios, también conocidos como ejecutables de los diversos programas instalados en su máquina. En muchos sistemas, esto no existe como un directorio real, sino que sirve como enlace simbólico a /usr/bin directorio.

/arranque

Todos los archivos esenciales necesarios para el inicio del sistema se encuentran aquí. No debe experimentar con el contenido de este directorio a menos que sepa lo que está haciendo. De lo contrario, podría corromper el propio sistema e interrumpir la funcionalidad.

/desarrollo

El directorio /dev contiene los archivos de dispositivo de su sistema. Estas son las representaciones de archivos de sus unidades USB, unidades de disco duro, cámara web, etc.

/etc

Históricamente, el /etc El directorio se usó para guardar varios archivos misceláneos. Hoy, sin embargo, es una convención estándar almacenar los archivos de configuración de todo el sistema en este directorio. Aquí se almacena información como su nombre de usuario/contraseña, credenciales de red, punto de montaje de particiones.

/inicio

Este es el directorio personal del usuario. Puede albergar múltiples subdirectorios según la cantidad de usuarios en su máquina. Digamos que eres el usuario "maníaco", luego se te asignará el directorio /home/maniac. Cuando inicie sesión, se le presentará el directorio /home/maniac dentro de su terminal. También se denota como :~$ en el shell de Bash.

/lib

Las bibliotecas del sistema se encuentran aquí. Estos son los fragmentos de código utilizados por sus aplicaciones para realizar alguna tarea. Su ejemplo incluye fragmentos de código que dibujan ventanas o envían archivos.

/medios

Este directorio es el punto de montaje de los dispositivos plug and play, como el almacenamiento externo. Es una adición relativamente nueva al sistema de archivos de Linux.

/mnt

Los viejos y malhumorados administradores de Unix usaban este directorio para montar manualmente dispositivos o particiones bajo demanda. Aunque se usa con poca frecuencia, permanece en el sistema de archivos de Linux debido a su importancia histórica.

/optar

Significa opcional y está destinado a contener archivos de sistema opcionales. Los administradores suelen utilizarlo para alojar aplicaciones de terceros que instalaron desde la fuente.

/proc

Aloja los archivos de proceso, los módulos del kernel y datos dinámicos similares. No debe interferir con esto, de lo contrario puede dejar su sistema obsoleto.

/raíz

Me gusta /inicio pero para el superusuario del sistema. Es el directorio que se le presentará cuando cambie a la cuenta raíz.

/correr

Esto se utiliza para almacenar datos temporales utilizados por los procesos del sistema Linux. No te metas aquí a menos que sepas lo que te espera.

/sbin

Me gusta /bin pero solo contiene binarios esenciales del sistema. Varias utilidades de uso diario como ls, cd, cp, etc. se encuentran aquí. No los manipules.

/usr

Una ubicación de "úsalo para todo tipo" donde se almacena información variada. Pueden incluir archivos binarios, bibliotecas, íconos, manuales, etc.

/srv

El directorio del servidor. Contiene los archivos fuente de las aplicaciones web y aloja otros protocolos de comunicación.

/sistema

Otro directorio virtual, como /dev . Contiene información confidencial y no debe experimentarse a menos que el usuario sepa lo que está haciendo.

/tmp

Se utiliza para almacenar valores temporales que se eliminarán durante el reinicio del sistema.

/var

El propósito original de este directorio era albergar todos los archivos de variables. Hoy en día, contiene varios subdirectorios para almacenar cosas como registros, cachés y demás.

Puede haber algunos directorios adicionales en su raíz. Por lo general, está sujeto a la distribución específica de Linux y puede variar entre sistemas.

Inspección de la jerarquía del sistema de archivos de Linux

Puede moverse rápidamente por la jerarquía de su sistema de archivos utilizando herramientas de línea de comandos estándar. Hemos compilado una lista de algunos de los comandos de terminal de Linux más utilizados para este propósito. Dirígete allí si te resulta difícil seguir el ritmo de la siguiente sección.

Entonces, después de encender su terminal, está en /home/USER ubicación, señalada por el :~$ señal. Puede moverse a una nueva ubicación usando el comando cd (cambiar directorio) como cd /etc. Use el comando de árbol como se muestra a continuación para generar una estructura de visualización simple de su directorio actual, como se muestra a continuación.

$ tree -L 1

Puede ver el tipo de archivo con el comando ls -l. La primera sección de su salida indica con qué tipo de archivos está tratando. Por ejemplo, supongamos que su directorio actual contiene un subdirectorio llamado Imágenes y un archivo de texto llamado prueba. Ejecute el comando ls -l en este directorio y busque la línea que contiene información sobre estos dos elementos.

Verás que la línea que contiene la carpeta Imágenes comienza con d , como en el directorio. Mientras tanto, el elemento inicial de la línea para la prueba debe ser , que denota archivos regulares. Otros archivos como dispositivos y enchufes se representan de manera similar. Los archivos especiales se indican con c , enchufes que usan s , tubos con p , bloquear dispositivos con b y enlaces simbólicos con l .

Otro comando robusto que se puede usar para determinar el tipo de archivo es archivo comando mismo. Para el ejemplo anterior, ejecutar el archivo de comando Pictures arrojaría el resultado 'directorio'. Además, la prueba de archivo debería producir algo como texto ASCII, que denota un archivo de texto simple.

$ file FILENAME

También puedes usar el montaje comando para adjuntar un sistema de archivos en una ubicación específica en su jerarquía. El siguiente comando monta el /dev/sdb dispositivo a /inicio/USUARIO/dispositivos .

$ sudo mount /dev/sdb /home/USER/devices

El usuario ahora puede acceder al contenido de este dispositivo desde la ubicación seleccionada. Para encontrar el nombre de un dispositivo de bloqueo, puede usar lsblk dominio. Del mismo modo, lspci se puede utilizar para detectar dispositivos PCI, lsusb para enumerar los USB y lsdev para enumerar todos los dispositivos.

Comprensión de los tipos de archivos y permisos

Como ya se mencionó, hay varios tipos de archivos en el sistema de archivos de Linux. Cada uno tiene su propio propósito, pero trataremos principalmente con archivos y directorios regulares. Los archivos regulares incluyen archivos cotidianos como códigos fuente, ejecutables, documentos, música y demás. Los directorios son archivos simples que contienen el nombre de otros archivos. Mientras tanto, los archivos especiales son componentes del sistema de bajo nivel, como tuberías y enchufes. Por lo general, estos son tratados por el kernel de Linux.

Ahora, los permisos son un concepto completamente diferente y son extremadamente importantes para los usuarios de Linux. Debe comprenderlos claramente si desea sobresalir en sus habilidades de administración del sistema. Linux, al igual que otros Unix, usa permisos de archivo para determinar cuánto privilegio tiene un usuario sobre un archivo.

Los permisos aseguran que los usuarios solo puedan acceder o modificar aquellos contenidos del sistema que tienen permitido. Es el aspecto más crucial detrás de la seguridad de su sistema Linux. Dado que los permisos de archivos de Linux son un tema extremadamente importante en sí mismos, hablaremos de ellos en detalle en una guía posterior. Por hoy, nos ceñiremos a lo básico.

Anteriormente usamos el comando ls -l para determinar los tipos de archivos. Lo determinamos simplemente mirando el primer carácter de la columna inicial. Ahora, esta es la columna que dicta los permisos. Ejecute ls -l nuevamente, pero en un archivo/directorio específico.

La primera sección del resultado debe contener tres campos separados por símbolo. El primer carácter denota el tipo de archivo. Será para archivos regulares, como hemos dicho anteriormente. La siguiente parte debe contener uno o más caracteres del conjunto {r, w, x} . Por ejemplo, si es rw , entonces el usuario tiene acceso de lectura (r) y escritura (w). Si es (rwx ), el usuario tiene permisos de lectura, escritura y ejecución (x).

Entonces, si esta sección denota el control de acceso del usuario, ¿por qué hay dos secciones más similares? Son los permisos del grupo y de otros usuarios. Dado que Unix es un sistema multiusuario, el sistema de archivos se diseñó para facilitar el uso simultáneo del mismo sistema por diferentes usuarios. Cada usuario tenía su propio par de nombre de usuario y contraseña, que podían usar para acceder a un sistema. Los permisos simplemente definen cuánto control tiene un usuario específico sobre algún contenido.

Puedes modificar los permisos de algunos contenidos usando el chmod y chown comandos Se mostrarán en una guía gratuita.

Una descripción general de los diferentes tipos de sistemas de archivos de Linux

Hay varios tipos de sistemas de archivos en los sistemas operativos basados ​​en Linux. Los tipos comunes de sistemas de archivos de Linux son ext3, ext4, zfs, FAT, XFS y Btrfs. Sin duda, hay muchos más en esta lista, y le daremos una descripción concisa de ellos en breve. Encontrar el tipo de sistema de archivos correcto generalmente depende de los requisitos de los usuarios. Recomendamos a los usuarios principiantes de Linux que utilicen el sistema de archivos de diario ext4.

Dado que existen múltiples tipos de sistemas de archivos de Linux, creemos que es esencial tener algún conocimiento sobre ellos. Aquí presentamos 10 tipos de sistemas de archivos ampliamente utilizados en Linux.

1. Sistemas de archivos EXT

El ext(Extended File System) está diseñado especialmente para Linux y cuenta con 4 versiones hasta la fecha. Son ext, ext2, ext3 y ext4. La mayoría de las distribuciones modernas ya no brindan soporte para ext y ext2. La versión ext3 implementó el registro en diario, una función que evita la corrupción de datos en caso de fallas eléctricas accidentales. Ha visto una disminución relativa en el uso desde que se lanzó la versión ext4. Ext4 es el tipo de sistema de archivos predeterminado en las distribuciones más recientes.

2. BtrFS

El “B-Tree File System” es un innovador sistema de archivos desarrollado por Oracle. Ofrece algunas características sorprendentes ausentes en los tipos de sistemas de archivos estándar de Linux. Algunos de ellos incluyen la capacidad de tomar instantáneas sobre la marcha, capacidades de agrupación de unidades, desfragmentación en línea y métodos de compresión transparentes. Muchas personas pronuncian BtrFS como "Mejor FS" y lo consideran el próximo gran tipo de sistema de archivos en servidores Linux y estaciones de trabajo personales.

3. ReiserFS

ReiserFS es otro sistema de archivos basado en diario que se puede utilizar para la informática de propósito general. Es compatible con Linux y cuenta con una licencia GNU GPL de código abierto. ReiserFS obtuvo muchos seguidores en sus primeros años debido a algunas de las características que eran relativamente nuevas en ese momento. Entre ellos se incluyen la capacidad de cambiar el tamaño de los volúmenes en línea, el empaquetado final para reducir la fragmentación interna y el registro en diario solo de metadatos. El desarrollo de ReiserFS se ha estancado debido a que su desarrollador principal está en prisión.

4. ZFS

ZFS es un sólido sistema de archivos y administrador de volúmenes desarrollado por Sun Microsystems y actualmente es mantenido por Oracle. Es un sistema de archivos extremadamente poderoso que admite almacenamientos masivos, técnicas de compresión eficientes, modelos RAID modernos, deduplicación de datos y muchas más funciones. ZFS está disponible en la mayoría de las distribuciones de Linux y BSD junto con Mac OS y FUSE. Los usuarios de Ubuntu pueden descubrir más sobre ZFS aquí.

5. XFS

XFS es un sistema de archivos similar a Ext4 desarrollado por Silicon Graphics y está disponible en Linux desde 2001. Ofrece muchas funciones que se encuentran en el sistema de archivos ext4 estándar, pero limita algunas de sus capacidades. XFS utiliza una técnica llamada asignación retrasada para detectar fragmentaciones de archivos de manera más efectiva. Por lo tanto, es adecuado para configurar almacenamientos NAS y SAN de Linux. Descubrimos que funciona mejor con archivos grandes pero bastante más lento cuando se trata de una gran cantidad de archivos más pequeños.

6. JFS

JFS es un acrónimo de 'Journaled File System', un sistema de archivos de Linux desarrollado por IBM. Es conocido por su uso limitado de los recursos de la CPU y proporciona un rendimiento significativamente mejor tanto para archivos grandes como para colecciones de varios archivos más pequeños. Además, permite a los administradores del sistema cambiar el tamaño de sus particiones de forma dinámica. Esta función, sin embargo, solo admite la ampliación, no la reducción.

7. MARTILLO

HAMMER es un tipo de archivo extremadamente robusto desarrollado para la versión DragonFly BSD. Es un sistema de archivos de alta disponibilidad que solo admite sistemas de 64 bits. Hammer utiliza árboles B+ para implementar sus funcionalidades, que incluyen la capacidad de tomar instantáneas exportables de NFS ilimitadas, retención de historial, sumas de verificación y operaciones maestro-esclavo múltiple, entre otras. También es compatible con la deduplicación de datos bajo demanda y las compresiones transparentes.

8. GRASA

FAT o tabla de asignación de archivos es una clase de sistema de archivos conocida por su flexibilidad y su sólido conjunto de funciones. Algunos sistemas de archivos FAT populares incluyen FAT 16, FAT32, exFAT y vFAT. Son uno de los sistemas de archivos más utilizados debido a su incorporación en máquinas Windows más antiguas. Linux es compatible con un amplio conjunto de sistemas de archivos FAT conocidos por su alto rendimiento.

9. NTFS

NTFS (Sistema de archivos de nueva tecnología) es otro tipo de sistema de archivos común para muchos usuarios. Es el sistema de archivos predeterminado en las máquinas Windows modernas y es compatible con Linux y otros sistemas BSD. NTFS implementa varias técnicas para aumentar su rendimiento y es un sistema de archivos registrado. Admite flujos de datos alternativos, varios métodos de compresión, cambio de tamaño, archivos dispersos y muchas más funciones.

10. cramfs

El sistema de archivos ROM comprimido, también conocido como cramfs, es uno de los tipos de sistemas de archivos más utilizados en los sistemas integrados. Es solo un sistema de archivos de solo lectura que permite que el sistema lea imágenes sin la necesidad de descomprimirlas primero. Esta es la razón por la que muchas distribuciones de Linux lo usan para imágenes initrd e imágenes de instalación.

Hay muchos más tipos de sistemas de archivos en Linux. Además, permite a los usuarios adjuntar múltiples tipos de particiones en la estructura del sistema de archivos. Es, de hecho, una práctica muy extendida. Un tipo especial de sistema de archivos de Linux es el intercambio. En realidad, no es un sistema de archivos, sino una técnica utilizada para implementar la memoria virtual.

Comprobación del tipo de sistema de archivos en Linux

Dado que Linux permite a los usuarios usar más de un tipo de sistema de archivos al mismo tiempo, a menudo es necesario verificar el tipo de sistema de archivos antes de realizar operaciones con archivos. Describiremos algunos métodos convencionales para determinar el tipo de sistema de archivos de una partición desde la línea de comandos.

1. Identificación del tipo de sistema de archivos mediante el comando df

Puede determinar el tipo de sistema de archivos en Linux usando el siguiente comando df. Consulte nuestros ejemplos de comandos df de Linux para comprender el comando df en detalle.

$ df -T /

Produciría el tipo de sistema de archivos raíz (/) en la columna de salida Tipo.

2. Identificación del tipo de sistema de archivos mediante el comando fsck

El comando fsck (Comprobación del sistema de archivos) se puede utilizar para determinar el tipo de sistema de archivos de una partición. El -N se utiliza para deshabilitar las comprobaciones de errores.

$ fsck -N /

Este comando debe mostrar el tipo de sistema de archivos y su ID de bloque.

3. Identificación del tipo de sistema de archivos mediante el comando lsblk

El comando lsblk se usa para mostrar los dispositivos de bloque en una máquina Linux. Puede agregar la -f marca para decirle a lsblk que muestre el tipo de sistema de archivos.

$ lsblk -f

Imprimirá todos los dispositivos de bloque junto con su tipo, punto de montaje y disponibilidad.

4. Identificación del tipo de sistema de archivos mediante el comando mount

Como se discutió anteriormente, el montaje se usa para adjuntar un dispositivo o partición a una ubicación seleccionada en su sistema de archivos. También puede usarlo con grep para determinar el tipo de archivo de los sistemas de archivos Linux montados actualmente.

$ mount | grep "^/dev"

Mostrará todas las particiones montadas con su tipo.

5. Identificación del tipo de sistema de archivos mediante el comando blkid

El comando blkid se usa para imprimir las propiedades de los dispositivos de bloque. También muestra el tipo de sistema de archivos, como se muestra en el siguiente ejemplo.

$ blkid /dev/sda9

Contiene información adicional. Puede usar el comando de corte de Linux para extraer la información específica.

$ blkid /dev/sda9 | cut -d ' ' -f 3

6. Identificación del tipo de sistema de archivos mediante el comando de archivo

El comando de archivo imprime información sobre archivos y directorios. Agregando el -sL La opción para archivar también le permite determinar el tipo de sistema de archivos.

$ sudo file -sL /dev/sda9

Imprimirá el tipo de sistema de archivos de la partición /dev/sda9.

7. Identificación del tipo de sistema de archivos mediante el archivo fstab

El archivo fstab contiene la información utilizada por su sistema para determinar el tipo de sistema de archivos. Puede usarlo para obtener el tipo de sistema de archivos, como se muestra a continuación.

$ cat /etc/fstab

Este comando imprimirá el tipo de sistema de archivos de sus particiones junto con otra información.

8. Identificación del tipo de sistema de archivos mediante el comando parted

El comando parted es una de las formas más útiles de determinar los tipos de sistemas de archivos en Linux. Puede usarlo, como se muestra a continuación.

$ sudo parted -l

Este comando debe imprimir todas las particiones junto con su tipo de sistema de archivos Linux y otra información. Use este método cuando necesite determinar el tipo de todos los sistemas de archivos en su sistema.

9. Identificación del tipo de sistema de archivos mediante el comando inxi

Otro comando útil que permite a los usuarios averiguar el tipo de sistema de archivos es inxi. Puede usar el siguiente comando para descubrir el tipo de sistema de archivos de todas las particiones.

$ inxi -p

Imprimirá todos los dispositivos junto con su información de tipo.

10. Identificación del tipo de sistema de archivos mediante el archivo mtab

También puede grep el archivo mtab para obtener la información de tipo para los sistemas de archivos montados. El siguiente comando le muestra cómo hacer esto.

$ cat /etc/mtab | grep "/dev/sd*"

Imprimirá el tipo de información de los dispositivos montados actualmente.

Pensamientos finales

El sistema de archivos de Linux cubre numerosos aspectos de su distribución de Linux favorita. Desde el punto de vista de la ingeniería de software, discutimos cómo Linux estructura sus sistemas de archivos y dicta varios comandos para atravesar esta jerarquía de manera efectiva. El tipo de sistema de archivos en Linux denota la entidad lógica de un sistema de archivos en particular. Hemos esbozado diez tipos de sistemas de archivos de Linux ampliamente utilizados y luego le mostramos cómo determinar esto desde la terminal. Aunque es muy difícil abarcar el sistema de archivos en una sola guía, nuestros editores han hecho todo lo posible para hacer lo imposible. Déjanos un comentario si tienes alguna confusión o tienes más preguntas.


Linux
  1. 30 cosas que no sabías sobre el kernel de Linux

  2. Todo lo que necesita saber sobre Ubuntu 13.04

  3. 15 cosas que debe saber sobre la estructura de directorios de Linux

  4. Compresión de archivos de Linux:todo lo que necesita saber

  5. Permisos de archivos de Linux:todo lo que necesita saber

Todo lo que necesita saber sobre Black Lab Linux

Todo lo que necesita saber sobre la distribución Linux Mint

Todo lo que necesita saber sobre los inodos en Linux

Todo lo importante que necesita saber sobre Hard Link en Linux

Todo lo importante que necesita saber sobre UID en Linux

Todo lo que necesita saber sobre el directorio /tmp de Linux