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 mv
comando 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 ext3
hacia btrfs
diferentes controladores de dispositivo para diferentes tipos de disco (HDD y SSD)?
fuente
Respuestas:
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
/opt
e incluso/home/afr0ck
en diferentes dispositivos, diferentes particiones, diferentes sistemas de archivos.No solo puedes, sino que es común. Por ejemplo, siempre se recomienda mantener
/var
y/home
en 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
mv
comando (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.fuente
mv(1)
primero intentarename(2)
el archivo. Luego vuelve a copiar y eliminar. Entonces, tratar de cambiar el nombre es cómomv
determinar 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.)mv
no bifurca / ejecuta elrename(1)
comando, solo intenta larename(2)
llamada al sistema. No hay unrename
comando 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ómomv
funciona internamente.Sí, los sistemas de archivos separados (puntos de montaje) pueden ser diferentes tipos de sistemas de archivos.
/proc
siempre es unprocfs
sistema de archivos y/sys
siempre es unsysfs
. Los sistemas de archivos transitorios (a veces incluidos/tmp
) son a menudotmpfs
y, 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) seannfs
u 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
ls
lista 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 esext3
y 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.
fuente
/tmp
en 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).tmpfs
Linux 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.