ossfs 2.0 es un cliente FUSE que monta buckets de OSS como sistemas de archivos locales para que los contenedores accedan a los datos de OSS mediante operaciones POSIX. Esta versión mejora la E/S secuencial y de archivos pequeños con alta concurrencia respecto a ossfs 1.0, lo cual beneficia cargas de trabajo como entrenamiento de IA, procesamiento de big data y conducción autónoma.
Mejoras de rendimiento
ossfs 2.0 ofrece mejoras significativas de rendimiento frente a ossfs 1.0 en operaciones de lectura y escritura secuencial, así como en lecturas de objetos pequeños con alta concurrencia. Para obtener más información sobre el rendimiento de ossfs 2.0, consulte Performance testing.
Rendimiento de escritura secuencial: En escenarios de escritura secuencial de objetos grandes con un solo hilo, ossfs 2.0 proporciona casi 18 veces el ancho de banda de ossfs 1.0.
Rendimiento de lectura secuencial: En escenarios de lectura secuencial de objetos grandes con uno o varios hilos (4 hilos), ossfs 2.0 ofrece más de 3 veces el ancho de banda de ossfs 1.0.
Rendimiento de lectura concurrente de objetos pequeños: En escenarios de lectura de objetos pequeños con alta concurrencia (128 hilos), ossfs 2.0 entrega más de 20 veces el ancho de banda de ossfs 1.0.
Casos de uso
ossfs 2.0 es adecuado para escenarios que requieren acceso a almacenamiento de alto rendimiento, como entrenamiento de IA, inference, procesamiento de big data, conducción autónoma y otras cargas de trabajo intensivas en cómputo. Estas cargas implican principalmente lecturas secuenciales y aleatorias, escrituras secuenciales (solo anexión) y no requieren semántica POSIX completa.
Límites
Requisitos de permisos: La AccessKey que utilice debe tener permisos completos sobre el bucket o prefijo de destino. Los permisos insuficientes pueden provocar fallos en la operación de montaje o comportamientos inesperados en otras operaciones.
Restricciones de clase de almacenamiento: Se recomienda no montar buckets en las clases Archive Storage, Cold Archive Storage ni Deep Cold Archive Storage.
Límites en nombres de objetos y directorios: Debido a una restricción de Linux, los nombres de objetos y directorios están limitados a 255 caracteres. Los objetos o directorios en OSS cuyos nombres superen este límite no serán visibles en el punto de montaje.
Restricciones de lectura de objetos: ossfs carga los objetos recién escritos en OSS únicamente después de cerrar los manejadores de archivo correspondientes. Leer un objeto antes de cerrar su manejador puede causar un error.
Restricciones de escritura de objetos: En el modo predeterminado, no se admiten escrituras aleatorias ni escrituras concurrentes en el mismo objeto. El tamaño de parte predeterminado es de 8,388,608 bytes (8 MiB), lo que limita el tamaño máximo de un objeto escribible a 83,886,080,000 bytes (78.125 GiB). Configure el tamaño de parte mediante la opción de montaje upload_buffer_size. A partir de la versión v2.0.9, use la opción de montaje temp_dir para habilitar el modo de escritura aleatoria basado en un directorio temporal local; este modo admite escrituras en desplazamientos arbitrarios, truncamiento a cualquier tamaño y múltiples manejadores de escritura concurrentes sobre el mismo objeto.
-
Operaciones de cambio de nombre de objetos (no atómicas)
Objetos: La operación primero copia el objeto de origen al destino y luego elimina el objeto de origen.
Directorios: La operación copia todos los objetos bajo el directorio de origen al destino y luego realiza una eliminación masiva de los objetos de origen. De forma predeterminada, la operación de cambio de nombre está limitada a 2 millones de objetos descendientes. Modifique este límite mediante la opción de montaje rename_dir_limit.
Consistencia en escrituras concurrentes: ossfs 2.0 no garantiza la consistencia de los datos cuando varios clientes montan el mismo bucket y escriben simultáneamente en el mismo objeto.
Compatibilidad con la API POSIX: Parcialmente compatible. Para más detalles, consulte POSIX API support.
Funciones
Funciones destacadas
Ofrece compatibilidad básica con POSIX y se enfoca en maximizar el rendimiento de lectura y escritura del lado del servidor de OSS.
Proporciona un rendimiento eficiente de lectura y escritura secuencial para objetos grandes gracias a la optimización integral de la ruta de E/S.
Permite la carga concurrente eficiente de objetos pequeños mediante una gestión optimizada de metadatos.
Compatibilidad con la API POSIX
La siguiente tabla compara la compatibilidad con la API POSIX en ossfs 1.0 y ossfs 2.0.
|
Categoría de función |
Operación |
ossfs 1.0 |
ossfs 2.0 |
|
Operaciones básicas de objetos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Lectura y escritura de objetos |
|
|
|
|
|
Admite escrituras aleatorias (requiere caché de disco) |
De forma predeterminada, solo admite escrituras secuenciales (no requiere caché de disco). A partir de la versión v2.0.9, también se admiten escrituras aleatorias (requiere caché de disco). |
|
|
|
(se puede truncar a cualquier tamaño) |
De forma predeterminada, solo admite truncar un objeto a longitud cero. A partir de la versión v2.0.9, se admite el truncamiento a cualquier tamaño (requiere caché de disco). |
|
|
Operaciones de metadatos de objetos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Operaciones de directorio |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Permisos y atributos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Funciones extendidas |
|
|
|
|
|
|
No se admite de forma predeterminada. A partir de la versión v2.0.6, se puede habilitar mediante opciones de montaje. Admite enlaces simbólicos que apuntan a rutas dentro del punto de montaje. |
|
|
|
|
|
Funcionamiento
El cliente ossfs 2.0 se ejecuta como un contenedor dentro de un pod en el namespace ack-csi-fuse.
Referencias
Use a static ossfs 2.0 persistent volume para montar un bucket de OSS con un PV y un PVC.
Use a dynamic ossfs 2.0 persistent volume para montar un bucket de OSS.