web-dev-qa-db-fra.com

qu'est-ce que la conformité posix pour le système de fichiers?

La conformité Posix est une norme suivie par de nombreuses entreprises. J'ai quelques questions dans ce domaine, 1. tous les systèmes de fichiers doivent-ils être conformes au posix? 2. Les applications doivent-elles également être conformes à Posix? 3. existe-t-il des systèmes de fichiers non posix?

27
OpenFile

Dans le domaine "nécessite la sémantique du système de fichiers POSIX", ce qui est généralement signifié est:

  • autorise les noms de fichiers hiérarchiques et leur résolution (., .., ...)
  • prend en charge au moins la sémantique proche de l'ouverture
  • autorisations umask/unix, 3 filetimes
  • Prise en charge des octets 8 bits
  • prend en charge les renommages atomiques sur le même système de fichiers
  • fsync ()/dirfsync () garantie de durabilité/limitation
  • prend en charge la protection multi-utilisateurs (le redimensionnement du fichier renvoie 0 octet pas indésirable)
  • renommer et supprimer des fichiers ouverts (Windows ne le fait pas)
  • noms de fichiers prenant en charge tous les octets à côté de '/' et\0

Parfois, cela signifie également la prise en charge des liens symboliques/hardlink ainsi que des noms de fichiers et des pointeurs de fichiers 32 bits (minimum). Dans certains cas, il est également utilisé pour référencer des fonctionnalités API spécifiques telles que fcntl() verrouillage, mmap() ou truncate() ou AIO.

24
eckes

Lorsque je pense à la conformité POSIX pour les systèmes de fichiers distribués, j'utilise la norme générale selon laquelle un système de fichiers distribué est conforme POSIX si plusieurs processus s'exécutant sur différents nœuds voient le même comportement que s'ils s'exécutaient sur le même nœud à l'aide d'un système de fichiers local. Cela a essentiellement deux implications:

  1. Si le système possède plusieurs caches-tampons, il doit garantir la cohérence du cache.
    • Divers mécanismes pour ce faire comprennent des serrures et des baux. Un exemple de comportement incorrect dans ce cas serait un écrivain qui écrit avec succès sur un nœud mais un lecteur sur un nœud différent reçoit d'anciennes données.
    • Notez cependant que si l’écrivain/lecteur se fait la course de façon indépendante, il n’y a pas de correct comportement défini car ils ne savent pas quelle opération se produira en premier. Mais s'ils se coordonnent entre eux via un mécanisme tel que la messagerie, alors ce serait incorrect si le rédacteur se termine (surtout s'il émet un synchroniser appel), envoie au lecteur un message qui est correctement reçu par le lecteur, et puis le lecteur lit et obtient des données périmées.
  2. Si les données sont réparties sur plusieurs serveurs de données, les lectures et écritures qui s'étendent sur plusieurs bandes doivent être atomiques.
    • Par exemple, lorsqu'un lecteur lit sur plusieurs bandes en même temps qu'un auteur écrit sur ces mêmes bandes, le lecteur doit alors recevoir toutes les bandes telles qu'elles étaient avant l'écriture ou toutes les bandes telles qu'elles étaient après l'écriture. Un comportement incorrect consisterait pour le lecteur à recevoir des anciens et des nouveaux.
    • Contrairement à ce qui précède, ce comportement doit fonctionner correctement même lorsque l'écrivain/lecteur est en course.

Bien que mes exemples aient été lus/écrits dans un seul fichier, le comportement correct inclut également l'écriture/écriture dans un seul fichier ainsi que la lecture/écriture et l'écriture/écriture dans l'espace de noms hiérarchique via des appels tels que stat/readdir/mkdir/unlink/etc .

7
John Bent

Répondre à vos questions de manière très objective:

1. Tous les systèmes de fichiers doivent-ils être compatibles posix? En fait non. En fait, POSIX définit certaines normes pour les systèmes d'exploitation en général. Bon d'avoir, mais pas vraiment nécessaire.

2. Les applications doivent-elles également être conformes au posix? Non.

. y a-t-il des systèmes de fichiers non posix? HDFS (système de fichiers hadoop)

4