Przejdź do głównej zawartości
GIFRÖST / Compare / NFS

Udostępnij pliki porównania bez prawa zapisu.

Agenty źródłowy i docelowy eksportują wybrane katalogi przez NFS. Serwer Compare montuje oba zasoby tylko do odczytu, korzystając ze ścieżek i adresów dobranych przez administratora do danego środowiska.

DostępTylko odczyt w eksporcie i montowaniu.
ProtokółNFS 4.2 transportowany przez TCP.
TopologiaDwa eksporty agentów montowane przez Compare.
WidocznośćWyłączony cache atrybutów i nazw.

Architektura

Każdy agent udostępnia własny katalog. Ścieżki po stronie źródła i celu mogą być całkowicie różne; serwer Compare potrzebuje jedynie dwóch oddzielnych punktów montowania i prawa odczytu.

Architektura NFS z eksportami agentów źródłowego i docelowego montowanymi przez serwer Compare
Serwer 01Agent źródłowy

Eksportuje katalog z plikami źródłowymi i zezwala hostowi Compare na dostęp przez NFS.

Serwer 02Agent docelowy

Eksportuje własny katalog niezależnie od ścieżki i nazwy używanej przez agenta źródłowego.

Klient NFSSerwer Compare

Montuje oba eksporty jako oddzielne katalogi lokalne i odczytuje pliki bez ich modyfikowania.

Wartości zależne od środowiska

Strona agentówEksporty i hosty

Zastąp <HOST_AGENTA_ZRODLOWEGO>, <HOST_AGENTA_DOCELOWEGO>, <KATALOG_EKSPORTU_ZRODLA> i <KATALOG_EKSPORTU_CELU> wartościami właściwymi dla środowiska.

Strona ComparePunkty montowania

Zastąp <PUNKT_MONTOWANIA_ZRODLA> i <PUNKT_MONTOWANIA_CELU> dwoma oddzielnymi katalogami lokalnymi wybranymi przez administratora.

Ścieżki zależą od środowiska

Brak narzuconej struktury Eksporty źródła i celu nie muszą mieć takich samych nazw ani lokalizacji.

Brak stałych adresów Użyj adresów IP lub rozwiązywalnych nazw hostów właściwych dla wdrożenia.

Jedna zasada spójności Każda zdalna ścieżka eksportu musi odpowiadać poleceniu mount i wpisowi fstab.

Konfiguracja serwerów agentów

Instalacja serwera NFS

Ubuntu/Debian:

sudo apt update
sudo apt install -y nfs-kernel-server

Systemy zgodne z RHEL:

sudo dnf install -y nfs-utils

Przygotowanie eksportowanych katalogów

Uruchom odpowiednie polecenie na każdym agencie:

sudo mkdir -p <KATALOG_EKSPORTU_ZRODLA>
sudo mkdir -p <KATALOG_EKSPORTU_CELU>

Ustaw właściciela i prawa dla lokalnego procesu tworzącego i zarządzającego plikami:

sudo chown -R <USER>:<GROUP> <KATALOG_EKSPORTU>
sudo chmod 0770 <KATALOG_EKSPORTU>

Konfiguracja /etc/exports

Na każdym agencie użyj jednego wpisu i zastąp placeholdery wartościami środowiska:

<KATALOG_EKSPORTU_ZRODLA> <HOST_SERWERA_COMPARE>(ro,sync,no_subtree_check)
<KATALOG_EKSPORTU_CELU> <HOST_SERWERA_COMPARE>(ro,sync,no_subtree_check)

Przykład pojedynczego eksportu:

/home/docker/compare_agent/compare-shared devkk.goldenore.com(ro,sync,no_subtree_check)
Opcja eksporturo

Udostępnia katalog tylko do odczytu. Host Compare może otwierać i czytać pliki, ale nie może ich tworzyć, zmieniać, przemianowywać ani usuwać przez NFS.

Opcja eksportusync

Wymaga zakończenia lokalnej obsługi zapisu przez serwer NFS przed potwierdzeniem żądania. Przy kliencie tylko do odczytu utrzymuje również bezpieczne, jawne zachowanie eksportu na wypadek późniejszego rozszerzenia reguł dostępu.

Opcja eksportuno_subtree_check

Wyłącza sprawdzanie poddrzewa dla plików wewnątrz eksportowanego katalogu. Ogranicza problemy ze stale file handle i walidacją ścieżek podczas przenoszenia lub zmiany nazw plików.

Zastosuj eksporty i uruchom usługę:

sudo exportfs -rav
sudo exportfs -v
sudo systemctl enable --now nfs-kernel-server

W systemach zgodnych z RHEL uruchom zamiast tego usługę nfs-server.

Konfiguracja serwera Compare

Instalacja klienta NFS

Ubuntu/Debian:

sudo apt update
sudo apt install -y nfs-common

Systemy zgodne z RHEL:

sudo dnf install -y nfs-utils

Przygotowanie i montowanie katalogów

sudo mkdir -p <PUNKT_MONTOWANIA_ZRODLA>
sudo mkdir -p <PUNKT_MONTOWANIA_CELU>

Przed zmianą konfiguracji odmontuj poprzednie zasoby:

