Sistemas de archivos vs particiones vs directorios

30

Soy nuevo en Linux, así que discúlpeme por la posible confusión que pueda encontrar en esta pregunta.

Por lo que entiendo, el sistema de archivos especifica cómo una partición almacena / gestiona archivos, con estándares como ext2, ext3, reiserfs, xfs, etc. Ocasionalmente veo que la gente parece referirse a cada " directory" como

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem

¿Por qué nos referiríamos a estos como filesystems?

Si cada uno de ellos es una partición, eso me confunde porque, hasta donde yo sé, /usry /usr/bintienden a estar en la misma partición, pero vi que la gente se refiere a ambos /usr filesystemy /usr/bin filesystem.

Si filesystemaquí es equivalente a Windows directory, no me queda claro ya que aparentemente el sistema de archivos es algo más que directorios. Además, que yo sepa, Linux no tiene directoryconcepto; Todos son archivos.

Kenny
fuente
Nunca he visto una instancia del "sistema de archivos / root". Cualquier sistema de archivos montado en "/" es "el sistema de archivos raíz". Algunos otros puntos de montaje probables en una distribución moderna de Linux serían "/ boot", "/ home" y "/ mnt / xx" o "/ media / xx" para varios valores de "xx". Las distribuciones Kernel 2.x + (?) Tendrán "/ proc" y "/ sys", Systemd tiene puntos de montaje "/ var / run / nnnn" para varios UID numéricos nnnn. Las instalaciones antiguas de Unix pueden montar "/ usr" a través de NFS, pero eso es poco probable en una distribución personal de Linux. "/ bin" y "/ usr / bin" normalmente no serían puntos de montaje separados.
David
Hay un / root , ¿no? ¿Quiere decir que nunca se queda en un sistema de archivos separado?
Kenny
Correcto. "/ root" es el directorio de inicio estándar para el usuario "root", pero generalmente es solo otro directorio en el sistema de archivos raíz.
David
Este tema se ha discutido ampliamente en Ask Ubuntu , que, IMNSHO, es una tontería, ya que, AFAIK, los conceptos no son diferentes en Ubuntu que en cualquier otra forma de Unix o Linux. Por ejemplo, ¿Qué es "monte"? fue preguntado hace solo unos días.
Scott
Estoy bastante impresionado con las preguntas. Dado que conocemos poco, ya podría comprender bastante en este momento y que se ha perdido la conclusión de que "/ sistema de archivos raíz" puede referirse al sistema de archivos en el que está montada la partición /root, creo que es descartable teniendo en cuenta la complejidad de situación.
erikbwork 01 de

Respuestas:

14

Como escribí en /superuser//a/293160/38062 :

El problema aquí es la palabra "sistema de archivos". En los mundos POSIX / Unix / Linux, se usa para significar varias cosas diferentes.

  1. El "sistema de archivos" es a veces todo el sistema de archivos, enraizado /y presentado a los softwares de aplicaciones por el núcleo del sistema operativo. Con este significado, la gente habla de sistemas operativos POSIX que tienen un " árbol de sistema de archivos único ", por ejemplo.
  2. Un "sistema de archivos" es a veces uno (o más) segmento (s) de un (o varios) DASD (s) - una o más colecciones de sectores contiguos de disco formateados como un solo volumen con un formato dado - como demarcado por alguna partición de disco esquema. Con este significado, la gente habla de, por ejemplo, "formatear mi /usrsistema de archivos ". " /usr" aquí está el punto de montaje (esperado) del volumen o (en algunos esquemas de partición) su etiqueta de identificación.
  3. Un "sistema de archivos" es a veces un árbol abstracto de archivos y directorios, presentado por un controlador de sistema de archivos (es decir, la capa VFS) al resto del sistema. Con este significado, la gente habla de, por ejemplo, "montar el sistema de archivos proc/proc " o "usar un sistema de archivos tmpfs para /tmp".

Estás viendo el significado # 1 cuando ves " /usr/binsistema de archivos". Es un árbol de sistema de archivos enraizado en el directorio /usr/bin. Sí, Linux tiene mucho el concepto de directorios.

El significado # 2 y el significado # 3 son lo que estás interpretando mal. La gente no habla de /usr/binun conjunto de datos en el disco, delimitado por la división / división de discos. Tampoco se trata de /usr/binun tipo particular de controlador de sistema de archivos, o un formato de volumen de disco particular.

