
- Los desarrolladores están trabajando en Composefs, una forma de construir y usar imágenes de solo lectura.
- Composefs permite compartir datos de archivos entre imágenes y tiene verificación de lectura similar a dm-verity.
- El objetivo del dúo es utilizar el montaje composefs como el directorio inferior en el montaje superpuesto, siendo el directorio superior el directorio de trabajo del contenedor.
Los desarrolladores de Red Hat, Giuseppe Scrivano y Alexander Larsson, presentan un nuevo proyecto por primera vez. Composefs es una nueva forma de crear y usar imágenes de solo lectura de forma similar a como las usarían los usuarios, por ejemplo, imágenes squashfs montadas en loopback.
oportunidad de compartir
Composefs es nativo linux Los sistemas de archivos están diseñados para ayudar a compartir el contenido del sistema de archivos y garantizar que dicho contenido no se modifique. Composefs tiene dos características básicas. Permite compartir datos de archivos entre imágenes, en el disco y en la memoria caché de la página, y tiene una verificación de lectura similar a dm-verity.
Cuando el núcleo lee un archivo de imagen, que contiene toda la información sobre el directorio y los metadatos del archivo y una referencia al archivo de respaldo por nombre, en realidad lee el archivo de respaldo. Dado que los archivos de respaldo tienen direcciones de contenido, los directorios de objetos se pueden compartir para varias imágenes. Se compartirán todos los archivos que tengan el mismo contenido. El equipo llama a esta oportunidad compartir.
Alexander Larsson, ingeniero de software principal sénior, Red Hat
Durante la verificación, los archivos de objeto tienen fs-verity habilitado y se nombran según su resumen de fs-verity. La imagen del sistema de archivos resultante puede contener un resumen esperado de los archivos de soporte. Si el sistema de archivos está montado con la opción verity_check, la apertura fallará si el resumen del archivo de respaldo es incorrecto. Si la apertura es exitosa, fs-verity detectará cualquier otro cambio en el archivo del disco. Protege la funcionalidad fs-verity existente contra cambios en el contenido del archivo, al tiempo que agrega protección contra los metadatos del sistema de archivos y los cambios estructurales. Según Alexander Larsson, ingeniero principal sénior de software de Red Hat,
« Entonces, ¿por qué queremos esto? Hay dos historias de usuario iniciales. Primero, vamos a utilizar el uso compartido oportunista para la capa de contenedor de podman. La idea es usar un montaje composefs como directorio inferior en un montaje superpuesto, siendo el directorio superior el directorio de trabajo del contenedor. Esto permitirá el intercambio automático de cachés de página y disco a nivel de archivo entre dos imágenes cualesquiera, independientemente de detalles como los permisos de archivo y las marcas de tiempo, y los orígenes de la imagen.
En segundo lugar, estamos interesados en utilizar el aspecto de validación de composefs en el proyecto ostree. Ostree ya usa el almacenamiento de objetos direccionados por contenido, pero actualmente se hace referencia a él mediante campos de enlace fijo. El almacén de objetos y los árboles que hacen referencia a él se firman y verifican en el momento de la descarga, pero no hay verificación en tiempo de ejecución. Si reemplazamos la granja de enlaces duros con una imagen composefs que apunta a un almacén de objetos existente, podemos usar la validación para lograr la validación en tiempo de ejecución.
De hecho, las herramientas para crear espejos de composefs son completamente reproducibles, por lo que solo necesitamos agregar el resumen fs-verity del espejo de composefs a los metadatos de confirmación de ostree. Luego, la imagen reconstruida se puede enviar desde ostree, produciendo una imagen composefs con el mismo resumen fs-verity.
Estos son los casos de uso que nos interesan actualmente, pero parece que hay muchos otros posibles. Por ejemplo, muchos sistemas usan montajes de bucle invertido (como lxc o snap) para imágenes, y estos pueden aprovechar el intercambio oportunista. También discutimos el uso de fuse para implementar un caché local para respaldar archivos. Es decir, tendría un segundo directorio base que es un sistema de archivos fusible, y cuando falla una búsqueda en el primer directorio base, el fusible activa una descarga que también se guarda en el primer directorio para una búsqueda posterior. Hay muchas posibilidades interesantes aquí. »
herramientas de espacio de usuario
El directorio tools/ contiene herramientas de espacio de usuario para crear blobs binarios para entregar a los clientes. Todos son experimentales y carecen de documentación.
- mkcomposefs: crea una imagen composefs dado un nombre de ruta de directorio. También se pueden calcular resúmenes y crear directorios de almacenamiento de contenido.
- escritor-json: Convertir de un archivo de metadatos CRFS a un blob binario.
- vertedero: Imprime el contenido del blob binario.
- ostree-convert-commit.py: convertir las confirmaciones de OSTree en archivos de configuración CRFS que puede usar el escritor json.
módulo del núcleo
Cómo construir:
make -C $KERNEL_SOURCE módulos M=$PWD && make -C $KERNEL_SOURCE módulos_instalar M=$PWD insmod /lib/modules/$(uname -r)/extra/composefs.ko
Una vez cargado, se puede utilizar como:
Monte /ruta/a/blob -t composefs -o basedir=$BASE_DIR /mnt
Opciones de instalación:
- basado en directorio: es el directorio que se utilizará como base al resolver rutas de contenido relativas.
- verity_check=0,1,2: Cuándo verificar los archivos compatibles fs-verity: 0 == nunca, 1 == si se especifica en la imagen, 2 == siempre y lo requiere en la imagen.
- Digestión: El resumen fs-verity sha256 que debe coincidir con el archivo de imagen. Si se establece, verity_check tiene como valor predeterminado 2.
ver más noticias de linux