¿Es posible que las particiones raíz y de inicio tengan diferentes sistemas de archivos y se ubiquen en dispositivos físicos separados?

10

Imagine que formateé la raíz con un sistema de archivos ext3 en una partición separada que existe en un disco duro SATA y el directorio de inicio en una partición btrfs diferente que existe en un SSD Intel.

Descargué un archivo de Internet y lo guardé temporalmente en /tmp(en el sistema de archivos raíz), luego decidí moverlo a mi directorio de inicio (la segunda partición).

Puedo sentir el proceso doloroso que sucede en segundo plano para hacer que un mvcomando tan simple funcione.

Entonces, primero, ¿es posible que la raíz y el hogar tengan diferentes sistemas de archivos? En segundo lugar, suponiendo que la respuesta a la pregunta anterior fue "sí", ¿cómo gestiona el sistema operativo toda esa transición desde y ext3hacia btrfsdiferentes controladores de dispositivo para diferentes tipos de disco (HDD y SSD)?

Karim Manaouil
fuente
3
Se hace con capas. La capa del sistema de archivos está construida sobre la capa del dispositivo de bloque. Puede usar cualquier sistema de archivos adecuado en la capa del sistema de archivos. Puede usar cualquier dispositivo de bloque adecuado en esa capa de dispositivo de bloque. Cada punto de montaje puede tener su propio sistema de archivos y dispositivo.
aserrín
@sawdust, eso es algo muy interesante que señaló, la capa del sistema de archivos y la capa del dispositivo de bloque. ¿Cómo se relacionan? Cualquier lectura será útil.
Karim Manaouil
No sé mucho sobre sistemas de archivos, pero supongo que el proceso no sería tan diferente de copiar archivos en una unidad externa FAT32
Blaine
¿Por qué sigues usando ext3 en 2017 cuando es tan simple actualizar a ext4?
David Foerster

Respuestas:

25

La respuesta es sí, puede tener cualquier directorio en cualquier dispositivo, ejecutando cualquier sistema de archivos que el SO pueda admitir.

Por lo tanto, puede tener / /var /home /opte incluso /home/afr0cken diferentes dispositivos, diferentes particiones, diferentes sistemas de archivos.

No solo puedes, sino que es común. Por ejemplo, siempre se recomienda mantener /vary /homeen diferentes particiones, /ya que es más probable que consuman inadvertidamente espacio en disco; si se llenan, no afecta demasiado al sistema. Si están en la misma partición que la raíz, puede hacer que el sistema se detenga.

Y es posible que desee que se ejecuten diferentes directorios en diferentes dispositivos por razones de velocidad. Y use diferentes sistemas de archivos para diferentes propósitos. Por ejemplo, quizás ext4 es lo que desea para los archivos del sistema operativo, ya que no cambian mucho, pero es posible que desee btrfs para / home para que pueda guardar instantáneas para las copias de seguridad. Estas son todas las decisiones que puede tomar cada persona para su caso de uso específico.

La parte del espacio de usuario del sistema operativo no necesita comprender los diferentes tipos de dispositivos y sistemas de archivos. Todo lo que hace le pide al núcleo que mueva un archivo, y el núcleo organiza todo desde allí. Entonces, el mvcomando (por ejemplo) es independiente del sistema de archivos y del tipo de dispositivo. El núcleo invoca los controladores necesarios para leer y escribir en las diferentes particiones.