Otras lecturas

  • Ramesh Bangia (2010). "sistema de archivos". Diccionario de Tecnología de la Información . Laxmi Publications, Ltd. ISBN 9789380298153. p. 224
  • Sistema de archivos . "Definiciones básicas". Las especificaciones de la base del grupo abierto . Edición 7 IEEE 1003.1. El grupo abierto. 2013
  • Binh Nguyen (16-08-2004). "sistema de archivos". El diccionario de Linux . Versión 0.16. pags. 616.
JdeBP
fuente
8

Por supuesto, Linux usa el concepto de directorios. El concepto de directorios es el mismo que en Windows.

El concepto de sistemas de archivos también es muy similar al que se usa en Windows. Windows usualmente usa NTFS o FAT - Linux usualmente usa ext2, ext3, ext4, etc., esa es la diferencia.

Lo que es diferente es que en Linux los archivos / directorios de todas las particiones disponibles están organizados en un solo árbol. En Windows, usted hace referencia a diferentes particiones usando una letra, fe "a:", "c:", en la ruta completa de Linux a cualquier archivo disponible que comience con "/" - el directorio raíz. Por ejemplo, hay una partición separada en su disco duro con archivos recuperados para arrancar el sistema: ejecuta el comando 'mount' con argumentos apropiados y el contenido de esta partición está disponible en la ruta "/ boot /". Entonces, las rutas fe "/ boot" y "/ home" pueden referirse a datos en diferentes particiones, estas particiones pueden tener diferentes sistemas de archivos. Probablemente causó tu malentendido.

Los directorios que se encuentran físicamente en la misma partición siempre "tendrán el mismo sistema de archivos". Cuando alguien habla sobre el sistema de archivos de algún directorio, en realidad se trata del sistema de archivos de la partición donde se encuentra este directorio.

(Corrección menor y probablemente no importante: a veces el sistema de archivos es virtual y no hay ninguna partición correspondiente. Por ejemplo, "/ proc" contiene algo que se parece mucho a los archivos, pero estos "archivos" son virtuales, no residen en cualquier disco duro y contiene información sobre los procesos en ejecución. Y hay un sistema de archivos "procfs" especial que proporciona una interfaz de tipo de archivo habitual para estos datos)

lesnik
fuente
Usted mencionó "sistema de archivos de un directorio", ¿se conecta en cascada a todos sus subdirectorios. ¿Es posible que un directorio y sus subdirectorios tengan un sistema de archivos diferente? Por ejemplo / a y / a / b , con / b es otra partición con su propio sistema de archivos F2 montado en un sistema de archivos F1?
Kenny
En cuanto a si los directorios ubicados en la misma partición son, de hecho, parte del mismo sistema de archivos pueden ser un poco confusos para algunos sistemas de archivos muy modernos como ZFS o btrfs; puede tener un volumen ZFS con varios sistemas de archivos compartiéndolo, con sus propios puntos de montaje completamente distintos.
Charles Duffy
@ Kenny Sí, tienes razón. Ejemplo en vivo: inserto un disco compacto en la unidad de CD. Mi Linux monta el CD en "/ mount / cdrom". El directorio "/ mount" (y todos los archivos que creo en él) se encuentra en mi disco duro. Pero el contenido de "/ mount / cdrom" ya está en el CD.
lesnik
6

Un disco se divide en una o más particiones . Para Windows, generalmente solo hay uno, tal vez con una partición de recuperación oculta en algún lugar. Una partición es un área lógicamente contigua del disco, por ejemplo, "sectores 1 a 10,000,000".

En una partición se puede construir un sistema de archivos. Para Windows, esto es NTFS o FAT; Para Linux, esta es una de las extversiones u otras opciones.

Dentro de un sistema de archivos hay archivos y directorios. Linux tiene directorios, no tengo idea de cómo se te ocurrió la idea de que no.

¿Cómo presenta un sistema operativo múltiples particiones en múltiples discos al usuario? En Windows, esto se hace con las letras de unidad : C:, D:etc. En Linux, no hay letras de unidad y todo se hace con puntos de montaje : en un directorio en particular, el acceso redireccionamiento a un sistema de archivos diferente (+) A menudo, si se inserta un CD. o memoria USB aparecerá en algún lugar debajo de /mediao /mnt.