sudo umount <PUNKT_MONTOWANIA_ZRODLA>
sudo umount <PUNKT_MONTOWANIA_CELU>

Zamontuj eksporty źródła i celu:

sudo mount -t nfs4 -o ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none \
<HOST_AGENTA_ZRODLOWEGO>:<KATALOG_EKSPORTU_ZRODLA> \
<PUNKT_MONTOWANIA_ZRODLA>

sudo mount -t nfs4 -o ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none \
<HOST_AGENTA_DOCELOWEGO>:<KATALOG_EKSPORTU_CELU> \
<PUNKT_MONTOWANIA_CELU>

Parametry montowania

Zestaw opcji preferuje spójność odczytu i natychmiastową widoczność plików. Ceną jest możliwość oczekiwania podczas awarii serwera oraz większy ruch metadanych po wyłączeniu cache.

Typ systemu plików-t nfs4

Poleca programowi mount użycie klienta NFS w wersji 4. Wybiera mechanizm montowania NFSv4, zanim zostaną przetworzone pozostałe opcje połączenia.

Dostęp tylko do odczyturo

Montuje zdalny katalog bez prawa tworzenia, modyfikowania, zmiany nazw i usuwania plików. Compare otrzymuje wyłącznie dostęp potrzebny do odczytu plików porównania.

Spójność operacji I/Ohard

Ponawia przerwaną operację NFS aż do odpowiedzi serwera. Zapobiega przekazaniu Compare niepełnego odczytu, ale proces może oczekiwać, gdy serwer NFS lub sieć są niedostępne.

Wersja protokołuvers=4.2

Wymusza NFS 4.2 zamiast automatycznego negocjowania wersji. Zapewnia przewidywalną konfigurację protokołu i wymaga obsługi tej wersji przez klienta oraz serwer.

Protokół transportowyproto=tcp

Przesyła żądania NFS przez TCP. TCP zapewnia uporządkowane i niezawodne dostarczanie danych, odpowiednie dla odczytu plików porównania przez sieć.

Timeout żądaniatimeo=60

Ustawia początkowy timeout żądania NFS po TCP na 6 sekund. Wartość podawana jest w dziesiątych częściach sekundy. Określa moment rozpoczęcia ponawiania, a nie całkowity czas do przerwania operacji.

Próg retransmisjiretrans=2

Po dwóch retransmisjach klient raportuje, że serwer NFS nie odpowiada. Ponieważ używany jest hard mount, operacja nadal oczekuje i jest ponawiana zamiast zwrócić Compare niepełny wynik.

Cache atrybutówactimeo=0

Ustawia czasy cache atrybutów plików i katalogów na zero. Rozmiar, czas modyfikacji, prawa i inne metadane są widoczne natychmiast, kosztem większej liczby zapytań do serwera NFS.

Cache wyszukiwania nazwlookupcache=none

Wyłącza pozytywny i negatywny cache wpisów katalogowych. Nowe, usunięte i przemianowane pliki są za każdym razem wyszukiwane na serwerze NFS, co poprawia widoczność kosztem dodatkowego ruchu.

Trwałe montowanie

Dodaj oba zasoby do /etc/fstab, aby mogły zostać zamontowane po restarcie:

<HOST_AGENTA_ZRODLOWEGO>:<KATALOG_EKSPORTU_ZRODLA> <PUNKT_MONTOWANIA_ZRODLA> nfs4 ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none,_netdev,nofail,x-systemd.automount 0 0
<HOST_AGENTA_DOCELOWEGO>:<KATALOG_EKSPORTU_CELU> <PUNKT_MONTOWANIA_CELU> nfs4 ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none,_netdev,nofail,x-systemd.automount 0 0
Opcja fstab_netdev

Oznacza montowanie jako zależne od sieci, dzięki czemu system nie traktuje go jak lokalnego systemu plików podczas uruchamiania i wyłączania.

Opcja fstabnofail

Pozwala kontynuować uruchamianie systemu, gdy agent albo jego eksport NFS jest tymczasowo niedostępny.

Opcja fstabx-systemd.automount

Tworzy jednostkę automount systemd i montuje NFS przy pierwszym dostępie do ścieżki, ograniczając problemy z kolejnością startu usług.

Sprawdź wpisy bez restartowania serwera:

sudo mount -a

Weryfikacja

Krok 01Potwierdź typ montowania i opcje

Sprawdź, czy obie ścieżki są montowaniami NFS oraz czy efektywna konfiguracja zawiera tryb tylko do odczytu.

findmnt <PUNKT_MONTOWANIA_ZRODLA>
findmnt <PUNKT_MONTOWANIA_CELU>
nfsstat -m
Krok 02Potwierdź widoczność i odczyt plików

Uruchom sprawdzenie jako ten sam użytkownik systemowy, który uruchamia Compare.

ls -la <PUNKT_MONTOWANIA_ZRODLA>
ls -la <PUNKT_MONTOWANIA_CELU>
head -n 1 <PUNKT_MONTOWANIA_ZRODLA>/<ISTNIEJACY_PLIK_ZRODLOWY>
head -n 1 <PUNKT_MONTOWANIA_CELU>/<ISTNIEJACY_PLIK_DOCELOWY>