Le novice de JuiceFS doit connaître 24 questions

JuiceFS est un produit logiciel innovant. Beaucoup d'amis qui l'essayent pour la première fois ont beaucoup de doutes sur le produit et son utilisation, donc afin de vous aider à comprendre et à démarrer rapidement avec JuiceFS, nous avons compilé 24 réponses aux questions classiques à propos de JuiceFS Je pense qu'après ces 24 questions, tout le monde aura une meilleure compréhension de JuiceFS et qu'il sera plus pratique à utiliser.

1. Quelles sont les capacités de base de JuiceFS

JuiceFS est un système de fichiers partagé hautes performances conçu pour le cloud natif, publié dans le cadre de l'accord open source Apache 2.0. Il offre une compatibilité POSIX complète et peut connecter presque tout le stockage d'objets localement en tant que disque local massif, et peut également monter et lire sur différents hôtes sur différentes plates-formes et régions en même temps.

2. Comment fonctionne JuiceFS ?

JuiceFS est un système de fichiers distribué. La latence de l'accès aux métadonnées dépend de 1 à 2 allers-retours réseau (généralement 1 à 3 ms) entre le point de montage et le serveur. La latence de l'accès aux données dépend de la latence du stockage d'objets. (généralement 20-100 ms). Le débit de lecture et d'écriture séquentielle peut atteindre 50 Mo/s à 2800 Mo/s (voir les résultats des tests fio ), selon la bande passante du réseau et si les données sont faciles à compresser.

JuiceFS dispose d'un cache multi-niveaux intégré (invalidation active). Une fois le cache réchauffé, la latence d'accès et le débit sont très proches des performances d'un système de fichiers autonome (FUSE apportera une petite surcharge) .

3. Conditions nécessaires au fonctionnement de JuiceFS

Avant l'exécution, le moteur de métadonnées et le stockage d'objets doivent être préparés. Le moteur de métadonnées stocke des métadonnées telles que le nom, la taille et l'heure de modification du fichier, tandis que le stockage d'objets stocke le contenu du fichier.

Le moteur de métadonnées prend actuellement en charge : Redis, TiKV, MySQL, PostgreSQL, etc.

Le stockage d'objets en prend davantage en charge, et le stockage d'objets fondamentalement commun est pris en charge, comme AWS S3, Alibaba Cloud OSS, Huawei Cloud OBS, Tencent Cloud COS, etc. De plus, pour la commodité des tests, les disques locaux sont également spécialement pris en charge comme stockage d'objets . La liste actuelle de prise en charge du stockage d'objets et la configuration spécifique font référence à la configuration de la documentation de stockage d'objets

4. Étapes pour utiliser JuiceFS

Les étapes à utiliser sont très simples, il y a deux étapes, la première étape est de formater et la deuxième étape est de le monter localement. Voici un exemple d'utilisation de JuiceFS et Redis pour monter Alibaba Cloud OSS localement :

# 1. 格式化一个文件系统
juicefs format \
--storage oss \
--bucket https://zhijian-dev.oss-cn-hangzhou.aliyuncs.com \
--access-key xxxx \ 
--secret-key xxxx \
redis://localhost:6379/1 \
test1 

# 2. 后台挂载文件系统到 /tmp/jfs 目录
juicefs mount -d redis://localhost:6379/1 /tmp/jfs

5. Le moyen le plus rapide de découvrir JuiceFS