/usry /usr/bingeneralmente estará en el mismo sistema de archivos, pero no es obligatorio que lo esté. Las personas pueden significar "el sistema de archivos que contiene el /usr/bindirectorio" cuando usan esa fraseología.

(+) También puede hacer esto con los puntos de unión NTFS, pero la gente rara vez lo hace. Hasta que se agoten las letras de unidad.

pjc50
fuente
Corríjame si me equivoco: en Linux, 1 disco físico se puede dividir en varias particiones, cada una con su propio sistema de archivos. Análogamente a la forma en que un disco duro en Windows contiene varias particiones, una puede ser FAT y la otra NTFS?
Kenny
1
Sí, tienes razón: pero no es análogo, es exactamente el mismo mecanismo subyacente. Las máquinas de arranque dual pueden tener particiones NTFS y ext3 en el mismo disco, y el administrador de discos de cada sistema operativo ve el mismo conjunto de particiones. Es solo que Windows no puede ver montar las particiones ext3 para ver los archivos.
pjc50
3

Es posible mantener un sistema Linux completo en una partición, con todos los subdirectorios en un sistema de archivos.

También es posible distribuirlo en varias particiones, con ciertos subárboles de directorio en diferentes sistemas de archivos. Por ejemplo, es común poner /home, /tmp, /usr, y /varen sistemas de archivos separados. Para responder a una de sus preguntas, a veces /usr/bintambién estará en su propio sistema de archivos.

Hay ventajas en este esquema. Por ejemplo, si se /varllena con muchos correos electrónicos, el resto del sistema no se ve afectado. Del mismo modo, si un sistema de archivos está dañado debido a un bloqueo o algo, otros sistemas de archivos siguen siendo buenos y es más fácil recuperar el sistema.

Cuando se inicia el sistema, al principio solo está disponible el sistema de archivos raíz. Los programas guardados allí se ejecutan durante el proceso de arranque. Uno de estos programas, mountse ejecuta varias veces, utilizando datos del archivo /etc/fstab, la tabla del sistema de archivos. Para tomar un ejemplo: originalmente, /homees solo un directorio ordinario en el sistema de archivos raíz. Luego ejecutamos este comando como root:

mount /dev/sda7 /home

Esto le dice al sistema que el sistema de archivos en la partición /dev/sda7 debe montarse en el directorio /home. Entonces, ahora, todo en ese sistema de archivos se considera bajo /home.

Puede ver lo que está montado actualmente ejecutando df.

Tom Zych
fuente
3

A veces nos referimos a ellos como filesystems, porque a veces esos directorios son puntos de montaje. Demasiado para la única pregunta que hiciste ...

filesystem puede referirse a dos cosas diferentes ... o en realidad dos aspectos muy diferentes de la misma cosa:

  1. La estructura lógica utilizada para organizar los datos en un medio de almacenamiento.
  2. La metodología utilizada por el sistema operativo para ofrecer procesos de acceso unificado a los datos.

El concepto de archivos y directorios es una metáfora. Para una computadora solo hay datos y todos los medios no son más que dispositivos que pueden contener datos. Algunos dispositivos permiten leer y escribir datos (por ejemplo, HDD), otros dispositivos solo permiten leer datos (por ejemplo, CD-ROM) e incluso hay dispositivos que permiten solo escribir datos (por ejemplo, impresora). Utilizamos la metáfora del archivo y el directorio para estructurar los datos, de modo que podamos acceder a pequeños fragmentos de datos, en lugar de todo a la vez.

Los sistemas de archivos que colocamos en los medios de almacenamiento, por ejemplo, ext4, xfs, fat, hacen la parte de estructuración. Los usamos para poner etiquetas en fragmentos de datos (archivos) y para tener una lista estructurada consistente de todas las etiquetas (directorios). La lista estructurada es en realidad un árbol. El aspecto más importante es que un árbol tiene exactamente un principio, su raíz. Mantener esta estructura y garantizar que los datos sean y sigan siendo accesibles es una tarea bastante sencilla, por lo que no hay un solo sabor de sistema de archivos.