Pablo
fuente
77
Útil para señalar que mv(1)primero intenta rename(2)el archivo. Luego vuelve a copiar y eliminar. Entonces, tratar de cambiar el nombre es cómo mvdeterminar si es posible de una manera independiente de FS. ( rename(2)siempre falla al moverse entre diferentes dispositivos, ya sea que usen el mismo controlador de sistema de archivos o no, @ afr0k.)
Peter Cordes
1
@ PeterCordes eh, no sabía que cambiar el nombre era una cosa. Siempre he usado mv para cambiar el nombre de las cosas.
55
@stanri: mvno bifurca / ejecuta el rename(1)comando, solo intenta la rename(2)llamada al sistema. No hay un renamecomando de shell estándar . En algunos sistemas, es el comando de cambio de nombre de múltiples archivos de sustitución de patrones de util-linux. No estaba hablando del comando shell, sino de cómo mvfunciona internamente.
Peter Cordes
Incluso / usr podría residir en una partición diferente, esa es la razón por la cual algunas cosas verdaderamente esenciales están en / bin / lib y / sbin: si todos los instaladores lo admitirán es otra cuestión.
rackandboneman
7

Sí, los sistemas de archivos separados (puntos de montaje) pueden ser diferentes tipos de sistemas de archivos.  /procsiempre es un procfssistema de archivos y /syssiempre es un sysfs. Los sistemas de archivos transitorios (a veces incluidos /tmp) son a menudo tmpfsy, en la configuración de grupos de trabajo, es común que los directorios de inicio del usuario (y sus directorios de productos de trabajo) sean nfsu otros tipos de sistemas de archivos remotos (de red / compartidos).

No hay ninguna gestión especial para el sistema operativo. Hasta cierto punto, a nivel de usuario, todos los sistemas de archivos se parecen, en el sentido de que una lslista se verá más o menos igual en cualquier directorio. Más allá de ese punto, los sistemas de archivos no interactúan. Incluso entre dos sistemas de archivos (particiones) en el mismo disco físico, del mismo tipo de sistema de archivos, no hay enlace 1 . Por ejemplo, mover un archivo de un sistema de archivos (punto de montaje) a otro siempre implica hacer una copia y eliminar el original. No importa si son particiones en diferentes discos. No importa si uno de ellos es HDD y uno es SSD. No importa si uno es ext3y el otro esbtrfs. No importa si uno es interno (dentro de la caja de la computadora) y uno es externo (a unas pocas pulgadas afuera, conectado por un cable), o remoto (se accede a través de la red).

Hablando de la red, es un poco análogo a ssh. Se lee desde el teclado y envía los caracteres que escribe a la red. Simultáneamente, lee desde la red y muestra los resultados en la pantalla.

O considere esto: imagine que está hablando por teléfono y está mediando una conversación entre la persona que está en el otro teléfono y otra persona en la habitación. No es la gran cosa.
________
1 excepto para enlaces simbólicos, pero pueden cruzar los límites del sistema de archivos.

G-Man dice 'restablecer a Mónica'
fuente
1
Estoy muy de acuerdo con su respuesta, pero no es realmente típico que / tmp sea un tmpfs (aunque tal vez esté configurado así en algunas distribuciones), normalmente está fuera de la partición raíz y se limpia en el arranque. Las distribuciones de tipo Ubuntu y Redhat usan / dev / shm como tmpfs,
davidgo
Estaba confundido. He actualizado mi respuesta.
G-Man dice 'Restablecer a Monica' el
1
@davidgo: ¿Qué distribuciones de Linux no están predeterminadas /tmpen tmpfs? También pensé que era una práctica bastante estándar, ya que siempre puedes poner cosas /var/tmp(aunque eso no se limpia en el arranque). No soy un experto en valores predeterminados de distribución cruzada, solo Debian / Ubuntu y Arch. Con esos más RedHat, eso cubre una gran fracción de los sistemas Linux instalados (pero no tan grande como una gran fracción de las distribuciones totales).
Peter Cordes
(ignorando los sistemas embebidos) Solo uso Centos y Ubuntu regularmente, los cuales usan el disco para / tmp. - Estoy bastante seguro de que esto significa que Debian, Redhat y Mint seguirán la misma convención. Mi dispositivo Android no tiene / tmp
davidgo
2
@PeterCordes El aumento de tmpfsLinux es solo reciente en los últimos 5-7 años más o menos. por ejemplo, Fedora estaba discutiendo el cambio en su wiki ~ 2012, y creo que se introdujo en Debian Wheezy.
Bob