2 votes

Comment faire en sorte que NFS prenne en charge posix_fallocate ?

Mon moteur de recherche en texte intégral stocke les données indexées sur le serveur NFS. En raison de la fréquence des lectures/écritures, je souhaite préallouer un espace disque continu important pour chaque fichier de table et j'ai donc recours à posix_fallocate. Sur un volume NFS, ma petite démonstration a échoué avec "EOPNOTSUPP" en réponse à posix_fallocate. Est-ce que le protocole/spécification NFS inclut le scénario posix_fallocate ?

0voto

Anon Points 13

NFS 4.2 (et probablement les versions ultérieures) de NFS puede supporte fallocate sous Linux ( http://wiki.linux-nfs.org/wiki/index.php/Fallocate ) mais :

  1. Votre client et votre serveur doivent utiliser NFS 4.2 ou une version ultérieure.
  2. Un serveur NFS 4.2+ ne DOIT pas implémenter fallocate - c'est optionnel ( https://sourceware.org/ml/libc-alpha/2015-05/msg00062.html ).

Vous ne pouvez jamais savoir si un logiciel glibc posix_fallocate sera réel ou émulé sans vérifier manuellement à l'avance si un appel natif de la plate-forme sera réel ou émulé. fallocate a échoué ou n'était pas supporté (et si vous avez fait l'appel natif, pourquoi avez-vous eu besoin de la variante posix ?) De plus, les différentes plates-formes ont un appel syscall différent (ou complètement absent) pour l'appel natif de fallocate donc si la portabilité sur des plates-formes non-Linux est une préoccupation, vous devrez écrire le code natif approprié. fallocate pour chaque plateforme. Si vous devez faire de la pré-allocation même si ce qui est en dessous de vous n'a pas d'appel supporté pour cela, vous devrez revenir à le faire à la main (par exemple, via de belles écritures ou des hacks comme la fonction posix_fallocate ...).

Note : Lorsqu'il est possible de procéder à une véritable pré-affectation (par exemple, par le biais de fallocate ), il peut être DRAMATIQUEMENT plus rapide que les écritures complètes, car le système de fichiers peut s'en charger en définissant simplement les métadonnées appropriées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X