El otro aspecto de los sistemas de archivos es que el trabajo del sistema operativo es hacer que los datos almacenados en los dispositivos de almacenamiento sean accesibles para todos los programas. Esto se logra por dos cosas:

  1. El sistema operativo ofrece precisamente una interfaz (de programación) para acceder e interactuar con archivos y directorios. Para programas / procesos, no importa si el sistema de archivos en el dispositivo de almacenamiento es ext2, xfs, fat o lo que sea. Los programas / procesos acceden a archivos y directorios de manera uniforme.

  2. El sistema operativo organiza todos los medios de almacenamiento, es decir, sus sistemas de archivos, en una estructura superior. Los programas acceden a archivos y directorios a través de esta estructura superior y no necesitan interactuar directamente con los dispositivos de almacenamiento. De esa manera, los programas no necesitan preocuparse sobre en qué dispositivo residen realmente los datos. Esta estructura superior a menudo se denomina "sistema de archivos virtual" del núcleo.

Agregar el sistema de archivos de un dispositivo de almacenamiento al sistema de archivos virtual se llama "montar" un sistema de archivos. Cuando su Linux se está iniciando, el núcleo crea el sistema de archivos virtual (VFS). Justo después de la creación, está vacío y consiste solo en su punto de entrada, también conocido como su raíz, transcrito /. Luego, el núcleo monta un sistema de archivos en la raíz del VFS. Esto es un ramdisk o inmediatamente un sistema de archivos en una partición en un disco duro. Como se agrega en la raíz del VFS, esta partición a menudo se conoce como el sistema de archivos raíz.

Ahora aquí viene la parte donde las líneas se difuminan y vemos que los sistemas de archivos en los dispositivos de almacenamiento y el VFS del núcleo son en realidad dos aspectos de la misma tarea del sistema operativo: con el montaje de un sistema de archivos raíz, el VFS contiene muchos archivos y directorios, todos los cuales existe en la partición raíz. Sin embargo, cada directorio puede convertirse en un "punto de montaje". Un punto de montaje es donde el VFS coloca el punto de entrada a un sistema de archivos en un dispositivo de almacenamiento. Esto significa que cada vez que montamos un sistema de archivos en un directorio, le decimos al VFS que en lugar de acceder a los datos almacenados en ese directorio, preferimos acceder a los datos en un dispositivo de almacenamiento diferente. Los puntos de montaje suelen ser directorios vacíos, por lo que no hacemos que los datos sean inaccesibles al montar otros sistemas de archivos en la parte superior.

Cuando instala su sistema operativo, depende de usted si desea colocar todos los datos en un sistema de archivos que luego se convierte en su sistema de archivos raíz, o si desea dividir sus datos entre múltiples sistemas de archivos. Este último requiere que su sistema operativo monte todos los sistemas de archivos individuales, para que todos los datos sean accesibles. La forma en que divide las cosas es una cuestión de cómo diseña su sistema. Es por eso que a veces los directorios que conoce de su instalación se denominan sistemas de archivos.

Para las computadoras que generalmente tenemos en casa, ya no es necesario dividir su instalación en múltiples sistemas de archivos. Aún así, puede haber buenas razones para hacerlo, pero esto está fuera del alcance de esta publicación.

Para mantener breve el resto de esta publicación: las particiones son otro medio de estructurar datos en dispositivos de almacenamiento. Con las particiones, se obtiene un espacio de almacenamiento contiguo desde un dispositivo de almacenamiento físico y se ofrecen como dispositivos de almacenamiento individuales al sistema operativo (en el que se pueden colocar sistemas de archivos para montar en el VFS). Una razón para hacerlo puede ser que uno solo tiene un disco duro, pero quiere emplear muchos sistemas de archivos diferentes. La partición en la que vive el sistema de archivos raíz a menudo se denomina partición raíz.

Bananguin
fuente
1

Estás haciendo un poco de confusión. Filesystemindica un mecanismo por el cual los archivos se ubican y organizan en un dispositivo de almacenamiento o en una memoria masiva, como un disco duro o un CD-ROM y, en algunos casos, también en la RAM.

Incluso las ventanas usos tales como sistemas de archivos NTFSo, antes, FAT.

Su ejemplo muestra una práctica común para los sistemas Linux y Unix, tener su propio sistema compuesto de diferentes sistemas de archivos montados en directorios llamados punto de montaje. Esto permite, en caso de problemas, limitar el daño a uno o más pero no a todos los sistemas de archivos.

Entonces, FS no es equivalente a un directorio, y también en Linux hay directorios, que son un tipo especial de archivo

LilloX
fuente