¿El espacio de intercambio tiene un sistema de archivos?

26

Para trabajar con dispositivos de almacenamiento necesitamos un sistema de archivos, ¿qué pasa con el espacio de intercambio?

Si no tiene un sistema de archivos, ¿cómo funciona con él? ¿Cómo se escriben los datos (desde la RAM) en el disco y cómo se accede nuevamente?

Sinoosh
fuente
66
Swap no necesita un sistema de archivos. No almacena archivos.
Pilot6 el
3
Almacena páginas RAM.
Pilot6 el
2
¿Podría explicar exactamente lo que está tratando de hacer? ¿Estás diciendo que todo lo que necesitas es un lugar para almacenar datos temporalmente?
Jake
66
"Quiero saber cómo es posible escribir en un espacio de almacenamiento sin sistema de archivos". - Simplemente escribe en el espacio de almacenamiento. Piense en esto: si se requiriera un sistema de archivos para escribir en un espacio de almacenamiento, entonces los sistemas de archivos no podrían existir, porque los sistemas de archivos deben poder escribir en un almacenamiento decidir sin un sistema de archivos. "De acuerdo con su respuesta, ¿puedo decir que RAM tiene un sistema de archivos pequeño y el archivo de intercambio utiliza este sistema de archivos para trabajar con páginas?" - No. Un sistema de archivos es para almacenar archivos. El espacio de intercambio no almacena archivos.
Jörg W Mittag el
44
Es bastante común escribir un solo archivo (ala tar y dd) en el almacenamiento sin formato, y aún más común tener sistemas de archivos anidados (discos virtuales, .iso, squashfs). Los juegos en disquete a veces escriben puntajes altos en una ubicación absoluta (fija), y algunas aplicaciones se basan en Cylinder, Head, Sector. Las particiones de intercambio siguen siendo particiones, pero no, ¿no hay un sistema de archivos o "mapeo" que no sea desplazamiento y ejecución?
mckenzm

Respuestas:

28

Swap técnicamente no tiene un sistema de archivos específico. Todo el propósito del sistema de archivos es estructurar los datos de cierta manera. La partición de intercambio en particular no tiene estructura, pero tiene un encabezado específico, que es creado por el mkswapprograma. En particular, esto (tomado de kernel.org ):

 25 union swap_header {
 26     struct 
 27     {
 28         char reserved[PAGE_SIZE - 10];
 29         char magic[10];
 30     } magic;
 31     struct 
 32     {
 33         char     bootbits[1024];
 34         unsigned int version;
 35         unsigned int last_page;
 36         unsigned int nr_badpages;
 37         unsigned int padding[125];
 38         unsigned int badpages[1];
 39     } info;
 40 };

Cada partición tiene un código específico asociado, y de acuerdo con TLDP :

el código para ext2 es 0x83 y el intercambio de Linux es 0x82

Cuando se trata de un archivo de intercambio , esa es una historia ligeramente diferente. El núcleo debe respetar el hecho de que el sistema de archivos puede tener su propia forma de estructurar datos. Desde el mismo enlace kernel.org:

Recuerde que los sistemas de archivos pueden tener su propio método para almacenar archivos y discos y no es tan simple como la partición de intercambio donde la información puede escribirse directamente en el disco. Si el almacenamiento de respaldo es una partición, entonces solo un bloque del tamaño de una página requiere E / S y como no hay ningún sistema de archivos involucrado, bmap () es innecesario.

En conclusión, técnicamente podría llamar al espacio de intercambio un sistema de archivos de su propio tipo, pero no es del todo comparable con sistemas de archivos como NTFS o ext4

También has preguntado

Quiero saber cómo es posible escribir en un espacio de almacenamiento sin sistema de archivos

Estrictamente hablando, no hay necesidad de estructurar la RAM. Sin embargo, porciones de RAM se pueden estructurar como tmpfs en sistemas operativos tipo Unix. También hay ramfs e initramfs, que es lo que se carga durante el proceso de arranque. Pero técnicamente se supone que los datos de RAM son solo 1s y 0s sin procesar, por lo que no es necesario estructurarlos de todos modos.

Sergiy Kolodyazhnyy
fuente
1
Es bueno señalar que, a pesar de no tener un sistema de archivos, tiene una estructura básica que permite reconocer lo que es. Impide sobrescribir otra partición por error.
espectros
Creo que significan espacio en disco aquí "¿Quiero saber cómo es posible escribir en un espacio de almacenamiento sin sistema de archivos" en lugar de RAM, tal vez?
Anwar
@Anwar, sí, pero lo tengo
Sinoosh
tar se puede usar para escribir múltiples archivos como una transmisión RAW en un dispositivo sin formato, como una unidad flash. De lo contrario, se puede escribir un solo archivo (pero sin nombre) y deberá revertir el proceso para volver a escribirlo. Esto se hace comúnmente con ISO a medios ópticos, pero el resultado es un sistema de archivos in situ.
mckenzm
1
Convenido. Esencialmente se puede describir como un área mapeada entonces. No es una extensión de la memoria real, sino un espacio de trabajo para almacenar fragmentos que se pueden superponer a pedido.
mckenzm
14

El kernel utiliza el espacio de intercambio para almacenar temporalmente páginas de memoria del sistema (RAM) a medida que se llena. El núcleo utiliza sus propias tablas internas para "recordar" exactamente dónde dentro del disco de intercambio coloca la página. Como resultado, los discos de intercambio no contienen un sistema de archivos adecuado y generalmente son solo particiones en blanco en el disco.

Lo que puede interesarle es un disco RAM, que es un pequeño sistema de archivos almacenado en la memoria del sistema. Si se necesita más memoria, el núcleo lo empujará (y otros contenidos) al espacio de intercambio. Consulte aquí para obtener instrucciones sobre cómo configurar uno.

Jake
fuente
13

El espacio de intercambio se divide en bloques del mismo tamaño que las páginas de memoria (generalmente 4kB), y un registro de la asignación de estas páginas a la memoria de la aplicación forma una extensión del subsistema de memoria virtual en la CPU y el sistema operativo.

Es decir, ya existe un sistema de mapeo entre los espacios de memoria de la aplicación y la dirección de memoria física real. A una aplicación se le da un gran espacio de direcciones de memoria que pueden usar tanto o tan poco como puedan. A medida que se usa más de este espacio de direcciones de memoria, la memoria física se asigna a esa aplicación para servir como medio de almacenamiento.

Cuando la memoria se cambia al disco, un sistema relacionado mantiene esa asignación del espacio de memoria de una aplicación al bloque en el disco.

La tabla de mapeo en sí no se almacena en el disco, y los datos restantes en el disco son inútiles después de un reinicio.

thomasrutter
fuente