Woher kommt die Inode-Nummer einer über NFS gemounteten Datei?

1919
Aldian

Ich habe eine Frage zu Codereview gestellt, um zu erfahren, ob ich den folgenden Code sicher ersetzen kann:

:inode => [stat.ino, stat.dev_major, stat.dev_minor], 

NotImplementedError warf, weil jruby die stat- Implementierung für dev_major / dev_minor unter Solaris nicht abruft

:inode => [stat.ino, nil, nil], 

Und aus ihrer Erklärung habe ich verstanden, dass wenn ich auf einer einzelnen Festplatte arbeite, dies in Ordnung ist, aber wenn meine Dateien auf mehreren Festplatten verteilt sind, besteht ein (geringes) Risiko einer Kollision, wobei zwei Inodes dieselbe Nummer haben.

In meinem Fall werden jedoch alle Protokolldateien von allen Servern über NFS im gleichen Verzeichnis eingehängt. Daher habe ich mich gefragt, ob beim Zugriff auf die Dateien die von Ruby abgerufenen Inode-Nummern die tatsächlichen Inode-Nummern der Remote-Dateien sind. lokale "Inode-Nummer der NFS-Verbindung. In diesem Fall wäre ich sicher zu betreiben.

Übrigens, ich bin mit diesen Begriffen nicht sehr vertraut und Englisch ist nicht meine Muttersprache. Daher entschuldige ich mich, wenn ich unklar bin.

Danke für Ihre Hilfe

1
Du könntest es immer testen. Schreiben Sie einige Dateien über NFS und vergleichen Sie dann die Ausgabe von "ls -li" von Ihrem NFS-Mount und lokal auf dem NFS-Server. Nathan C vor 10 Jahren 0
Leider kann ich nicht Mir fehlen Privilegien und Passwörter. Aber ich kann versuchen, die Sysadmins zu fragen .. Aldian vor 10 Jahren 0
Aber je mehr ich darüber nachdenke, desto mehr bezweifle ich es: Wenn NFS denselben Inode wie auf dem Remote-Server erzwingt, besteht Kollisionsgefahr mit vorhandenen Dateien des lokalen Hosts. Außerdem sagen sie, dass NFS benutzerdefinierte FileHandles verwendet, die sorgfältig entwickelt wurden, um Unicity zu gewährleisten und Kollisionsrisiken und Sicherheit zu vermeiden. Ich denke, lokale Inodes sollten die Inodes dieser Handles sein, es wäre sinnvoller. Aldian vor 10 Jahren 0

1 Antwort auf die Frage

1
Scott Leadley

Die Inode-Nummern stammen von den NFS-Servern (den Systemen, die die Protokolldateien enthalten). Das System, auf dem Ihre Ruby-Anwendung ausgeführt wird, ist ein NFS-Client. Ja, es besteht die Möglichkeit von Inode-Nummernkollisionen.

Wie ich in einer Antwort, die von _ @ Dave M_ gelöscht wurde, feststellte, habe ich dies selbst überprüft, indem ich 'ls -li' sowohl auf dem NFS-Client als auch auf dem Server ausgeführt habe, und habe festgestellt, dass es dasselbe ist Aldian vor 10 Jahren 0