Je n'ai pas de Redis ou de stockage d'objets localement, puis-je faire l'expérience de JuiceFS ? Bien sûr, il est possible d'extraire le service JuiceFS. Le moteur de métadonnées et le stockage d'objets sont deux composants, mais nous pouvons utiliser le plus simple de ces deux composants. Par exemple, le moteur de métadonnées utilise la base de données intégrée de SQLite, tandis que le stockage d'objets utilise le disque local (format Lorsque —bucketle paramètre n'est pas renseigné, il s'agit du paramètre par défaut. La valeur par défaut consiste à utiliser le disque local comme stockage d'objets. Le chemin de stockage par défaut pour les utilisateurs racine est /var/jfs, et le chemin de stockage par défaut pour les utilisateurs ordinaires est ~/.juicefs/local). De cette façon, vous pouvez découvrir les produits JuiceFS sans aucun composant externe uniquement par les binaires JuiceFS.

# 1. 使用 sqlite 作为元数据引擎格式化文件系统 
juicefs format "sqlite3://my-jfs.db" test1

# 2. 后台挂载文件系统到 /tmp/jfs 目录
juicefs mount -d sqlite3://my-jfs.db /tmp/jfs

6. Puis-je le monter avec un rootautre utilisateur que ?

Oui, JuiceFS peut être monté par n'importe quel utilisateur. Le répertoire de cache par défaut est $HOME/.juicefs/cache(macOS) ou /var/jfsCache(Linux), veuillez vous assurer que l'utilisateur dispose d'une autorisation d'écriture sur ce répertoire, ou passez à un autre répertoire avec autorisation. Voir "Mise en cache de lecture client" pour plus d'informations.

7. Dans quelle mesure JuiceFS est-il compatible avec le protocole POSIX ?

JuiceFS utilise Pjdfstest et LTP pour vérifier sa compatibilité avec POSIX. Le résultat final du test est qu'il a réussi tous les cas de test dans pjdfstest et la plupart des cas d'utilisation dans LTP.

8. Quelles méthodes JuiceFS prend-il en charge pour accéder aux données en plus du montage ordinaire

Outre le montage ordinaire, les méthodes suivantes sont également prises en charge :

  • Pilote Kubernetes CSI : utilisez JuiceFS comme couche de stockage du cluster Kubernetes via le pilote Kubernetes CSI. Pour plus de détails, reportez-vous à "Kubernetes utilise JuiceFS" .
  • Hadoop Java SDK : Il est pratique d'utiliser un client Java compatible avec l'interface HDFS pour accéder à JuiceFS dans le système Hadoop. Pour plus de détails, veuillez vous référer à "Hadoop utilisant JuiceFS" .
  • Passerelle S3 : Accédez à JuiceFS via le protocole S3, veuillez vous référer à « Configurer la passerelle S3 JuiceFS » pour plus de détails .
  • Plugin Docker Volume : Il est pratique d'utiliser JuiceFS dans Docker. Pour plus de détails, veuillez vous référer à "Docker utilise JuiceFS" .
  • Passerelle WebDAV : accédez à JuiceFS via le protocole WebDAV

9. Redis en mode Sentinel ou cluster prend-il en charge le moteur de métadonnées JuiceFS ?

Support, et voici un article sur les meilleures pratiques sur Redis en tant que moteur de métadonnées JuiceFS pour référence.

10. Comment tester les performances de JuiceFS

Après avoir monté JuiceFS dans un répertoire local, exécutez la commande de banc JuiceFS sur ce répertoire. La commande de banc JuiceFS effectuera des tests de lecture et d'écriture de fichiers volumineux et petits sur ce répertoire. Par exemple:

# /tmp/jfs 是 JuiceFS 挂载在本地的目录
$ juicefs bench /tmp/jfs
Cleaning kernel cache, may ask for root privilege...
Password:
  Write big blocks count: 1024 / 1024 [==============================================================]  done
   Read big blocks count: 1024 / 1024 [==============================================================]  done
Write small blocks count: 100 / 100 [==============================================================]  done
 Read small blocks count: 100 / 100 [==============================================================]  done
  Stat small files count: 100 / 100 [==============================================================]  done
Benchmark finished!
BlockSize: 1 MiB, BigFileSize: 1024 MiB, SmallFileSize: 128 KiB, SmallFileCount: 100, NumThreads: 1
+------------------+-----------------+--------------+
|       ITEM       |      VALUE      |     COST     |
+------------------+-----------------+--------------+
|   Write big file |   1236.96 MiB/s |  0.83 s/file |
|    Read big file |   2962.88 MiB/s |  0.35 s/file |
| Write small file |  2277.4 files/s | 0.44 ms/file |
|  Read small file |  2753.0 files/s | 0.36 ms/file |
|        Stat file | 16603.3 files/s | 0.06 ms/file |
+------------------+-----------------+--------------+

juicefs benchLa commande peut également être utilisée comme un simple test après le montage pour déterminer rapidement si le service JuiceFS est normal. Pour plus de questions sur les tests de performances de JuiceFS, veuillez consulter ce document de guide d'évaluation des performances

11. Comment tester la compatibilité et les performances du stockage objet

Le stockage d'objets est un composant important de JuiceFS. L'exactitude et les performances du stockage d'objets affectent directement l'exactitude et les performances des services JuiceFS. Par conséquent, lorsque JuiceFS rencontre des problèmes, vous pouvez essayer d'exclure la possibilité de problèmes de stockage d'objets. Pour faciliter les tests, nous avons des commandes intégrées juicefs objbenchqui peuvent tester rapidement l'exactitude et les performances du stockage d'objets. Exemple:

$ juicefs objbench --storage minio  http://127.0.0.1:9000/testbucket --access-key admin --secret-key admin123
Start Functional Testing ...
+----------+---------------------+-------------+
| CATEGORY |         TEST        |    RESULT   |
+----------+---------------------+-------------+
|    basic |     create a bucket |        pass |
|    basic |       put an object |        pass |
|    basic |       get an object |        pass |
|    basic |       get non-exist |        pass |
|    basic |  get partial object |        pass |
|    basic |      head an object |        pass |
|    basic |    delete an object |        pass |
|    basic |    delete non-exist |        pass |
|    basic |        list objects |        pass |
|     sync |    put a big object |        pass |
|     sync | put an empty object |        pass |
|     sync |    multipart upload |        pass |
|     sync |  change owner/group | not support |
|     sync |   change permission | not support |
|     sync |        change mtime | not support |
+----------+---------------------+-------------+

Start Performance Testing ...
put small objects count: 100 / 100 [==============================================================]  done
get small objects count: 100 / 100 [==============================================================]  done
   upload objects count: 256 / 256 [==============================================================]  done
 download objects count: 256 / 256 [==============================================================]  done
     list objects count: 100 / 100 [==============================================================]  done
     head objects count: 100 / 100 [==============================================================]  done
   delete objects count: 100 / 100 [==============================================================]  done
Benchmark finished! block-size: 4096 KiB, big-object-size: 1024 MiB, small-object-size: 128 KiB, small-objects: 100, NumThreads: 4
+--------------------+--------------------+-----------------+
|        ITEM        |        VALUE       |       COST      |
+--------------------+--------------------+-----------------+
|     upload objects |        67.12 MiB/s | 59.59 ms/object |
|   download objects |       106.86 MiB/s | 37.43 ms/object |
|  put small objects |    508.2 objects/s |  1.97 ms/object |
|  get small objects |    728.0 objects/s |  1.37 ms/object |
|       list objects | 46890.01 objects/s |      2.13 ms/op |
|       head objects |   2861.2 objects/s |  0.35 ms/object |
|     delete objects |   2295.1 objects/s |  0.44 ms/object |
| change permissions |        not support |     not support |
| change owner/group |        not support |     not support |
|       update mtime |        not support |     not support |
+--------------------+--------------------+-----------------+

12. La désinstallation du point de montage signale Resource busy -- try 'diskutil unmount'une erreur

Cela signifie qu'un certain fichier ou répertoire sous le point de montage est utilisé. Il ne peut pas être umountvérifié directement (par exemple via lsofla commande ) s'il existe un terminal ouvert situé dans un certain répertoire du point de montage JuiceFS, ou si une application est en cours de traitement. le point de montage fichiers dans le point de chargement. Si tel est le cas, quittez le terminal ou l'application avant de tenter de démonter le système de fichiers à l'aide juicefs umountde la commande .

13. Comment détruire un système de fichiers

Utilisez juicefs destroyla commande pour détruire un système de fichiers, cette commande effacera les données pertinentes dans le moteur de métadonnées et le stockage d'objets. Pour plus de détails sur l'utilisation de cette commande, reportez-vous à la documentation .

14. Où se trouve le journal JuiceFS

Le journal sera écrit dans le fichier journal lorsque JuiceFS est monté en arrière-plan, et le journal sera imprimé directement sur le terminal lorsqu'il est monté au premier plan ou d'autres commandes de premier plan

Le fichier journal par défaut sur les systèmes Mac est/Users/$User/.juicefs/juicefs.log

Le fichier journal par défaut sur un système Linux est/var/log/juicefs.log

15. Pourquoi ne puis-je pas voir le fichier d'origine stocké dans JuiceFS dans le stockage d'objets

En utilisant JuiceFS, les fichiers seront éventuellement divisés en morceaux, tranches et blocs et stockés dans le stockage d'objets. Par conséquent, vous constaterez que les fichiers source stockés dans JuiceFS sont introuvables dans le navigateur de fichiers de la plate-forme de stockage d'objets.Il n'y a qu'un répertoire de morceaux et un tas de répertoires et de fichiers numérotés numériquement dans le compartiment de stockage. Pas de panique, c'est le secret des hautes performances du système de fichiers JuiceFS ! Voyez comment JuiceFS stocke les fichiers pour plus de détails .

16. Quel est le principe de base de l'écriture aléatoire JuiceFS

JuiceFS ne stocke pas le fichier d'origine dans le stockage d'objets, mais le divise en N blocs de données (blocs) selon une certaine taille (4 Mo par défaut), les télécharge sur le stockage d'objets, puis stocke l'ID du bloc de données dans le moteur de métadonnées. Lors d'une écriture aléatoire, la logique est d'écraser le contenu d'origine. En fait, les métadonnées du bloc de données à écraser sont marquées comme anciennes données. Dans le même temps, seul le nouveau bloc de données généré lors de l'écriture aléatoire est chargé dans l'objet stockage, et les nouvelles données Les métadonnées correspondant au bloc sont mises à jour dans le moteur de métadonnées.

Lors de la lecture des données de la partie écrasée, selon les dernières métadonnées , elles peuvent être lues à partir du nouveau bloc de données téléchargé lors de l'écriture aléatoire , et l'ancien bloc de données peut être automatiquement nettoyé par la tâche de récupération de place exécutée en arrière-plan. Cela transfère la complexité des écritures aléatoires à la complexité des lectures.

Ceci n'est qu'une introduction approximative à la logique d'implémentation. Le processus spécifique de lecture et d'écriture est très compliqué. Vous pouvez étudier les deux documents de l'implémentation interne de JuiceFS et du processus de lecture et d'écriture et les combiner avec le code.

17. Pourquoi supprimer des fichiers au point de montage, mais l'empreinte de stockage d'objets ne change pas ou très peu

La première raison est que vous avez peut-être activé la fonction Corbeille. Pour garantir la sécurité des données, la corbeille est activée par défaut. Les fichiers supprimés sont en fait placés dans la corbeille, mais pas réellement supprimés. Par conséquent, la taille de l'espace de stockage d'objets ne changera pas. Le temps de rétention de la corbeille peut être juicefs formatspécifié ou juicefs configmodifié par . Veuillez consulter la documentation de la corbeille pour plus d'informations.

La deuxième raison est que JuiceFS supprime les données dans le stockage d'objets de manière asynchrone, de sorte que le changement d'espace du stockage d'objets sera plus lent. Si vous avez besoin de nettoyer immédiatement les données qui doivent être supprimées dans le stockage d'objets, vous pouvez essayer d'exécuter la commande juicefs gc .

18. Pourquoi y a-t-il une différence entre la taille affichée par le point de montage et l'espace occupé par le stockage d'objets

De la réponse à la question "Quel est le principe d'implémentation de JuiceFS prenant en charge l'écriture aléatoire ?", on peut en déduire que l'espace occupé par le stockage d'objets est supérieur ou égal à la taille réelle dans la plupart des cas, en particulier lorsqu'un grand nombre d'écrasements sont effectuées dans un court laps de temps pour générer de nombreux fichiers. Après des fragments. Ces fragments occupent encore l'espace de stockage de l'objet avant que la fusion et le recyclage ne soient déclenchés. Cependant, il n'est pas nécessaire de s'inquiéter du fait que ces fragments occupent de l'espace tout le temps, car chaque fois qu'un fichier est lu/écrit, il vérifiera et déclenchera le travail de défragmentation lié au fichier si nécessaire. De plus, vous pouvez déclencher manuellement la fusion et le recyclage via juicefs gc —-compact -—deletela commande .

De plus, si la fonction de compression est activée dans le système de fichiers JuiceFS (elle n'est pas activée par défaut), les objets stockés sur le stockage d'objets peuvent être plus petits que la taille réelle du fichier (selon le taux de compression des différents types de fichiers) .

Si les facteurs ci-dessus ont été exclus, veuillez vérifier le type de stockage du stockage d'objets que vous utilisez Le fournisseur de services cloud peut définir l'unité de mesure minimale pour certains types de stockage. Par exemple, l'unité de mesure minimale du stockage d'accès basse fréquence Alibaba Cloud OSS est de 64 Ko, et si un seul fichier est inférieur à 64 Ko, il sera également calculé comme 64 Ko.

19. La passerelle JuiceFS S3 prend-elle en charge des fonctions avancées telles que la gestion multi-utilisateurs ?

Les gatewaysous-commandes ne prennent pas en charge des fonctions telles que la gestion multi-utilisateurs et ne fournissent que les fonctions de base de la passerelle S3. Si vous avez besoin d'utiliser ces fonctionnalités avancées, vous pouvez vous référer à notre référentiel , qui utilise JuiceFS comme implémentation du backend de la passerelle MinIO et prend en charge toutes les fonctionnalités de la passerelle MinIO.

20. Quelle est la différence entre JuiceFS et XXX

Veuillez consulter le document Comparaison des technologies pour plus d'informations.

21. JuiceFS prend-il en charge l'utilisation d'un répertoire dans le stockage d'objets comme valeur de —-bucketl'option

Cette fonctionnalité n'est pas prise en charge depuis JuiceFS 1.0.0-rc3.

22. JuiceFS prend-il en charge la lecture des données existantes dans le stockage d'objets ?

Cette fonctionnalité n'est pas prise en charge depuis JuiceFS 1.0.0-rc3.

23. JuiceFS prend-il actuellement en charge la mise en cache distribuée ?

Cette fonctionnalité n'est pas prise en charge depuis JuiceFS 1.0.0-rc3

24. Existe-t-il un SDK disponible pour JuiceFS ?

Depuis la sortie de JuiceFS 1.0.0-rc3, la communauté dispose de deux SDK, l'un est le SDK Java officiellement maintenu par Juicedata et l'interface HDFS est hautement compatible , et l'autre est le SDK Python maintenu par les utilisateurs de la communauté .

Si vous êtes utile, veuillez prêter attention à notre projet  Juicedata/JuiceFS  ! (0ᴗ0✿)

{{o.name}}
{{m.name}}

Je suppose que tu aimes

Origine my.oschina.net/u/5389802/blog/5561502
conseillé
Classement