ossfs 2.0 est un client FUSE qui monte des compartiments OSS en tant que systèmes de fichiers locaux, permettant aux conteneurs d'accéder aux données OSS via des opérations POSIX. Par rapport à ossfs 1.0, il améliore les performances d'E/S séquentielles et la gestion des petits fichiers à forte concurrence, ce qui le rend idéal pour des charges de travail telles que l'entraînement IA, le traitement du big data et la conduite autonome.
Améliorations des performances
ossfs 2.0 offre des améliorations significatives par rapport à ossfs 1.0 pour les opérations de lecture et d'écriture séquentielles, ainsi que pour les lectures concurrentes de petits objets. Pour plus d'informations sur les performances d'ossfs 2.0, consultez la rubrique Tests de performance.
Performances en écriture séquentielle : Dans les scénarios d'écriture séquentielle monothread d'objets volumineux, ossfs 2.0 offre une bande passante près de 18 fois supérieure à celle d'ossfs 1.0.
Performances en lecture séquentielle : Dans les scénarios de lecture séquentielle monothread ou multithread (4 threads) d'objets volumineux, ossfs 2.0 offre une bande passante plus de 3 fois supérieure à celle d'ossfs 1.0.
Performances en lecture concurrente de petits objets : Dans les scénarios de lecture de petits objets à haute concurrence (128 threads), ossfs 2.0 offre une bande passante plus de 20 fois supérieure à celle d'ossfs 1.0.
Cas d'utilisation
ossfs 2.0 convient aux scénarios nécessitant un accès au stockage haute performance, tels que l'entraînement et l'inférence IA, le traitement du big data, la conduite autonome et autres charges de travail intensives en calcul. Ces charges de travail impliquent principalement des lectures séquentielles et aléatoires, ainsi que des écritures séquentielles (ajout uniquement), sans exiger une prise en charge complète de la sémantique POSIX.
Limites
Exigences en matière d'autorisations : L'AccessKey utilisé doit disposer d'autorisations complètes pour le compartiment cible ou le préfixe spécifié. Des autorisations insuffisantes peuvent entraîner l'échec de l'opération de montage ou un comportement inattendu lors d'autres opérations.
Limites liées aux classes de stockage : Il est déconseillé de monter des compartiments utilisant les classes de stockage Archive, Cold Archive ou Deep Cold Archive.
Limites relatives aux noms d'objets et de répertoires : Les noms d'objets et de répertoires sont limités à 255 caractères en raison d'une contrainte Linux. Les objets ou répertoires OSS dont les noms dépassent cette limite ne sont pas visibles au point de montage.
Limites de lecture des objets : ossfs télécharge les objets nouvellement écrits vers OSS uniquement après la fermeture des handles de fichier correspondants. La lecture d'un objet avant la fermeture de son handle peut provoquer une erreur.
Limites d'écriture des objets : Les écritures aléatoires et les écritures concurrentes sur le même objet ne sont pas prises en charge. La taille de partie par défaut est de 8 388 608 octets (8 MiB), ce qui limite la taille maximale d'un objet inscriptible à 83 886 080 000 octets (78,125 GiB). Vous pouvez configurer la taille de partie à l'aide de l'option de montage upload_buffer_size.
-
Opérations de renommage d'objets (non atomiques)
Objets : L'opération copie d'abord l'objet source vers la destination, puis supprime l'objet source.
Répertoires : L'opération copie tous les objets situés sous le répertoire source vers la destination, puis effectue une suppression groupée des objets sources. Par défaut, l'opération de renommage est limitée à 2 millions d'objets descendants. Vous pouvez modifier cette limite à l'aide de l'option de montage rename_dir_limit.
Cohérence des écritures concurrentes : ossfs 2.0 ne garantit pas la cohérence des données lorsque plusieurs clients montent le même compartiment et écrivent simultanément sur le même objet.
Compatibilité avec l'API POSIX : Partiellement compatible. Pour plus de détails, consultez la rubrique Prise en charge de l'API POSIX.
Fonctionnalités
Points forts
Offre une compatibilité POSIX de base et se concentre sur la maximisation des performances de lecture et d'écriture côté serveur OSS.
Fournit des performances efficaces en lecture et écriture séquentielles pour les objets volumineux grâce à une optimisation de bout en bout du chemin de lecture/écriture.
Permet un chargement concurrent efficace des petits objets via une gestion optimisée des métadonnées.
Prise en charge de l'API POSIX
Le tableau suivant compare la prise en charge de l'API POSIX entre ossfs 1.0 et ossfs 2.0.
Catégorie de fonctionnalité | Opération | ossfs 1.0 | ossfs 2.0 |
Opérations de base sur les objets |
| ||
| |||
| |||
Lecture et écriture d'objets |
| ||
| Prend en charge les écritures aléatoires (nécessite un cache disque) | Prend en charge uniquement les écritures séquentielles (aucun cache disque requis) | |
| (peut être tronqué à n'importe quelle taille) | Prend uniquement en charge la troncature d'un objet à une longueur nulle | |
Opérations sur les métadonnées des objets |
| ||
| |||
| |||
Opérations sur les répertoires |
| ||
| |||
| |||
Autorisations et attributs |
| ||
| |||
| |||
| |||
Fonctionnalités étendues |
| ||
| |||
|
Fonctionnement
Le client ossfs 2.0 s'exécute en tant que conteneur dans un pod de l'espace de noms ack-csi-fuse.
Références
Utiliser un volume persistant ossfs 2.0 statique pour monter un compartiment OSS avec un PV et un PVC.
Utiliser un volume persistant ossfs 2.0 dynamique pour monter un compartiment OSS.