Mapeador de dispositivos
El mapeador de dispositivos ( dm ) es un subsistema ( módulo ) del kernel de Linux que le permite crear dispositivos de bloques virtuales (VBU). Al acceder a dichos dispositivos, se realizan una serie de acciones, que generalmente incluyen leer/escribir datos de otros dispositivos de bloque (BU). El subsistema se utiliza para implementar el administrador de volumen lógico LVM , software RAID , sistema de cifrado de disco dm-crypt . Una de las capacidades del subsistema es la creación de instantáneas del sistema de archivos [1] .
Las capacidades de dm también son proporcionadas por el subsistema del núcleo DragonFly BSD [2] del mismo nombre . Esta página describe la implementación de dm para el kernel de Linux.
Descripción
Las aplicaciones (como lvm, EVMS , mdadm) que se ejecutan en el espacio del usuario interactúan con dm mediante el libdevmapper.so uso de . La biblioteca utiliza una llamada al sistema ioctl()para acceder al archivo del dispositivo /dev/mapper/control[3] . Al acceder a este dispositivo, el núcleo llama al subsistema dm. El subsistema dm opera en el espacio del núcleo, creando, modificando y eliminando dispositivos de bloques virtuales (VBU) según las solicitudes de la aplicación. La utilidad dmsetuple permite controlar dm manualmente desde la terminal o scripts de shell [4] [5] . La biblioteca libdevmapper.soy el equipo dmsetupson mantenidos por el proyecto LVM [6] .
Las aplicaciones cliente utilizan llamadas al sistema read()/ write()(a través de bibliotecas o directamente) para leer/escribir datos de la VBU. Luego, el kernel llama al subsistema dm. El subsistema dm determina el tipo de humedal y selecciona las actuaciones adecuadas.
Tipos de dispositivos de bloques virtuales [1] [4] :
- lineal ; las solicitudes de lectura y escritura en la VBU se redirigen a otra VBU; una o más BU pueden ocultarse detrás de un humedal;
- rayado _ al escribir datos se divide en fragmentos; cada fragmento se graba en una BU separada; al leer, se leen fragmentos de varias CU y se combinan;
- espejo ; "espejo" (copia) de BU; al grabar, los datos se almacenan simultáneamente en dos o más CU; al leer, los datos se leen desde la unidad de control principal;
- instantánea-origen ; la primera "instantánea" de la BU; las solicitudes de lectura y escritura se atienden de la misma manera que para las VBU lineales;
- instantánea ; la segunda y posteriores "instantáneas" de la BU; al escribir, los datos se almacenan en una CU creada específicamente para almacenar cambios; al leer, comprueba si hay cambios; si no hay cambios, se leen los datos de la "instantánea" anterior; si hay cambios, los datos se leen desde la BU que almacena los cambios;
- error ; al leer y escribir, siempre se informa un error; Las VBU de este tipo se utilizan para probar la estabilidad del software ante fallas del subsistema de disco;
- demora ; análogo de VBU lineal, pero la lectura y la escritura se realizan con retraso; Los humedales de este tipo se utilizan para las pruebas;
- escamoso ; similar a una VBU lineal, pero las operaciones de lectura y escritura fallan periódicamente; Los humedales de este tipo se utilizan para las pruebas;
- cero ; equivalente a /dev/zero ; se devuelven bytes nulos cuando se leen; no pasa nada al escribir;
- trayectos múltiples ; al leer y escribir, la interacción con la misma CU se realiza a través de varios controladores a la vez; si uno de los controladores falla, se utilizan los controladores restantes;
- cripta ; cifrado sobre la marcha; al escribir, los datos se cifran y, al leer, se descifran utilizando la API criptográfica del kernel de Linux;
- caché ; almacenamiento temporal de datos de una VU a otra (por ejemplo, un SSD puede actuar como un caché HDD [7] ; una VU local puede almacenar datos recibidos de una VU montada en la red [8] [9] );
- época [10] ; un análogo de una VBU de tipo lineal, pero con seguimiento de bloques leídos y escritos en un tiempo específico;
- incursión ; las solicitudes a esta VBU se redirigen al módulo md del kernel de Linux , que implementa el software RAID .
Aplicaciones
Las capacidades del mapeador de dispositivos se utilizan en los siguientes proyectos:
- LVM - Administrador de volumen lógico;
- es:dm-crypt - Componente del kernel de Linux para cifrar particiones;
- es:dm-cache - componente del kernel de Linux para el almacenamiento en caché de datos;
- dm-verity : componente de Chrome OS para verificar la integridad del sistema de archivos;
- dmraid - simulador RAID ;
- dm multipath es un componente del kernel de Linux para garantizar la tolerancia a fallas y la distribución de carga en la CU;
- TrueCrypt (versión para el sistema operativo Linux) es un sistema de cifrado de partición;
- DRBD - dispositivo de bloqueo de red;
- kpartx es una utilidad llamada por hotplug para crear y eliminar tablas de particiones de VU;
- EVMS (obsoleto);
- es:cryptoloop (obsoleto);
- Docker es un programa de virtualización de procesos a nivel de SO ; dm se usa cuando se ejecutan contenedores para crear BU de copia en escritura.
Notas
- ↑ 1 2 Administración de LVM . Apéndice A. Mapeador de dispositivos . sombrero rojo Fecha de acceso: 29 de septiembre de 2013. Archivado desde el original el 2 de octubre de 2013. (indefinido)
- ↑ dm(4) . Páginas del manual en línea de DragonFly . dragonflybsd.org (28 de julio de 2010). Fecha de acceso: 6 de junio de 2014. Archivado desde el original el 23 de abril de 2015. (indefinido)
- ↑ libdevmapper.h . sourceware.org. Recuperado: 29 de septiembre de 2013. (indefinido) (enlace no disponible)
- ↑ 1 2 dmsetup(8) - Página del manual de Linux . hombre.cx Consultado el 22 de octubre de 2013. Archivado desde el original el 4 de marzo de 2016. (indefinido)
- ↑ Administración de LVM . Anexo A.2. Comando dmsetup . sombrero rojo Fecha de acceso: 29 de septiembre de 2013. Archivado desde el original el 2 de octubre de 2013. (indefinido)
- ↑ Página de recursos del mapeador de dispositivos . sourceware.org. Consultado el 29 de septiembre de 2013. Archivado desde el original el 7 de octubre de 2013. (indefinido)
- ↑ Petros Koutoupis. Técnicas avanzadas de almacenamiento en caché del disco duro . Revista Linux ( 25 de noviembre de 2013). Consultado el 2 de diciembre de 2013. Archivado desde el original el 2 de diciembre de 2013. (indefinido)
- ↑ dm-cache: almacenamiento en caché de nivel de bloque dinámico (enlace descendente) . universidad internacional de florida. Consultado el 24 de julio de 2014. Archivado desde el original el 18 de julio de 2014. (indefinido)
- ↑ Dulcardo Arteaga; Douglas Otstott; Ming Zhao. Gestión dinámica de caché a nivel de bloque para sistemas de computación en la nube (pdf) (enlace no disponible) . universidad internacional de florida. Consultado el 2 de diciembre de 2013. Archivado desde el original el 3 de diciembre de 2013. (indefinido)
- ↑ 6. Capa de bloque . Núcleo de Linux 3.15 . kernelnewbies.org (8 de junio de 2014). Consultado el 15 de junio de 2014. Archivado desde el original el 11 de junio de 2018. (indefinido)
Enlaces