Istnieją 4 pola (source)
- iwęzeł
- głównym numer urządzenia
- drobne numer urządzenia
- bajtów korekcji
Zakładając, że dysk twardy zostałby podzielony na tysiące bardzo małych części z liczbą dla każdego, to i-węzeł byłby mniej więcej numerem maleńkiej części, od której zaczyna się plik. Tak więc dany i-węzeł jest unikalny dla każdego dysku twardego, ale w celu adresowania przypadków, w których znajduje się wiele dysków na tym samym serwerze, wymagany jest duży i mniejszy numer urządzenia, aby zagwarantować unikalność tripletu {i-węzła, mniejszy numer urządzenia, podrzędny numer urządzenia}. Dokładniejsze informacje na temat i-węzłów na Wikipedia.
To powiedziawszy, nie jestem pewien, że (na przykład) pliki montowane przez NFS nie mogą kolidować z plikami lokalnymi, ponieważ i-węzeł pliku zamontowanego przez NFS wydaje się być zdalny. Chociaż nie sądzę, aby autor wtyczek zajmował się takimi przypadkami i pomimo używania samego NFS, nigdy nie napotkaliśmy żadnych problemów. Podejrzewam też, że prawdopodobieństwo kolizji jest bardzo małe.
Teraz z triolą utworzoną przez i-węzeł oraz główny i drugorzędny numer urządzenia mamy sposób kierowania na pojedynczy plik dziennika, który jest odczytywany przez wtyczkę bez błędu (lub przynajmniej to było pierwotne założenie). Ostatni numer, offset bajtowy, śledzi odległość pliku dziennika wejścia, która została już odczytana i wysłana do Logstash.
W niektórych specyficznych architekturach, takich jak Solaris lub Windows pojawiły się błędy z rubinem błędnie wykrywające numer i-węzła, który był równy 0. Może to na przykład prowadzić do problemów takich jak logstash nie wykrywający rotacji pliku.
Dlaczego nie opisać wszystkich 4 pól w odpowiedzi na pytanie, a może z większym autorytetem? –
Po prostu podaję rzadkie informacje, które były już trudne do zdobycia. Moim celem nie było rozpoczynanie artykułu wikipedii. W każdym razie uświadomiłeś mi, że "przesunięcie bajtu" nie było oczywiste dla wszystkich, więc dodałem trochę więcej informacji. – Aldian